Foxtable(狐表)用户栏目专家坐堂 → 专业报表如何实现关联表连续打印?


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

主题:专业报表如何实现关联表连续打印?

帅哥,在线噢!
lin98
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1097 积分:7245 威望:0 精华:0 注册:2020/11/4 22:15:00
专业报表如何实现关联表连续打印?  发帖心情 Post By:2023/7/1 11:13:00 [只看该作者]

专业报表打印只一个关联表一个打印,没办法连接打印,专业报表如何实现关联表连续打印?如图

图片点击可在新窗口打开查看此主题相关图片如下:专业报表打印问题.jpg
图片点击可在新窗口打开查看


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


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

默认就是连续打印的。意思是一个类别打一张纸?

 回到顶部
帅哥,在线噢!
lin98
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1097 积分:7245 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/7/1 11:52:00 [只看该作者]

默认就是连续打印的,是对单表,对关联表或模拟关联不是,
是一张纸打印多个,类别是主表,列表是明细表的内容

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


加好友 发短信
等级:五尾狐 帖子:1097 积分:7245 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/7/1 12:48:00 [只看该作者]

上例实例,请老师帮处理,谢谢


[此贴子已经被作者于2023/7/1 13:59:48编辑过]

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


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


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


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

Dim doc As New PrintDoc '
Dim rt As prt.RenderTable'

Dim tb As Table = Tables("销售明细")
Dim tbl As Table = Tables("销售主表")

'
Dim Rows As List(Of DataRow)'
For i As Integer = tbl.TopRow To tbl.BottomRow '
doc.PageSetting.Width = 241 '
doc.PageSetting.Height = 113 '
doc.AutoRotate = False '
doc.PageSetting.TopMargin = 5
doc.PageSetting.BottomMargin = 5
doc.PageSetting.LeftMargin = 5
doc.PageSetting.RightMargin = 5
rt = New prt.RenderTable '
rt.BreakBefore = prt.BreakEnum.Page '
rt.Style.GridLines.All = New prt.Linedef '
rt.CellStyle.Spacing.All = 2 '
rt.Cells(0, 0).text = "销售出库单" '
rt.Cells(0, 0).SpanCols = 6 '
rt.Cells(0, 0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '
rt.Cells(0, 0).Style.Font = New Font("宋体", 12, FontStyle.Bold) '
rt.Cells(2, 0).text = "客户名称:" & tbl.Current("公司名称") '
rt.Cells(2, 0).Spancols = 2 '
rt.Rows(0).Style.Borders.All = New prt.LineDef("0mm", Color.white) '
rt.Rows(2).Style.Borders.All = New prt.LineDef("0mm", Color.white)'
rt.Rows(2).Style.Borders.Bottom = New prt.Linedef '
rt.Rows(2).Height = 8 '
rt.RowGroups(0, 1).Style.TextAlignVert = prt.AlignVertEnum.Center '
rt.RowGroups(0, 4).Header = prt.TableHeaderEnum.All '
rt.RowGroups(5, 1).DataBinding.DataSource = BindTables("销售明细") '
Dim ColNames As String() = New String(){"产品", "雇员", "单价" , "折扣", "数量" , "金额" }
For c As Integer = 0 To Colnames.Length - 1
    rt.Cells(4, c).Text = ColNames(c)
    rt.Cols(c).Width = tb.Cols(ColNames(c)).PrintWidth
    rt.Cells(5, c).Text = "[Fields!" & ColNames(c) & ".Value]" '

Next

doc.Body.Children.Add(rt)
Next

Doc.Preview

图片点击可在新窗口打开查看此主题相关图片如下:连续打印问题jpg.jpg
图片点击可在新窗口打开查看

上面代码执行后,只是连续打印主表的第一行的数据,没有按选中的数据进行打印,如何按选中的连续打印?

 回到顶部
帅哥,在线噢!
lin98
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

补一下,销售主表和销售明细是模拟关联,
不下面

1、在产品表和订单表之间建立关联,关联名为"po",注意关联表生成模式要选择为“无”:

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

[此贴子已经被作者于2023/7/1 15:01:29编辑过]

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


加好友 发短信
等级:超级版主 帖子:107169 积分:545094 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/7/1 16:15:00 [只看该作者]

按照帮助的用法,改为逐行赋值,不能使用绑定。

不做关联的话,改改获取子表的代码即可,比如
Rows = Tables("类别").Rows(i).DataRow.GetChildRows("产品")
改为
Rows = DataTables("产品").select("类别ID='" & Tables("类别").Rows(i)("类别ID") & "'")

简单的处理逻辑就是
For i as Integer = tbl.TopRow To tbl.BottomRow
处理主表表头和子表标题
  Rows = DataTables("销售明细").select("客户='" & Tables("销售主表").Rows(i)("公司名称") & "'")
    For r As integer = 0 To Rows.Count - 1
处理子表明细
……

 回到顶部
帅哥,在线噢!
lin98
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1097 积分:7245 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/7/1 17:02:00 [只看该作者]

老师,我没改好,出乱,请帮处理,谢谢


[此贴子已经被作者于2023/7/1 17:26:35编辑过]

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


加好友 发短信
等级:超级版主 帖子:107169 积分:545094 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/7/1 17:12: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("销售主表")

For i As Integer = tbl.TopRow To tbl.BottomRow
    rx = New prt.RenderText
'    rx.BreakBefore = prt.BreakEnum.Page '另起一页再打印
    rx.Style.FontSize = 14
    rx.Style.FontBold = True
    rx.Style.Spacing.Bottom = 5
    rx.Text = "公司名称: " & Tables("销售主表").Rows(i)("公司名称")
    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
    rt.Cells(0, 0).Text = "产品"
    rt.Cells(0, 1).Text = "客户"
    rt.Cells(0, 2).Text = "雇员"
    rt.Cells(0, 3).Text = "单价"
    rt.Cells(0, 4).Text = "折扣"
    rt.Cells(0, 5).Text = "数量"
    rt.rows(0).Style.Borders.Top = New prt.LineDef(1, Color.LightGray)
    rt.rows(0).Style.Borders.Bottom = New prt.LineDef(1, Color.LightGray)

    Rows = DataTables("销售明细").select("客户='" & Tables("销售主表").Rows(i)("公司名称") & "'")
    For r As Integer = 0 To Rows.Count - 1
        rt.Cells(r + 1, 0).Text = rows(r)("产品")
        rt.Cells(r + 1, 1).Text = rows(r)("客户")
        rt.Cells(r + 1, 2).Text = rows(r)("雇员")
        rt.Cells(r + 1, 3).Text = rows(r)("单价")
        rt.Cells(r + 1, 4).Text = rows(r)("折扣")
        rt.Cells(r + 1, 4).Text = rows(r)("数量")
    Next

    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
doc.Preview

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