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


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

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

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


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

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



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


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望: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
加上上面代码,没有用,还是打印全部,如处理?

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


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望: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

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

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


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/11/2 10:48:00 [显示全部帖子]

去掉报错pr未声明

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


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/11/2 11:14:00 [显示全部帖子]

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

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


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/11/2 11:38:00 [显示全部帖子]

   rx.BreakAfter = prt.BreakEnum.Page '否则换页                 
                    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 


    End If
End With

doc.Preview

空前页,放在哪里合适?谢谢

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


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/11/2 13:26: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("销售明细")



   rx.BreakAfter = prt.BreakEnum.Page '否则换页                 
                    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

                    
                    doc.Body.Children.Add(rx)

                   
                Next
                
            Next 


    End If
End With
[此贴子已经被作者于2023/11/2 14:15:39编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/11/2 15:22:00 [显示全部帖子]

品名列的内容,靠左,如何实现?

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


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/11/2 16:15:00 [显示全部帖子]

                '设置一副标题   
                rz.Cells(1, 0).Text = "供       方: " & pr("供方")
                rz.Cells(1, 0).SpanCols = 3 '合并第一行全部单元格,用于显示主标题
                rz.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Left '公司名称列,在第2行左边
                rz.Cols(1, 0).Style.Borders.Bottom = New prt.Linedef '设置底边框-黑色,报错提示参数太多
rz.Cols(0).Style.Borders.Bottom = New prt.Linedef '设置底边框-黑色,供方列的内容文字底部没显示画线,
如何实现供方列的内容文字底部显示画线?


可以单独设置某一个方向的边框,例如:

Dim doc As New PrintDoc '定义一个报表
Dim
 rt As New prt.RenderText '定义一个文本对象
rt.Text = 
"Hello Foxtable" '设置文本对象的内容
rt.Width = 
25 '宽度为25毫米
rt.Style.Borders.Bottom = New prt.Linedef 
'设置底边框
doc.Body.Children.Add(rt) 
'将文本对象加入到报表
doc.Preview() 
'预览

执行结果:

图片点击可在新窗口打开查看

[此贴子已经被作者于2023/11/2 16:16:51编辑过]

 回到顶部