Foxtable(狐表)用户栏目专家坐堂 → [求助]专业报表,控制每页打印行数时,为什么没有办法定位


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

主题:[求助]专业报表,控制每页打印行数时,为什么没有办法定位

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


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
[求助]专业报表,控制每页打印行数时,为什么没有办法定位  发帖心情 Post By:2020/11/5 16:56:00 [显示全部帖子]

Dim tb As Table = Tables("表A")
Dim prs As Integer = 8 '每页20行

Dim doc As New PrintDoc() '定义一个报表
doc.PageSetting.Width = 240 '纸张宽度为240毫米
doc.PageSetting.Height = 140 '纸张高度为140毫米
Doc.PageSetting.LeftMargin = 0 '设置左边距
Doc.PageSetting.RightMargin = 0 '设置右边距
Doc.PageSetting.TopMargin = 0 '设置上边距
Doc.PageSetting.BottomMargin = 0 '设置下边距



For p As Integer = 0 To math.Ceiling(tb.Rows.Count / prs) - 1
    Dim ra As New prt.RenderArea '定义一个容器
    'ra.X = 0 '指定容器水平位置
    'ra.y = 24 '指定容器垂直位置
    
    Dim rt As prt.RenderText '定义一个文本对象
    rt = New prt.RenderText() '创建文本对象(序列号)
    rt.Width = "Auto" '自动设置宽度
    rt.Style.Font = New Font("宋体", 12, FontStyle.Regular) '设置文本字体,宋体,12磅,普通
    rt.Style.TextAlignHorz = prt.AlignHorzEnum.Left '水平靠左
    rt.Text = "NO-20201104001 "  '设置文本对象的内容
    rt.X = 172 '指定水平位置
    rt.y = 0 '指定垂直位置
    ra.Children.Add(rt) '将文本对象加入到容器ra中
    
    Dim rb As New prt.RenderTable() '定义一个表格对象
    rb.Height = 70 '设置高度
    rb.Cols.Count = 6 '设置列数
    rb.Style.GridLines.All = New prt.LineDef '设置网格线类型
    rb.X = 10 '指定水平位置
    rb.y = 21 '指定垂直位置
    rb.Style.Font = New Font("宋体", 10, FontStyle.Regular) '设置文本字体,宋体,10磅,普通
    rb.Style.TextAlignHorz = prt.AlignHorzEnum.Left '水平靠左
    rb.Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中
    rb.Cols(0).Width = 27.5
    rb.Cols(1).Width = 51
    rb.Cols(2).Width = 52
    rb.Cols(3).Width = 23
    rb.Cols(4).Width = 21.5
    rb.Cols(5).Width = 30
    rb.Width = "Auto" '设置宽度
    Dim ColNames As String() = New String(){"品名", "规格型号","SN", "登记单号", "货物特征","备注"}
    For c As Integer = 0 To ColNames.Length -1
        For r As Integer = p * prs To math.Min(tb.Rows.Count - 1,( p + 1) * prs - 1)
            rb.Cells(r - p * prs, c).Text = tb.rows(r)(ColNames(c))
        Next
    Next
    ra.Children.Add(rb) '将表格对象加入到容器ra中
    If p = math.Ceiling(tb.Rows.Count / prs) - 1 '如果是最后一页
        For r As Integer = tb.Rows.Count To ( p + 1) * prs - 1 '补空行
            rb.Rows.Count = rb.Rows.Count + 1
            rb.Rows(rb.Rows.count -1)(0).text = " "
        Next
    Else
        rb.BreakAfter = prt.BreakEnum.Page '否则换页
    End If


    doc.Body.Children.Add(ra) '将容器ra加入到报表
Next
doc.Preview()



    'ra.X = 0 '指定容器水平位置
    'ra.y = 24 '指定容器垂直位置
这两行代码有问题吗?为什么一但取消注释,就不再换页了,就在一个页面重复打印?


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


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
  发帖心情 Post By:2020/11/5 17:40:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20201105163001.png
图片点击可在新窗口打开查看

这个分页打印的效果,只是位置不对


而添加了位置之后

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20201105163111.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
  发帖心情 Post By:2020/11/5 17:48:00 [显示全部帖子]

添加位置之后,就都在一页上面,重复打印了

而且那个容器的位置,后续要添加变量,这样用户就可以自己根据实际情况调整了,而且添加容器之后,改变位置的那部分代码,也就只要设定一个地方就好,感觉清爽了很多,只是不知道为什么添加位置后,就不换页了,很奇怪,不知道哪里搞错了

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


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
  发帖心情 Post By:2020/11/5 18:06:00 [显示全部帖子]

以下是引用有点蓝在2020/11/5 17:03:00的发言:
需要什么效果?现在是什么效果?截图说明一下


咋没声音啦,我还在线等呢


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


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
  发帖心情 Post By:2020/11/5 21:25:00 [显示全部帖子]

以下是引用有点蓝在2020/11/5 20:18:00的发言:
设置一下上边距和左边距:http://www.foxtable.com/webhelp/topics/1188.htm


Doc.PageSetting.LeftMargin = 20 '设置左边距


为什么不可以设置容器的位置呢?
[此贴子已经被作者于2020/11/5 20:18:18编辑过]


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


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
  发帖心情 Post By:2020/11/5 21:55:00 [显示全部帖子]

刚刚试了一下,总工6页的内容,却打了13页,纸张设置是140高,可是实际打出来却差不多220,排版没有乱,就是感觉纸张尺寸不对了,为什么会这样?

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


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
  发帖心情 Post By:2020/11/5 22:03:00 [显示全部帖子]

刚刚将上边距从24改到50,结果就打了26页,还隔着打,什么情况?究竟是代码问题还是软件问题?

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


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
  发帖心情 Post By:2020/11/5 23:19:00 [显示全部帖子]

以下是引用有点蓝在2020/11/5 22:09:00的发言:
打印内容的高和宽要注意排除边距的大小。总共才140的高,上边距50,剩下90的高度够放的下要打印的内容吗?不够肯定就一页变2页甚至更多


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:出库单打印.rar

我没辙了,现在打印出来的结果就是:第一页的定位和后面5页的定位偏差较大,无法调整,后面5页的定位是一致的,就第一页(上边距和左边距都不一致),搞不明白究竟是什么情况,尝试在每个for循环里都设置一遍页边距,依然无效,也尝试了在每个for循环里将纸张大小、页边距都设置一遍,依然无效,开始是打算用窗口打印的,毕竟省事多了,测试的结果也是这样,后来改用专业报表,心想专业报表总应该够专业吧,结果依然如故,纸都浪费了一大堆了,实在是搞不明白了,还请老师帮忙看看,究竟出了啥状况


预览一切正常的,而且还发现一个奇葩的现象,刚生成预览窗口时,显示是正常的,如果在预览窗口修改页面设置,立马就变成纵向了,如果不做页面设置,直接在预览窗口打印,也会变成纵向的,直接用代码打印也遇到奇葩的问题,就是将禁止自动旋转按帮助的要求设为“false”,结果悲剧了,纵向打印了,但是设为“true”打印,倒是横向打印了,难倒我的版本和别人的不一样,特殊定制的?

[此贴子已经被作者于2020/11/5 23:26:38编辑过]

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


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
  发帖心情 Post By:2020/11/5 23:39:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20201105223213.jpg
图片点击可在新窗口打开查看

这就是实际打印效果,第一页位置不对,第二页就正常了,后面的都是正常的,如果都不对,那应该是位置没有调整好,但是第一页和后面的不一致,这是什么鬼? 打印机是映美FP-630K+,一直用来打印增值税专用fa piao的,这个因素可以排除

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


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
  发帖心情 Post By:2020/11/6 20:46:00 [显示全部帖子]

以下是引用有点蓝在2020/11/6 8:44:00的发言:
不能在预览窗口里点击打印,只能是直接用代码打印【doc.Print()】。您本来设置的纸张大小是宽240X高140,纸张已经是横向的的了,所以不需要设置在打印里设置什么横向打印的。和负负得正的道理一样,横向的横向就是纵向。

图片中的效果就是doc.Print()打印的,第一页和后面的位置不一致,取消横向打印设置也试过的,也没有用


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