Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共11 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:专业报表明细打印不出问题

1楼
lin98 发表于:2024/6/21 10:19:00
明细表有数据打印不出来,如何解决?请帮实例改正,谢谢
[upload=zip,专业报表明细问题.z

[此贴子已经被作者于2024/6/21 16:36:06编辑过]
2楼
有点蓝 发表于:2024/6/21 10:39:00
没看到有给表格填充数据的代码:http://www.foxtable.com/webhelp/topics/1250.htm
3楼
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编辑过]
4楼
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编辑过]
5楼
有点蓝 发表于:2024/6/21 17:05:00
怎么喜欢越搞复杂,对自己做的东西都没有一点概念的么!既然原来的代码就只缺表格数据了,直接补上遍历明细表填充表格的代码即可。给个帮助是让你学学人家怎么填充表格数据的,不是让你完全照抄。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:专业报表.zip


6楼
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编辑过]
7楼
有点蓝 发表于: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
8楼
lin98 发表于:2024/6/22 9:39:00
执行之后,多张照片,只打一张,如何实现将多张照片打印?
9楼
有点蓝 发表于:2024/6/22 10:48:00
7楼就是打印多张的,显示不出来,说明单元格的设置不合理,或者列不够多
10楼
lin98 发表于:2024/6/22 13:38:00
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:11新建文件夹.zip

1.打不出多图,2.数量和日期列,空值显示0,如何实现空值不显示?
共11 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .07031 s, 4 queries.