以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 分组打印 怎么实现选择打印哪些列?并自定义设置列宽? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=146250) |
-- 作者:李孝春 -- 发布时间:2020/2/20 0:29:00 -- 分组打印 怎么实现选择打印哪些列?并自定义设置列宽? 分组打印 怎么实现选择打印哪些列?并自定义设置列宽? 当前是以地区进行分组显示,怎么实现根据地区 和客户名称进行组合分组显示呢? Dim doc As New
PrintDoc [此贴子已经被作者于2020/2/20 10:25:35编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/2/20 10:28:00 -- dim nms() as string = {"第一列","第三列"} For c As integer = 0 To nms.length - 1 rt.Cells(0,c).Text = tbl.Cols(nms(c)).Name rt.Cols(c).Width = tbl.Cols(nms(c)).PrintWidth For r As integer = 0 To Rows.Count -1 rt.Cells(r + 1, c).Text = rows(r)(tbl.Cols(nms(c)).Name) Next Next ----------------------- Dim Regions As List(Of String()) = tbl.DataTable.GetValues("地区|客户名称") doc.Pagesetting.LandScape = True For Each Region As String() In Regions …… rx.Text = "地区: " & Region(0) …… Rows = tbl.Datatable.Select("[地区] = \'" & Region(0) & "\' and 客户名称=\'" & Region(1) & "\'")
|
-- 作者:李孝春 -- 发布时间:2020/2/22 16:50:00 -- 回复:(有点蓝)dim nms() as string = {"第一列","第... 代码如下,运行效果,是一个记录一行 不是想要的 我想实现的是 一个班级一张总表 分别按照学生姓名 分组 显示与该学生姓名相关的记录 然后再显示第二个班的 麻烦老师继续指导下 谢谢 代码如下: Dim doc As New PrintDoc Dim rt As Prt.RenderTable Dim rx As prt.RenderText Dim tbl As Table = Tables("学生信息登记") Dim Rows As List(Of DataRow) Dim Regions As List(Of String()) = tbl.DataTable.GetValues("学校|年级|班级") doc.Pagesetting.LandScape = True For Each Region As String() In Regions rx = New prt.RenderText rx.Style.FontSize = 14 rx.Style.FontBold = True rx.Style.Spacing.Bottom = 2 rx.Text = "班级: " & Region(0) & Region(1) & Region(2) doc.Body.Children.Add(rx) rt = New prt.RenderTable rt.Style.Font = Tables("学生信息登记").Font rt.Style.TextAlignVert = prt.AlignVertEnum.Center rt.Style.GridLines.All = New prt.LineDef(0.3,Color.LightGray) rt.Style.Spacing.Bottom = 5 rt.CellStyle.Spacing.All = 1 rt.Style.Font = tbl.Font \'Rows = tbl.DataTable.Select("[学校] = \'" & Region(0) & "\' and 年级=\'" & Region(1) & "\'and 班级=\'" & Region(2) & "\'and 学生姓名=\'" & Region(3) & "\'") Rows = tbl.DataTable.Select("[学校] = \'" & Region(0) & "\' and 年级=\'" & Region(1) & "\'and 班级=\'" & Region(2) & "\'") Dim nms() As String = {"学生姓名","亲属姓名","与学生关系","身份证号","联系电话","现居住地"} For c As Integer = 0 To nms.length - 1 rt.Cells(0,c).Text = tbl.Cols(nms(c)).Name rt.Cols(c).Width = tbl.Cols(nms(c)).PrintWidth For r As Integer = 0 To Rows.Count -1 rt.Cells(r + 1, c).Text = rows(r)(tbl.Cols(nms(c)).Name) Next Next rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All doc.Body.Children.Add(rt) Next doc.preview() |
-- 作者:有点蓝 -- 发布时间:2020/2/22 17:12:00 -- 上面的代码就是一个班级一张表的。如果只有一行是数据没有加载完整吧 |
-- 作者:李孝春 -- 发布时间:2020/2/22 17:33:00 -- 回复:(有点蓝)上面的代码就是一个班级一张表的。如... 通过下拉框选择对应的值 然后导入表到窗体表中 Dim tb1 As WinForm.Table = e.Form.Controls("Table1") Dim c1 As WinForm.ComboBox = e.Form.Controls("选择表") Dim cmd1 As New SQLCommand Dim dt1 As DataTable cmd1.C cmd1.CommandText = "SEL ECT * From {" & c1.Value & "} " dt1 = cmd1.ExecuteReader(True) tb1.Table.DataSource =dt1 Dim tab3 As WinForm.TabControl = e.Form.Controls("卡片管理") tab3.SelectedPage.Text= "【" & c1.value & "】一览表" _tablename=c1.Value.Trim() 经过一系列筛选操作后,窗体表只显示了一个年级一个班级的数据 新增一个按钮 代码事件如下 【没有打印窗体表中已经筛选出来的数据 而是打印了表中的所有数据,有没有办法限制只打印表中经过筛选后的数据呢?】 \'Dim c1 As WinForm.ComboBox = e.Form.Controls("选择表") \'Dim tb1 As WinForm.Table = e.Form.Controls("Table1") \'With tb1.Table.PrintInfo \'.Title = c1.Value \'.PageFooter = "第[PageNo]页,共[PageCount]页" \'.PageFooterLine = True \'.PaperKind = 9 \'.FitIntoPage = True \'End With \'tb1.Table.Print(True,True) Dim doc As New PrintDoc Dim rt As Prt.RenderTable Dim rx As prt.RenderText Dim tbl As Table = Tables("学校数据管理_table1") Dim Rows As List(Of DataRow) Dim Regions As List(Of String()) = tbl.DataTable.GetValues("学校|年级|班级") doc.Pagesetting.LandScape = True For Each Region As String() In Regions rx = New prt.RenderText rx.Style.FontSize = 14 rx.Style.FontBold = True rx.Style.Spacing.Bottom = 2 rx.Text = "班级: " & Region(0) & Region(1) & Region(2) doc.Body.Children.Add(rx) rt = New prt.RenderTable rt.Style.Font = Tables("学校数据管理_table1").Font rt.Style.TextAlignVert = prt.AlignVertEnum.Center rt.Style.GridLines.All = New prt.LineDef(0.3,Color.LightGray) rt.Style.Spacing.Bottom = 5 rt.CellStyle.Spacing.All = 1 rt.Style.Font = tbl.Font \'Rows = tbl.DataTable.Select("[学校] = \'" & Region(0) & "\' and 年级=\'" & Region(1) & "\'and 班级=\'" & Region(2) & "\'and 学生姓名=\'" & Region(3) & "\'") Rows = tbl.DataTable.Select("[学校] = \'" & Region(0) & "\' and 年级=\'" & Region(1) & "\'and 班级=\'" & Region(2) & "\'") Dim nms() As String = {"学生姓名","亲属姓名","与学生关系","身份证号","联系电话","现居住地"} For c As Integer = 0 To nms.length - 1 rt.Cells(0,c).Text = tbl.Cols(nms(c)).Name rt.Cols(c).Width = tbl.Cols(nms(c)).PrintWidth For r As Integer = 0 To Rows.Count -1 rt.Cells(r + 1, c).Text = rows(r)(tbl.Cols(nms(c)).Name) Next Next rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All doc.Body.Children.Add(rt) Next doc.preview() 打印按钮代码运行后的效果,数据是全部加载的 但是显示不全 |
-- 作者:有点蓝 -- 发布时间:2020/2/22 17:39:00 -- Dim Regions As List(Of String()) = tbl.DataTable.GetValues("学校|年级|班级",tbl.filter) |