距离上篇文章很久了,回顾一下基础篇,我主要谈到了创建报表时需要注意的几个基础优化技巧。
而本文章主要关注的是,如何在先进的用户体验与优秀的报表性能之间取得平衡,同样以Stimulsoft Reports为例子,以提高报表生成速度和减少报表占用内存为目标。
为了快速报表渲染,我们建议开发中停止使用子报表控件,转而使用数据带区DataBand控件。主要的原因在于渲染子报表时,会创建一个无限高 度的页面,由于页面末尾未知,所以会导致大量的后续检查工作,大大增加了报表的渲染时长。DataBand控件的内容则完全基于主报表,而且 Stimulsoft Reports的DataBand控件经过高度优化,能够与报表引擎完美契合。
Stimulsoft Reports提供了一个叫ReportChecker的小工具,用于检查报表运行中的错误,分析报表,并提供报表中的错误信息、警报的汇总,而且还可以 提供一些常用的解决方法或提示供参考,Report Checker提供的解决方案在很多时候都非常实用,能够大大加快报表渲染速度。这个Chercker真的很好用很智能,是我用过最顺手的了,推荐报错的 时候大家先尝试下Checker的自动修复。
和VB中一样,在Stimulsoft Reports的解释模式中不会发现编译,所有时间和内存都不会被使用,这点在报表中使用了大量控件时是非常重要的。使用解释模式绝对能减少内存的占用, 但是相对的也会带来一些问题,比如在这种模式下,无法正确处理复杂的表达式、无法再报表事件中的使用脚本等。
另外一个加速报表创建于减少内存使用的方法是将报表汇编成一个组件——.dll文件。这种方法的优点在于只用编译一次,第二次就可以直接加载已编译完成的报表了。但是如果遇到报表开发工具升级的话,为了报表的稳定性,那就需要重新将报表编译到组件了。
Table是一个复合控件,如果需要渲染复杂的报表,最好使用带区控件来取代表控件,因为Table中包含了一系列的项目,而每个项目在渲染报 表时都需要一系列的检查,这将耗费大量的时间。而且如果报表的结构太复杂的话,Table很有可能会写错。建议在简单的列报表中使用Table控件,而在 复杂结构的大型报表中,还是推荐使用带区控件。