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


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

主题:专业报表 根据图片信息表中的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


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

        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

        rt00.x=25
    rt00.y=120
    rt00.Width = 140 '表宽为150毫米

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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后面    还得麻烦老师继续指导一下   昨天折腾了一晚上 都没有搞定  不知道错误在哪

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




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


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

For Each dr As DataRow In drs
rm = New prt.RenderImage
        output.Show("1")
        ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never  '禁止容器因为分页而被垂直分割

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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 [只看该作者]

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

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


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

图片使用的是同一个位置,都重叠到一起了

    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
        msgbox("1")
        ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never  '禁止容器因为分页而被垂直分割
        rm.Image = dr.SQlLoadImage("附件")
        rm.y = 50 + idx * 90 '指定垂直位置
idx  += 1
        rm.x = 25 '指定垂直位置
        rm.Width = 160
        rm.Height = 90

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


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

去掉xy的设置,增加Spacing.Bottom设置,类似:http://www.foxtable.com/webhelp/topics/1182.htm

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
图片点击可在新窗口打开查看


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


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

rm.BreakBefore = prt.BreakEnum.Page去掉

 回到顶部
总数 13 1 2 下一页