Foxtable(狐表)用户栏目专家坐堂 → 专业报表 根据图片信息表中的ID查找文件附件中ID下的所有图片,为什么不能全部显示出来呢?


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

主题:专业报表 根据图片信息表中的ID查找文件附件中ID下的所有图片,为什么不能全部显示出来呢?

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
专业报表 根据图片信息表中的ID查找文件附件中ID下的所有图片,为什么不能全部显示出来呢?  发帖心情 Post By:2021/1/7 9:50:00 [显示全部帖子]

专业报表  根据图片信息表中的ID查找文件附件中ID下的所有图片,为什么不能全部显示出来呢?

图片点击可在新窗口打开查看此主题相关图片如下:1212.gif
图片点击可在新窗口打开查看
报表预览按钮事件代码:【想修正为根据图片信息表当前行的ID值,查询文件附件表中所有ID相同值得所有图片,然后专业报表连续打印出来】
Dim doc As New PrintDoc '定义一个报表
Dim tbl As Table = Tables("图片信息")
Dim Rows As List(Of DataRow)

For i As Integer = tbl.TopRow To tbl.BottomRow
    output.Show(i)
    Dim rw As Row = tbl.Rows(i)
    output.Show(rw("主题"))
    Dim rm As New prt.RenderImage '定义一个图片对象
    Dim rt00 As New prt.RenderTable() '定义一个表格对象
    Dim ra As New prt.RenderArea '定义一个容器
    
    Dim drs As List(Of DataRow)
    drs = DataTables("文件附件").Select("文件编号= '" & rw("ID") & "'")
    For Each dr As DataRow In drs
        output.Show("1")
        ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never  '禁止容器因为分页而被垂直分割
        If dr IsNot Nothing Then
            rm.Image = dr.SQlLoadImage("附件")
            output.Show("2")
        Else
            rm.Image = getImage("")
            output.Show("3")
        End If
        rm.y = 50 '指定垂直位置
        rm.x = 25 '指定垂直位置
        rm.Width = 160
        rm.Height = 90
        rm.Style.ImageAlign.TileHorz=True
        rm.Style.ImageAlign.TileVert=True
        rm.Style.ImageAlign.StretchHorz = True '禁止图片水平拉伸
        rm.Style.ImageAlign.StretchVert = True '禁止图片水平拉伸
        rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.center '居中显示
        rm.Style.ImageAlign.AlignVert = prt.ImageAlignHorzEnum.center '居中显示
        
    Next
    doc.Body.Children.Add(rm) '将图片对象加入报表
        'ra.Children.Add(rm) '加入到容器中
    
    rt00.x=25
    rt00.y=120
    rt00.Width = 140 '表宽为150毫米
    rt00.Height = 20 '表高为150毫米
    rt00.Rows.Count = 4 '设置行数
    rt00.Cols.Count = 2 '设置列数
    rt00.Cols(0).Width = 10
    rt00.Cols(1).Width = 90
    rt00.Cells(0,0).Text="拍摄对象"
    rt00.Cells(0,0).Style.Font = New Font("宋体", 10, FontStyle.Bold) '设置字体
    rt00.Cells(0,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中
    rt00.Cells(0,0).Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中
    rt00.Cells(0,0).Style.TextColor = Color.red '字符颜色设为红色
    rt00.Cells(0,1).Text=rw("对象")
    rt00.Cells(0,1).Style.TextColor = Color.red '字符颜色设为红
    rt00.Cells(0,1).Style.Font = New Font("宋体", 10, FontStyle.Bold) '设置字体
    rt00.Cells(0,1).Style.TextAlignHorz = prt.AlignHorzEnum.left '水平居中
    rt00.Cells(0,1).Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中
    
    'doc.Body.Children.Add(rt00) '将表格对象加入到报表中
    ra.Children.Add(rt00) '加入到容器中
    Doc.Body.ChildRen.Add(ra)
Next
doc.Preview() '预览


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)        rm.Sty...  发帖心情 Post By:2021/1/7 10:34:00 [显示全部帖子]

这个地方  按照这个提示  代码运行会报错
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:窗口,图片管理,报表预览,Click
详细错误信息:
添加的项目已经有所有者了。

所以才将其更改在了next后面    还得麻烦老师继续指导一下   昨天折腾了一晚上 都没有搞定  不知道错误在哪

以下内容是专门发给有点蓝浏览




 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)For Each dr As DataRow In drsrm = ...  发帖心情 Post By:2021/1/7 12:37:00 [显示全部帖子]

按老师方式完善后 还是只有一张图生成   例子已经上传  还得麻烦老师在例子的基础上帮忙看看问题出现在什么地方  谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)图片使用的是同一个位置,都重叠到一...  发帖心情 Post By:2021/1/7 15:08:00 [显示全部帖子]

老师  确实是存在了这个问题  当前可以显示多个图片了  但是图片没有显示完整 不知道是不是又被叠加了 能不能在帮忙看看  怎么设置每页只能打印两个图片  两个之后就换页打印呢?

当前代码如下:
Dim doc As New PrintDoc '定义一个报表
Dim tbl As Table = Tables("图片信息")
Dim Rows As List(Of DataRow)
For i As Integer = tbl.TopRow To tbl.BottomRow
    output.Show(i)
    Dim rw As Row = tbl.Rows(i)
    output.Show(rw("主题"))
    Dim rm As New prt.RenderImage '定义一个图片对象
    Dim rt00 As New prt.RenderTable() '定义一个表格对象
    Dim ra As New prt.RenderArea '定义一个容器    
    Dim drs As List(Of DataRow)
    drs = DataTables("文件附件").Select("文件编号= '" & rw("ID") & "'")
    Dim idx As Integer = 0
    For Each dr As DataRow In drs       
            rm = New prt.RenderImage
            rm.BreakBefore = prt.BreakEnum.Page
            output.Show("1")
            ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never  '禁止容器因为分页而被垂直分割
            rm.Image = dr.SQlLoadImage("附件")
            rm.y = 20 + idx * 90 '指定垂直位置
            idx  += 1
            rm.x = 25 '指定垂直位置
            rm.Width = 160
            rm.Height = 90
            rm.Style.ImageAlign.TileHorz=True
            rm.Style.ImageAlign.TileVert=True
            rm.Style.ImageAlign.StretchHorz = True '禁止图片水平拉伸
            rm.Style.ImageAlign.StretchVert = True '禁止图片水平拉伸
            rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.center '居中显示
            rm.Style.ImageAlign.AlignVert = prt.ImageAlignHorzEnum.center '居中显示
            doc.Body.Children.Add(rm) '将图片对象加入报表
            'ra.Children.Add(rm) '加入到容器中                     
    Next
    doc.Body.Children.Add(rt00) '将表格对象加入到报表中
    'ra.Children.Add(rt00) '加入到容器中
    'Doc.Body.ChildRen.Add(ra)    
Next
'doc.Preview() '预览

运行效果如下:

图片点击可在新窗口打开查看此主题相关图片如下:12121.gif
图片点击可在新窗口打开查看
[此贴子已经被作者于2021/1/7 15:21:21编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)去掉xy的设置,增加Spacing.Bottom设...  发帖心情 Post By:2021/1/7 16:07:00 [显示全部帖子]

想麻烦老师再辛苦一下   就是每个页面我要显示两个图  只显示两个   当前代码运行后每个页面只有一个图

当前代码为:
Dim doc As New PrintDoc '定义一个报表
Dim tbl As Table = Tables("图片信息")
Dim Rows As List(Of DataRow)
For i As Integer = tbl.TopRow To tbl.BottomRow
    Dim rw As Row = tbl.Rows(i)
    Dim rm As New prt.RenderImage '定义一个图片对象
    Dim drs As List(Of DataRow)
    drs = DataTables("文件附件").Select("文件编号= '" & rw("ID") & "'")
    For Each dr As DataRow In drs
        rm = New prt.RenderImage
        rm.BreakBefore = prt.BreakEnum.Page
        rm.Image = dr.SQlLoadImage("附件")
        rm.Width = 160
        rm.Height = 90
        rm.Style.ImageAlign.TileHorz=True
        rm.Style.ImageAlign.TileVert=True
        rm.Style.ImageAlign.StretchHorz = True '禁止图片水平拉伸
        rm.Style.ImageAlign.StretchVert = True '禁止图片水平拉伸
        rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.center '居中显示
        rm.Style.ImageAlign.AlignVert = prt.ImageAlignHorzEnum.center '居中显示
        rm.Style.Spacing.Bottom = 5
        doc.Body.Children.Add(rm) '将图片对象加入报表
    Next
Next
'doc.Preview() '预览
运行效果为:

图片点击可在新窗口打开查看此主题相关图片如下:12121.gif
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)rm.BreakBefore = prt.BreakEnum.Pag...  发帖心情 Post By:2021/1/7 17:06:00 [显示全部帖子]

谢谢  
当前运行效果如下:【有没有办法实现红色代码部分生成的内容附加到图片上呢?】

图片点击可在新窗口打开查看此主题相关图片如下:12121.gif
图片点击可在新窗口打开查看

代码如下:
Dim doc As New PrintDoc '定义一个报表
Dim tbl As Table = Tables("图片信息")
Dim Rows As List(Of DataRow)
For i As Integer = tbl.TopRow To tbl.BottomRow
    Dim rw As Row = tbl.Rows(i)
    Dim rm As New prt.RenderImage '定义一个图片对象
    Dim rt00 As New prt.RenderTable()
    Dim rx As prt.RenderText '定义一个文本对象
    Dim drs As List(Of DataRow)
    drs = DataTables("文件附件").Select("文件编号= '" & rw("ID") & "'")
    For Each dr As DataRow In drs
        Dim ra As New prt.RenderArea '定义一个容器
        ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never  '禁止容器因为分页而被垂直分割        
        
        rt00 = New prt.RenderTable
        rt00.Cells(0,0).Text = Date.Today
        rt00.Cells(0,1).Text = "党员发展工作资料"
        rt00.Cells(0,2).Text = "第[PageNo]页,共[PageCount]页"
        rt00.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Left
        rt00.Cols(1).Style.TextAlignHorz = prt.AlignHorzEnum.Center
        rt00.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.right
        rt00.Style.Borders.Bottom = New prt.LineDef '设置底边框
        rt00.CellStyle.Spacing.Bottom = 0.5 '底端内容缩进0.5毫米
        rt00.Style.FontSize = 8 '字体大小为8磅
        Doc.PageHeader = rt00 '作为页眉使用
       
        rt00 = New prt.RenderTable
        rt00.Cells(0,0).Text = Date.Today
        rt00.Cells(0,1).Text = "党员发展工作资料"
        rt00.Cells(0,2).Text = "第[PageNo]页,共[PageCount]页"
        rt00.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Left
        rt00.Cols(1).Style.TextAlignHorz = prt.AlignHorzEnum.Center
        rt00.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.right
        rt00.Style.Borders.Bottom = New prt.LineDef '设置底边框
        rt00.CellStyle.Spacing.Bottom = 0.5 '底端内容缩进0.5毫米
        rt00.Style.FontSize = 8 '字体大小为8磅
        Doc.PageFooter = rt00 '作为页眉使用

        rx = new prt.RenderText
        rx.text = dr("文件名")
        rx.Style.FontBold = True '字体加粗
        rx.Style.Font= New Font("宋体", 24, FontStyle.Bold)
        rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
        rx.Style.Spacing.top = 5 '和下面的对象(表格)距离3毫米
        ra.Children.Add(rx) '加入到容器中
        
        rm = New prt.RenderImage
        rm.Image = dr.SQlLoadImage("附件")
        rm.Width = 160
        rm.Height = 90
        rm.Style.ImageAlign.TileHorz=True
        rm.Style.ImageAlign.TileVert=True
        rm.Style.ImageAlign.StretchHorz = True '禁止图片水平拉伸
        rm.Style.ImageAlign.StretchVert = True '禁止图片水平拉伸
        rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.center '居中显示
        rm.Style.ImageAlign.AlignVert = prt.ImageAlignHorzEnum.center '居中显示
        rm.Style.Spacing.Bottom = 5
        rm.Style.Spacing.top = 5
        ra.Children.Add(rm) '加入到容器中
        
        
        rt00 =New prt.RenderTable '定义一个表格对象    
        rt00.Width = 160 '表宽为150毫米
        rt00.Height = 30 '表高为150毫米
        rt00.Rows.Count = 4 '设置行数
        rt00.Cols.Count = 2 '设置列数
        rt00.Cols(0).Width = 10
        rt00.Cols(1).Width = 90
        rt00.Cells(0,0).Text="拍摄对象"
        rt00.Cells(0,0).Style.Font = New Font("宋体", 10, FontStyle.Bold) '设置字体
        rt00.Cells(0,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中
        rt00.Cells(0,0).Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中
        rt00.Cells(0,0).Style.TextColor = Color.red '字符颜色设为红色
        rt00.Cells(1,0).Text="拍摄作者"
        rt00.Cells(1,0).Style.Font = New Font("宋体", 10, FontStyle.Bold) '设置字体
        rt00.Cells(1,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中
        rt00.Cells(1,0).Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中
        rt00.Cells(1,0).Style.TextColor = Color.red '字符颜色设为红色
        rt00.Cells(2,0).Text="拍摄时间"
        rt00.Cells(2,0).Style.Font = New Font("宋体", 10, FontStyle.Bold) '设置字体
        rt00.Cells(2,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中
        rt00.Cells(2,0).Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中
        rt00.Cells(2,0).Style.TextColor = Color.red '字符颜色设为红色        
        rt00.Cells(2,1).Text="[Format(date.today,""yyyy年MM月dd日"")]"
        rt00.Cells(2,1).Style.TextColor = Color.red '字符颜色设为红
        rt00.Cells(2,1).Style.Font = New Font("宋体", 10, FontStyle.Bold) '设置字体
        rt00.Cells(2,1).Style.TextAlignHorz = prt.AlignHorzEnum.left '水平居中
        rt00.Cells(2,1).Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中    
        rt00.Cells(3,0).Text="拍摄主题"
        rt00.Cells(3,0).Style.Font = New Font("宋体", 10, FontStyle.Bold) '设置字体
        rt00.Cells(3,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中
        rt00.Cells(3,0).Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中
        rt00.Cells(3,0).Style.TextColor = Color.red '字符颜色设为红色
        rt00.Rows(3).Height = 12 '
        rt00.Rows(1).Height = 6
        rt00.Rows(2).Height = 6
        rt00.Rows(0).Height = 6
        rt00.Cells(3,1).Text="某某县人民检察院某年某月某日召开全院干警大会,传达中共中央第十九届五中全会精神和学习贯彻落实十九届十四五发展规划会议"
        rt00.Cells(3,1).Style.Font = New Font("宋体", 10, FontStyle.Bold) '设置字体
        rt00.Cells(3,1).Style.TextAlignHorz = prt.AlignHorzEnum.left '水平居中
        rt00.Cells(3,1).Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中
        rt00.Cells(3,1).Style.TextColor = Color.red '字符颜色设为红色
        'rt00.Style.Spacing.Bottom = 5
        ra.Children.Add(rt00) '加入到容器中      
        Doc.Body.ChildRen.Add(ra) '将容器加入到报表中
    Next
Next
'doc.Preview() '预览

[此贴子已经被作者于2021/1/7 17:06:32编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)指定一下位置rt00 =New prt.RenderTa...  发帖心情 Post By:2021/1/7 18:11:00 [显示全部帖子]

OK  灰常感谢老师的耐心指导
经过这两天老师的指导 
我学习了容器  文本 表格  图片  谢谢!

 回到顶部