以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 专业报表明细打印不出问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=192397) |
||||
-- 作者:lin98 -- 发布时间:2024/6/21 10:19:00 -- 专业报表明细打印不出问题 明细表有数据打印不出来,如何解决?请帮实例改正,谢谢 [upload=zip,专业报表明细问题.z
[此贴子已经被作者于2024/6/21 16:36:06编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2024/6/21 10:39:00 -- 没看到有给表格填充数据的代码:http://www.foxtable.com/webhelp/topics/1250.htm |
||||
-- 作者:lin98 -- 发布时间:2024/6/21 16:39:00 -- Dim doc As New PrintDoc \'定义一个报表专业打印窗口_Table1"员工.员工需求 Dim Rows As List(Of DataRow) Dim tbl As Table = Tables("员工") Dim tb As Table = Tables("员工需求")\' \'Dim tb As Table = Tables("员工.员工需求")\' \'主表 - 选定区 - 打印 With Tables("员工") If .TopPosition > -1 Then \'如果选定区域包括数据行 For i2 As Integer = .TopPosition To .BottomPosition Dim pr As Row = .rows(i2) \'员工-主表 For i As Integer = tbl.TopRow To tbl.BottomRow Dim rw As Row = tbl.Rows(i) Dim rt As New prt.RenderTable() \'定义一个表格对象 Dim rt2 As New prt.RenderTable() \'定义一个表格对象 Dim rx As New prt.RenderText \'定义一个文本对象 Dim ra As New prt.RenderArea \'定义一个容器 ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never \'禁止容器因为分页而被垂直分割 Dim prs As Integer = 10\' Dim cols() As String = { "员工编号", "类别名称", "说明", "图片"} \' Rows = tb.DataTable.select("员工编号=\'" & rw("员工编号") & "\'") Rows = tb.DataTable.select("员工编号=\'" & pr("员工编号") & "\'") rx.text = "员工资料卡" rx.Style.FontBold = True \'字体加粗 rx.Style.FontSize = 16 \'大体大小为16磅 rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中排列 rx.Style.Spacing.Bottom = 3 \'和下面的对象(表格)距离3毫米 ra.Children.Add(rx) \'加入到容器中 rt.Rows.Count = 7 \'设置总行数 rt.Cols.Count = 5 \'设置总列数 rt.Height = 75 \'设置表格的高度 rt.Rows(6).Height = 30 \'设置第7行(显示备注的行)的高度,剩余高度被平均分排到其他行 rt.Cols(0).Width = 26 \'设置前四列的宽度,剩余的宽度被分配给5列(显示图片的那列) rt.Cols(1).Width = 35 rt.Cols(2).Width = 26 rt.Cols(3).Width = 40 rt.Cells(0, 4).SpanRows = 6 \'第1行第5个单元格向下合并6行(用于显示照片) rt.Cells(4, 1).SpanCols = 3 \'第5行第2个单元格向右合并3列(用于显示地址) rt.Cells(6, 0).SpanCols = 5 \'第7行第1个单元格向右合并5列(用于显示备注) rt.CellStyle.Spacing.All = 1 \'单元格内容缩进1毫米 rt.Style.Spacing.Bottom = 5 \'和下一个资料卡的距离是5毫米 rt.Style.GridLines.All = New prt.Linedef \'设置网格线 rt.Style.TextAlignVert = prt.AlignVertEnum.Center \'内容垂直居中 rt.Rows(6).Style.TextAlignVert = prt.AlignVertEnum.Top \'唯独第7行是备注,内容靠上对齐 rt.Cells(0, 0).Text = "姓名" rt.Cells(0, 1).Text = rw("姓名") rt.Cells(0, 2).Text = "出生日期" rt.Cells(0, 3).Text = rw("出生日期") rt.Cells(1, 0).Text = "部门" rt.Cells(1, 1).Text = rw("部门") rt.Cells(1, 2).Text = "雇佣日期" rt.Cells(1, 3).Text = rw("雇佣日期") rt.Cells(2, 0).Text = "性别" rt.Cells(2, 1).Text = rw("性别") rt.Cells(2, 2).Text = "职务" rt.Cells(2, 3).Text = rw("职务") rt.Cells(3, 0).Text = "城市" rt.Cells(3, 1).Text = rw("城市") rt.Cells(3, 2).Text = "邮政编码" rt.Cells(3, 3).Text = rw("邮政编码") rt.Cells(4, 0).Text = "地址" rt.Cells(4, 1).Text = rw("地址") rt.Cells(5, 0).Text = "家庭电话" rt.Cells(5, 1).Text = rw("家庭电话") rt.Cells(5, 2).Text = "办公电话" rt.Cells(5, 3).Text = rw("办公电话") rt.Cells(6, 0).Text = rw("备注") rt.Cells(0, 4).Image = GetImage(rw("照片")) ra.Children.Add(rt) \'加入到容器中 Doc.Body.ChildRen.Add(ra) \'将容器加入到报表中 rt2 = New prt.RenderTable rt2.Style.GridLines.All = New Prt.LineDef(0.5, Color.Black) \'rt.Style.GridLines.Horz = New Prt.LineDef(Color.Red) rt2.Style.GridLines.Horz = New Prt.LineDef(Color.Black) rt2.Style.GridLines.Vert = New Prt.LineDef(Color.Green) rt2.Style.TextAlignHorz = prt.AlignHorzEnum.Center rt2.Style.TextAlignVert = prt.AlignVertEnum.Center rt2.Style.Borders.Bottom = New prt.LineDef(0.3, Color.LightGray) rt2.CellStyle.Spacing.All = 1 rt2.Cols.Count = 4\'设 For j As Integer = 0 To cols.Length - 1 \'打印标题 rt2.Cells(0, j).Text = cols(j) Next rt2.Cols(0).Width = 50 \' rt2.Cols(1).Width = 80 \' rt2.Cols(2).Width = 90 \' rt2.Cols(3).Width = 26 \' rt2.Cols(4).Width = 50 \' [此贴子已经被作者于2024/6/21 16:41:29编辑过]
|
||||
-- 作者:lin98 -- 发布时间:2024/6/21 16:41:00 -- For r As Integer = 0 To Rows.Count - 1 rt2.Cells(r + 1, 0).Text = rows(r)("员工编号") rt2.Cells(r + 1, 1).Text = rows(r)("类别名称") rt2.Cells(r + 1, 2).Text = rows(r)("说明") rt2.Cells(r + 1, 3).Text = rows(r)("图片") Next Next End If Next Next Next Next End If End With Doc.Preview() \'预览报表 代码是3楼+4楼,由代码量太大,分2楼发 上面执行,没报错,但明细数据还是无法打印,请老师帮看,哪里错,如何改?
[此贴子已经被作者于2024/6/21 18:01:44编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2024/6/21 17:05:00 -- 怎么喜欢越搞复杂,对自己做的东西都没有一点概念的么!既然原来的代码就只缺表格数据了,直接补上遍历明细表填充表格的代码即可。给个帮助是让你学学人家怎么填充表格数据的,不是让你完全照抄。 |
||||
-- 作者:lin98 -- 发布时间:2024/6/22 1:09:00 -- rt.Cells(8, 0).Text = "照片" rt.Cells(8, 0).Image = GetImage(rw("照片")) Dim CurRow As Row = Tables("员工").Current Dim fls As List(Of String) \' For Each f As String In lfls For i3 As Integer = 0 To fls.Count - 1 rt.Style.ImageAlign.StretchHorz = False \'禁止 rt.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center \'\' fls = CurRow.DataRow.Lines("照片") rt.Cells(8, 0).Image = GetImage(fls(0)) rt.Cells(8, 2).Image = GetImage(fls(1)) Next 红代码,报错找不到对象,如何解决?
[此贴子已经被作者于2024/6/22 1:09:38编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2024/6/22 8:47:00 -- 还是基础问题,怎么感觉越学越回头了呢 Dim CurRow As Row = Tables("员工").Current rt.Style.ImageAlign.StretchHorz = False \'禁止 rt.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center \'\' Dim fls As List(Of String)= CurRow.DataRow.Lines("照片") For i3 As Integer = 0 To fls.Count - 1 rt.Cells(8, i3).Image = GetImage(fls(i3)) Next |
||||
-- 作者:lin98 -- 发布时间:2024/6/22 9:39:00 -- 执行之后,多张照片,只打一张,如何实现将多张照片打印? |
||||
-- 作者:有点蓝 -- 发布时间:2024/6/22 10:48:00 -- 7楼就是打印多张的,显示不出来,说明单元格的设置不合理,或者列不够多 |
||||
-- 作者:lin98 -- 发布时间:2024/6/22 13:38:00 --
1.打不出多图,2.数量和日期列,空值显示0,如何实现空值不显示?
|