报表数据量大时,速度很慢/分组时,页码显示1/1+,2/2+...

realsil 2010-07-07 03:27:05
有两个问题:
1,报表数据几千条时,加载速度要40秒左右,速度很慢~~ 有什么办法可以解决?
目前的想法是一页一页地加载数据,而不是一次性全部加载,可是如何来实现按页加载数据呢?

2,报表根据“部门”来分组,点选某一个部门时,页码不正常,1/1+,2/2+...当点到最后一页时,然后再回过头来,一页一页地翻,又正常了。我有在“节专家”---“组尾”---“在后面页新建页”打勾,可还是不正常,是不是要写些公式什么的?

...全文
276 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
realsil 2010-07-13
  • 打赏
  • 举报
回复
帮顶~~
realsil 2010-07-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 realsil 的回复:]
有两个问题:
1,报表数据几千条时,加载速度要40秒左右,速度很慢~~ 有什么办法可以解决?
目前的想法是一页一页地加载数据,而不是一次性全部加载,可是如何来实现按页加载数据呢?

2,报表根据“部门”来分组,点选某一个部门时,页码不正常,1/1+,2/2+...当点到最后一页时,然后再回过头来,一页一页地翻,又正常了。我有在“节专家”---“组尾”---“在后面页新建页”打勾,可还是不正……
[/Quote]

同问,第1个问题,有回复答案吗?
realsil 2010-07-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 babyt 的回复:]
你是说点击分组后,进入到当前分组的数据显示,在这个分组上的分页?
[/Quote]
是的
阿泰 2010-07-08
  • 打赏
  • 举报
回复
你是说点击分组后,进入到当前分组的数据显示,在这个分组上的分页?
realsil 2010-07-08
  • 打赏
  • 举报
回复
谢谢阿泰~~ ~~

可是我有写:
CrystalReportViewer1.ShowLastPage();
CrystalReportViewer1.ShowFirstPage();

正常显示时是页码是正常的,但点到分组显示时,页码仍然还是1/1+,2/2+。。。
可否直接渲染,显示1/总页数。
阿泰 2010-07-07
  • 打赏
  • 举报
回复
1:几千条数据对于报表来说,不论是聚合类报表还是明细类的,数据量都不算大的。
所以要检查一下你的SQL语句在查询分析器中执行的时间。进行一定的优化。

使用类似于网页表格显示时使用的分页存储过程机制,确实也可以用于水晶报表。

但是比较麻烦,因为要自己处理分页效果
如果对页码,展示效果以及导出效果打印效果有要求的话,还不一定能实现出来

2: 1/1+,2/2+ 这种是水晶报表的一个“优化”机制。
也就是默认只渲染第一页(当前页),在需要的时候再渲染其他页。
所以在开始的时候,它只知道报表有很多页,但是不去实际解析到底有多少页。
因为解析页码,需要实际的页面渲染(不只是总条数除以每页条数那么简单),这都是比较耗费资源的。

要显示这个页码,可以控制viewer跳转到最后一页,然后再跳转回第一页。这样工具栏上就显示全部页码了
不过代价是跳转到最后一页会有个明显的暂停。
CrystalReportViewer1.ShowLastPage();
CrystalReportViewer1.ShowFirstPage();


3:水晶报表的优化,一是要优化SQL脚本。二是要返回尽可能少的数据给报表。
对于一些图表或者只显示聚合结果的,最好是在数据中就先Group By
对于大数据量的清单,水晶报表的速度慢这是个事实,实际上这个时候别的报表也好不到哪里去。
不过,我记得有得报表工具是可以分段获取数据的,这样性能就提升很多了。


另外,如果模板效果比较复杂,如分组,根据一定条件要格式化之类的,也会影响报表的速度
realsil 2010-07-07
  • 打赏
  • 举报
回复
单独跑SQL,很快啊。也就几千条数据~~
雷肿么了 2010-07-07
  • 打赏
  • 举报
回复
40几秒钟? 

 你单独跑SQL 多久能查出来了?
东莞寻香苑 2010-07-07
  • 打赏
  • 举报
回复
同求,我的也很慢

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧