Foxtable(狐表)用户栏目专家坐堂 → 专业报表联打无法按选中打印如何处理?


  共有3428人关注过本帖树形打印复制链接

主题:专业报表联打无法按选中打印如何处理?

帅哥哟,离线,有人找我吗?
lin98
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
专业报表联打无法按选中打印如何处理?  发帖心情 Post By:2023/11/1 18:36:00 [只看该作者]

专业报表联打无法按选中打印如何处理?实例打印执行都打印全部,无法实现需求,按选中的数据打印
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:专业报表 - 连接打印问题.zip



 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111420 积分:567176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/2 8:26:00 [只看该作者]

代码本来就是按所有行打印的。如果要按鼠标拖选,参考:http://www.foxtable.com/webhelp/topics/1597.htm

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/11/2 9:15:00 [只看该作者]

'选定区域的
With Tables("销售主表")
    If .TopPosition > -1 Then '如果选定区域包括数据行
        For i As Integer = .TopPosition To .BottomPosition
            .Rows(i).Locked = True
        Next
    End If
End With


For Each pr As Row In tbl.Rows
加上上面代码,没有用,还是打印全部,如处理?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111420 积分:567176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/2 10:08:00 [只看该作者]

不要只会抄,能不能先理解一下帮助的代码?帮助是遍历锁定行的?

With Tables("销售主表")
    If .TopPosition > -1 Then '如果选定区域包括数据行
        For i As Integer = .TopPosition To .BottomPosition
           原来遍历所有行的代码改为放到这里
        Next
    End If
End With

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/11/2 10:39:00 [只看该作者]

Dim doc As New Printdoc
Dim rx As prt.RenderText
Dim rt As prt.RenderTable
Dim Rows As List(Of DataRow)
Dim tbl As Table = Tables("销售主表")
Dim tb As Table = Tables("销售明细")

'选定区域的
With Tables("销售主表")
    If .TopPosition > -1 Then '如果选定区域包括数据行
        For i As Integer = .TopPosition To .BottomPosition
            Dim prs As Integer = 5
            Dim cols() As String = {"产品", "客户", "雇员", "单价", "折扣", "数量"}
            For Each pr As Row In tbl.Rows  
                Rows = tb.DataTable.select("客户='" & pr("公司名称") & "'")
                For p As Integer = 0 To math.Ceiling(Rows.Count / prs) - 1 
                    rx = New prt.RenderText
                    ' '
                    rx.Style.FontSize = 14
                    rx.Style.FontBold = True
                    rx.Style.Spacing.Bottom = 5
                    rx.Text = "公司名称: " & pr("公司名称") & " - " & (p + 1)
                    doc.Body.Children.Add(rx)
  
                    rt = New prt.RenderTable
                    rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center
                    rt.Style.TextAlignVert = prt.AlignVertEnum.Center
                    rt.Style.Borders.Bottom = New prt.LineDef(0.3, Color.LightGray)
                    rt.CellStyle.Spacing.All = 1
                    rt.Cols.Count = 4
                    For j As Integer = 0 To cols.Length - 1 '打印标题
                        rt.Cells(0, j).Text = cols(j)
                    Next
                    rt.Cols(1).Width = 60 '指定
                    rt.rows(0).Style.Borders.Top = New prt.LineDef(1, Color.LightGray)
                    rt.rows(0).Style.Borders.Bottom = New prt.LineDef(1, Color.LightGray)
                    Dim sum As Double = 0
                    For r As Integer = p * prs To math.min(Rows.Count - 1, ( p + 1) * prs - 1)
                        
                        sum += rows(r)("数量") '
                        For j As Integer = 0 To cols.Length - 1
                            rt.Cells(r - p * prs + 1, j).Text = rows(r)(cols(j))
                            
                        Next
                    Next
                    If p = math.Ceiling(Rows.Count / prs) - 1 Then'
                        For r As Integer = Rows.Count To ( p + 1) * prs - 1 '
  
                            rt.Rows.Count = rt.Rows.Count + 1
                            rt.Rows(rt.Rows.count - 1)(0).text = " "
                        Next
                    End If
                    Dim cnt = rt.Rows.Count
                    
                    doc.Body.Children.Add(rt)
                    
                    rx = New prt.RenderText
                    rx.Style.FontBold = True
                    rx.Style.Spacing.Top = 3
                    rx.Text = "销售明细数目: " & Rows.Count
                    rx.Style.TextAlignHorz = prt.AlignHorzEnum.Right
                    rx.BreakAfter = prt.BreakEnum.Page '否则换页
                    doc.Body.Children.Add(rx)
                Next
                
            Next 
        Next
    End If
End With

doc.Preview

我还是没搞定,请帮忙,谢谢

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111420 积分:567176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/2 10:44:00 [只看该作者]

把下面代码去掉
For Each pr As Row In tbl.Rows  

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/11/2 10:48:00 [只看该作者]

去掉报错pr未声明

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111420 积分:567176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/2 10:51:00 [只看该作者]

写代码,建议还是要努力理解代码,不然连自己写的代码都看不懂,更不用说改进了

For i As Integer = .TopPosition To .BottomPosition
dim pr as row = .rows(i)

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/11/2 11:14:00 [只看该作者]

改后,都会多生成一页空页,如何处理?

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111420 积分:567176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/2 11:26:00 [只看该作者]

把换页的代码放到生成数据前面

 回到顶部
总数 18 1 2 下一页