以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- [求助]专业报表代码 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=140082) |
-- 作者:hanzhang98 -- 发布时间:2019/8/29 9:23:00 -- [求助]专业报表代码 老师好。如下帮助示例的汇总模式代码中,想增加 “控制每页打印10行”的代码,试了好多次也不行。请老师帮助指导。谢谢。 Dim doc As New PrintDoc \'定义一个报表 Dim prs As Integer = 10 \'每页10行 Dim rx As prt.RenderText \'定义一个文本对象 Dim cnt As Integer Dim tbl As Table = Tables("订单") \'绑定数据表 Dim drs As List(Of DataRow) \'定义一个行集合 Dim cp As List(Of String) = tbl.DataTable.GetValues("产品",tbl.Filter) \'以集合形式,从指定列中获取并返回不重复的值 Dim kh As List(Of String) = tbl.DataTable.GetValues("客户",tbl.Filter) \'以集合形式,从指定列中获取并返回不重复的值 For p As Integer = 0 To math.Ceiling(tb.Rows.Count / prs) - 1 Dim rt As New prt.RenderTable \'定义一个表格 rt.Width = "Auto" \'表格宽度为自动,也就是等于各列设置宽度之和 rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded \'表格宽度超出页宽时,可以水平换页 rt.Style.GridLines.All = New prt.LineDef(0.3,Color.LightGray) \'线宽0.3mm,深灰色网格线 rt.CellStyle.Spacing.All = 1 \'单元格内距设为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 cp = tbl.DataTable.GetValues("产品",tbl.Filter) \'返回产品不重复的值 For Each pd As String In cp \'分产品打印 msgbox(cp) kh = tbl.DataTable.GetValues("客户",tbl.Filter & " 产品=\'" & pd & "\'") For Each pdd As String In kh \'分客户打印 Dim Filter = "" If tbl.Filter > "" Then Filter = "产品=\'" & pd & "\' and 客户 = \'" & pdd & "\' And " & tbl.Filter Else Filter = "产品=\'" & pd & "\' and 客户 = \'" & pdd & "\'" End If drs = tbl.DataTable.Select(Filter ) cnt = rt.Rows.Count rt.Cells(cnt, 0).Text = pdd \'打印客户的小计 rt.Cells(cnt,5).Text = tbl.Compute("Sum(数量)", "产品=\'" & pd & "\' and 客户 = \'" & pdd & "\'") Next cnt = rt.Rows.Count rt.Cells(cnt, 0).Text = pd & "合计 " \'打印产品的小计 rt.Cells(cnt,5).Text = tbl.Compute("Sum(数量)", "产品 = \'" & pd & "\'" & IIF(tbl.Filter > ""," and ","") & tbl.Filter) Next cnt = rt.Rows.Count rt.Cells(cnt, 0).Text = "总计 " \'打印总计 rt.Cells(cnt, 5).Text = tbl.compute("Sum(数量)") Next doc.Body.Children.Add(rt) \'将表格加入到报表 doc.preview() \'预览报表 [此贴子已经被作者于2019/9/9 16:37:28编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/8/29 10:34:00 -- 这10行是否包括小计和合计行? |
-- 作者:hanzhang98 -- 发布时间:2019/8/29 10:44:00 -- 谢谢老师。每页要打印的10行包括 “客户小计” 和 “产品合计” ,“总计” 在最后一页。 |
-- 作者:hanzhang98 -- 发布时间:2019/8/29 15:07:00 -- 谢谢老师。每页要打印的10行包括 “客户小计” 和 “产品合计” ,“总计” 在最后一页。 |
-- 作者:有点蓝 -- 发布时间:2019/8/29 15:20:00 -- 这种比较麻烦,小计合计不固定,不能使用帮助的用法,暂时没有找到办法处理。 |
-- 作者:hanzhang98 -- 发布时间:2019/8/29 15:50:00 -- 谢谢老师。 1、用以下代码可以设置表格边框,并且还可以设置 “线形,比如:Dash __由线段构成的直线; DashDot __由线段和点间隔构成的直线。 ......” : rt.Style.Borders.All = New
prt.Linedef(1,
Color.Green) \'设置所有边框 rt.Style.Borders.Bottom = New prt.Linedef(0.5, Color.Red, DashStyle.Dot)
\'设置底边框 2、请教老师:以下设置表格网格线 的代码能否设置线形,比如:将水平网络线设置为 DashStyle.Dot (由点构成的直线)。谢谢。 \'设置各位置的网格线 rt.Style.GridLines.All = New Prt.LineDef(0.5, Color.Black) rt.Style.GridLines.Horz = new Prt.LineDef(Color.Red) 下代码是设置表格的网 rt.Style.GridLines.Vert = new Prt.LineDef(Color.Green) |
-- 作者:有点蓝 -- 发布时间:2019/8/29 16:21:00 -- 这种问题自己试试就知道了 |
-- 作者:hanzhang98 -- 发布时间:2019/8/29 16:30:00 -- 老师好。我没有说清楚。我是想请教老师 “以下设置表格网格线 的代码”,如何才能也设置线形。 rt.Style.GridLines.All = New Prt.LineDef(0.5, Color.Black)
rt.Style.GridLines.Horz = new Prt.LineDef(Color.Red) rt.Style.GridLines.Vert = new Prt.LineDef(Color.Green) [此贴子已经被作者于2019/8/29 18:13:45编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/8/29 16:39:00 -- LineDef的用法都一样的:http://www.foxtable.com/webhelp/topics/1169.htm |