Foxtable(狐表)用户栏目专家坐堂 → 专业报表汇总模式强制换页搞不定


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

主题:专业报表汇总模式强制换页搞不定

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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
专业报表汇总模式强制换页搞不定  发帖心情 Post By:2020/11/30 13:51:00 [只看该作者]

Dim doc As New PrintDoc

Dim rx As New prt.RenderText
rx.Text = "对账明细"
rx.Style.Font = New Font("宋体", 16, FontStyle.Bold)
rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center
rx.Style.Spacing.Bottom = 6
Doc.body.Children.Add(rx)

Dim rt As New Prt.RenderTable
Dim cnt As Integer
Dim tbl As Table = Tables("订单")
Dim drs As List(Of DataRow)
Dim pds As List(Of String) = tbl.DataTable.GetValues("产品",tbl.Filter)

rt.Style.GridLines.All = New prt.LineDef(0.3,Color.LightGray)
rt.CellStyle.Spacing.All = 1
rt.Style.Font = tbl.Font
For c As Integer = 0 To tbl.Cols.Count - 1 '生成列标题
    rt.Cells(0,c).Text = tbl.Cols(c).Name
    rt.Cols(c).Width = tbl.Cols(c).PrintWidth
Next
Dim ii As Integer = 2 '第一页产品数
tbl.Filter = "[日期] >= #1/1/1999# And [日期] <= #2/28/1999#"
For Each pd As String In pds '分产品打印
    If pd =pds(ii) Then
        MessageBox.show(pd)
        '  rt.BreakAfter = prt.BreakEnum.Page '换页
        Exit For
    End If
    If tbl.Filter > "" Then
        drs = tbl.DataTable.Select("产品 = '" & pd & "' And " & tbl.Filter)
    Else
        drs = tbl.DataTable.Select("产品 = '" & pd & "'" )
    End If
    For Each dr As DataRow In drs '逐行打印此产品的订单
        cnt = rt.Rows.Count
        For c As Integer = 0 To tbl.Cols.Count - 1
            rt.Cells(cnt, c).Text = dr(tbl.Cols(c).Name)
        Next
    Next
    cnt = rt.Rows.Count
    rt.Cells(cnt, 0).Text = "小计 " & pd '打印产品的小计
    rt.Cells(cnt,5).Text = tbl.compute("Sum(数量)", "产品 = '" & pd & "'")
Next
cnt = rt.Rows.Count
rt.Cells(cnt, 0).Text = "合计 " '打印合计
rt.Cells(cnt, 5).Text = tbl.compute("Sum(数量)")
doc.Body.Children.Add(rt)
doc.preview()
-----------------
  If pd =pds(ii) Then
        MessageBox.show(pd)
        '  rt.BreakAfter = prt.BreakEnum.Page '换页
        Exit For
    End If
这样断开第一面,第二页不知道怎么才能接上。

图片点击可在新窗口打开查看此主题相关图片如下:00.png
图片点击可在新窗口打开查看



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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2020/11/30 13:54:00 [只看该作者]

余下的产品PD03,PD04,PD05 需要手动安排在第二页打印,以避免同一产品跨页断开

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


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

Dim doc As New PrintDoc

Dim rx As New prt.RenderText
rx.Text = "对账明细"
rx.Style.Font = New Font("宋体", 16, FontStyle.Bold)
rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center
rx.Style.Spacing.Bottom = 6
Doc.body.Children.Add(rx)

Dim rt As New Prt.RenderTable
Dim cnt As Integer
Dim tbl As Table = Tables("订单")
Dim drs As List(Of DataRow)
Dim pds As List(Of String) = tbl.DataTable.GetValues("产品",tbl.Filter)

rt.Style.GridLines.All = New prt.LineDef(0.3,Color.LightGray)
rt.CellStyle.Spacing.All = 1
rt.Style.Font = tbl.Font
For c As Integer = 0 To tbl.Cols.Count - 1 '生成列标题
    rt.Cells(0,c).Text = tbl.Cols(c).Name
    rt.Cols(c).Width = tbl.Cols(c).PrintWidth
Next
Dim ii As Integer = 2 '第一页产品数
tbl.Filter = "[日期] >= #1/1/1999# And [日期] <= #2/28/1999#"
For Each pd As String In pds '分产品打印
    If pd =pds(ii) Then
        rt.BreakAfter = prt.BreakEnum.Page '换页
        doc.Body.Children.Add(rt)
        rt = New Prt.RenderTable
        rt.Style.GridLines.All = New prt.LineDef(0.3,Color.LightGray)
        rt.CellStyle.Spacing.All = 1
        rt.Style.Font = tbl.Font
        For c As Integer = 0 To tbl.Cols.Count - 1 '生成列标题
            rt.Cells(0,c).Text = tbl.Cols(c).Name
            rt.Cols(c).Width = tbl.Cols(c).PrintWidth
        Next
        cnt = 0
        'MessageBox.show(pd)       ' Exit For
    End If
    If tbl.Filter > "" Then
        drs = tbl.DataTable.Select("产品 = '" & pd & "' And " & tbl.Filter)
    Else
        drs = tbl.DataTable.Select("产品 = '" & pd & "'" )
    End If
    For Each dr As DataRow In drs '逐行打印此产品的订单
        cnt = rt.Rows.Count
        For c As Integer = 0 To tbl.Cols.Count - 1
            rt.Cells(cnt, c).Text = dr(tbl.Cols(c).Name)
        Next
    Next
    cnt = rt.Rows.Count
    rt.Cells(cnt, 0).Text = "小计 " & pd '打印产品的小计
    rt.Cells(cnt,5).Text = tbl.compute("Sum(数量)", "产品 = '" & pd & "'")
Next
cnt = rt.Rows.Count
rt.Cells(cnt, 0).Text = "合计 " '打印合计
rt.Cells(cnt, 5).Text = tbl.compute("Sum(数量)")
doc.Body.Children.Add(rt)
doc.preview()

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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2020/11/30 14:37:00 [只看该作者]

蓝版手到擒来,谢了。

 回到顶部