Foxtable(狐表)用户栏目专家坐堂 → 专业报表套打问题:绑定了表 数据和二进制图片数据没有显示出来


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

主题:专业报表套打问题:绑定了表 数据和二进制图片数据没有显示出来

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
专业报表套打问题:绑定了表 数据和二进制图片数据没有显示出来  发帖心情 Post By:2021/1/6 16:20:00 [只看该作者]

当前有两个表  一个是图片信息表 一个是文件附件表   两个表以ID字段为关联
图片信息表中  有  ID  作者  单位  主题等字段
文件附表中     有  ID  文件名称  附件(二进制列) ocr值等字段

在图片信息表中增加了一条id为112233的数据
同时在文件附表中增加了id为112233的 名称为1.jpg  2.jpg  3.jpg  4.jpg的图片文件
 怎么实现专业报表中对应的打印文件呢?


当前专业报表代码如下:运行效果显示一片空白  没有任何数据显示
【绑定数据表,代码怎么优化实现根据图片信息表中当前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
    Dim rw As Row = tbl.Rows(i)
    'Dim rt As prt.RenderText '定义一个文本对象
    Dim rm As New prt.RenderImage '定义一个图片对象
    Dim rt00 As New prt.RenderTable() '定义一个表格对象
    Dim ra As New prt.RenderArea '定义一个容器
    Rows = Tables("图片信息").Rows(i).DataRow.GetChildRows("ID")
    For r As Integer = 0 To Rows.Count - 1
        ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never  '禁止容器因为分页而被垂直分割
        rm.Image = Tables("文件附件").Current.DataRow.SQlLoadImage("附件")
        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.KeepAspectRatio=True
        rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.center '居中显示
        rm.Style.ImageAlign.AlignVert = prt.ImageAlignHorzEnum.center '居中显示
        doc.Body.Children.Add(rm) '将图片对象加入报表
    Next
    rt00.x=25
    rt00.y=120
    rt00.Width = 160 '表宽为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.white '字符颜色设为红色
    rt00.Cells(0,1).Text=rw("对象")
    rt00.Cells(0,1).Style.TextColor = Color.white '字符颜色设为红
    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 '垂直居中
    
    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.white '字符颜色设为红色
    rt00.Cells(1,1).Text=rw("作者")
    rt00.Cells(1,1).Style.TextColor = Color.white '字符颜色设为红
    rt00.Cells(1,1).Style.Font = New Font("宋体", 10, FontStyle.Bold) '设置字体
    rt00.Cells(1,1).Style.TextAlignHorz = prt.AlignHorzEnum.left '水平居中
    rt00.Cells(1,1).Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中
    
    
    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.white '字符颜色设为红色
    
    rt00.Cells(2,1).Text=rw("时间")
    rt00.Cells(2,1).Style.TextColor = Color.white '字符颜色设为红
    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.white '字符颜色设为红色
    rt00.Rows(3).Height = 8 '
    rt00.Rows(1).Height = 4
    rt00.Rows(2).Height = 4
    rt00.Rows(0).Height = 4
    rt00.Cells(3,1).Text=rw("主题")
    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.white '字符颜色设为红色
    
    
    doc.Body.Children.Add(rt00) '将表格对象加入到报表中
    'ra.Children.Add(rt00) '加入到容器中
    Doc.Body.ChildRen.Add(ra)
Next
doc.Preview() '预览


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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/6 16:24:00 [只看该作者]

使find查询获取附件表对应的行

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)使find查询获取附件表对应的行  发帖心情 Post By:2021/1/6 16:44:00 [只看该作者]

试了一下还是没有能够解决   还得麻烦老师指导下
当前有两个问题:
1个是怎么查找数据并显示出来  专业报表代码没有显示任何数据
2个是二进制图片在专业报表中怎么直接引用?
rm.Image = Tables("文件附件").Current.DataRow.SQlLoadImage("附件")

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/6 16:46:00 [只看该作者]

http://www.foxtable.com/webhelp/topics/0396.htm

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/6 16:48:00 [只看该作者]

Dim dr As DataRow
dr = 
DataTables("
文件附件").Find("id = '" & rw("id") & "'")
if dr isnot nothing then 
rm.Image = dr.SQlLoadImage("附件")
en dif

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)Dim dr As DataRowdr...  发帖心情 Post By:2021/1/6 17:25:00 [只看该作者]

有点蓝老师  在你的指导下 目前可以实现单张图片加载了  但是同一个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 rt As prt.RenderText '定义一个文本对象
    Dim rm As New prt.RenderImage '定义一个图片对象
    Dim rt00 As New prt.RenderTable() '定义一个表格对象
    Dim ra As New prt.RenderArea '定义一个容器

    With DataTables("文件附件")
    Dim dr As DataRow
    dr = .Find("文件编号= '" & rw("ID") & "'")
        ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never  '禁止容器因为分页而被垂直分割
        If dr IsNot Nothing Then
            rm.Image = dr.SQlLoadImage("附件")
        Else
            rm.Image = getImage("")
        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.KeepAspectRatio=True
        rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.center '居中显示
        rm.Style.ImageAlign.AlignVert = prt.ImageAlignHorzEnum.center '居中显示

    End With
    
    doc.Body.Children.Add(rm) '将图片对象加入报表
    rt00.x=25
    rt00.y=120
    rt00.Width = 160 '表宽为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() '预览

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/6 17:29:00 [只看该作者]

http://www.foxtable.com/webhelp/topics/0400.htm

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)http://www.foxtable.com/webhelp/to...  发帖心情 Post By:2021/1/6 17:49:00 [只看该作者]

    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

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



代码进一步到这里   能够提示2这个检测结果  但是当前还是只显示了一张图片
[此贴子已经被作者于2021/1/6 18:09:01编辑过]

 回到顶部