找回密码
 立即注册

QQ登录

只需一步,快速开始

adolfgzb
初级会员   /  发表于:2021-2-7 16:33  /   查看:6171  /  回复:14
本帖最后由 adolfgzb 于 2021-2-7 16:48 编辑

                frmShowView.Viewer1.Document = rpt.Document
                rpt.Document.Pages.AddRange(rpt1.Document.Pages())
                rpt.Document.Pages.AddRange(rpt2.Document.Pages())
程序是通过AddRange处理把几张票加在一起预览、印刷。
数据量小的时候没有问题,数据量大的时候,比如需要add进去的rpt1或者rpt2有六七千页的时候,中间就会不时出现空白页。

单独印刷rpt1或者rpt2的时候,没有空白页,数据都是正常显示的。

请问这是什么原因啊?是工具问题吗?

补充一点:多运行几次,空白页显示的位置还是不同的。不如第一次第100页~103页显示空白,第二次这几页又正常显示,106页~120页显示空白。
感觉这个也有一定的随机性,比较奇怪

14 个回复

倒序浏览
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2021-2-7 16:54:23
沙发
您好

您用的 AR哪个版本呢?我们需要测试重现这个问题才能判断是什么原因呢。

回复 使用道具 举报
adolfgzb
初级会员   /  发表于:2021-2-7 16:57:58
板凳
Lenka.Guo 发表于 2021-2-7 16:54
您好

您用的 AR哪个版本呢?我们需要测试重现这个问题才能判断是什么原因呢。

现在用的是AR7.6
版本号  v7.6.8201.1
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2021-2-7 17:49:11
地板
您好,
因为您可能使用的是日文版的V7比较早的版本了,这边没有环境,我这边在AR15 测试没有重现该问题,
搜索了Case库,有V7版本的提过类似的Case可能是您这边设置了 CacheToDisk  为True导致的空白页,可以尝试将该属性设为False或者移除相关代码


  1. SectionReport1 rpt1 = new SectionReport1();
  2.             SectionReport2 rpt2 = new SectionReport2();
  3.             rpt1.Document.CacheToDisk = true;
  4.             rpt2.Document.CacheToDisk = true;
  5.             rpt1.Run();
  6.             rpt2.Run();
  7.             rpt1.Document.Pages.AddRange(rpt2.Document.Pages);
  8.             viewer1.Document = rpt1.Document;
  9.             viewer1.CurrentPage = 308;
复制代码


回复 使用道具 举报
adolfgzb
初级会员   /  发表于:2021-2-8 09:32:06
5#
Lenka.Guo 发表于 2021-2-7 17:49
您好,
因为您可能使用的是日文版的V7比较早的版本了,这边没有环境,我这边在AR15 测试没有重现该问题,
...

你好,设置rpt2.Document.CacheToDisk = True 是为了避免保存PDF大小是0K,保存不了。
这样改回去的话,这个PDF保存问题可以解决吗?
回复 使用道具 举报
adolfgzb
初级会员   /  发表于:2021-2-8 09:45:48
6#
现在要解决的问题就是大数据量的时候,report预览或者保存时会有各种问题,比如run的时候内存直接溢出,保存PDF时直接0K保存不了,还有这个帖子问的空白页的问题。

关于report的性能处理,有没有什么建议啊?
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2021-2-8 09:55:53
7#
您好
建议升级版本,因为这些问题是在较早的AR7中出现的,已经在新版中修复了。
关于空白页的Workaround:
1) 不设置rpt2 的 CacheToDisk .
2) 使用 Clone方法,来复制 Pages(Page) to rpt1.
rpt1.Document.Pages.AddRange(rpt2.Document.Pages.Clone() as PagesCollection);

回复 使用道具 举报
adolfgzb
初级会员   /  发表于:2021-2-8 11:11:27
8#
你好,我试了把CacheToDisk  去掉,大数据的时候run会直接内存溢出,我再试下优化看看吧。
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2021-2-8 12:09:20
9#
好的您在尝试下。
回复 使用道具 举报
adolfgzb
初级会员   /  发表于:2021-2-8 13:19:55
10#
上面的办法不行,AddRange的时候用clone内容,会导致内存溢出System.OutOfMemoryException
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部