报表开发中,经常会碰到一些需要进行非常规统计的报表,固定分组、可重复分组、组内排序,还包括跨行组计算的报表,甚至有些报表本身无数据来源、以及需要对数据源再计算。这些报表本身具备一定的特殊性,使用常规方法往往难于实现。
集算报表完成这类特殊统计报表则非常简单,这里以一个没有数据源,但展现规则的报表为例,说明集算报表的实现过程。
某报表系统中有部分报表需要按照一定规则显示数据,如:显示查询日期范围内的奇数日数据,要求数据库中即使无记录该日期也显示(内容为空)。
本文重点来实现奇数日期序列,数据区不是重点,故置空。
这个报表的麻烦之处在于需要较复杂的数据计算工作,生成指定区间内的奇数日,而一般报表工具的计算能力较弱,如果采用报表工具本身来完成这个计算工作会比较复杂,比如采用用润乾报表来实现将会是这样的:
使用时要对辅助列A列进行隐藏,以及对第2行进行条件隐藏,偶数的日期不显示。所以报表工具实现要依靠大量隐藏行列。
润乾报表已经是计算能力很强的报表工具了,采用其它报表工具只会更麻烦甚至实现不了。
另一种办法是事先把数据计算准备好,报表工具只需要负责呈现和简单计算。但无论是使用复杂SQL、存储过程和自定义JAVA数据集编程,对于这样的复杂运算(实际情况往往比这个例子更麻烦得多)都是一件工作量很大的事情,而且难以维护。
集算报表本身提供了脚本数据集,可以编写适合结构化计算的脚本,上述报表需求使用集算报表可以这样完成:
使用集算报表编辑器,新建报表模板,设置报表参数,并设置默认值。
新建报表并使用脚本数据集编写计算逻辑,为报表返回计算后结果集:
编辑报表表达式,直接使用集算脚本返回的结果集,完成报表制作。
报表中,只需要通过列表表达式将脚本生成的结果集展示即可。通过简单几步即可完成此类报表的开发,非常方便。
本文出自 “高性能报表数据计算” 博客,请务必保留此出处http://report5.blog.51cto.com/8028595/1574854
原文地址:http://report5.blog.51cto.com/8028595/1574854