某报表系统中有部分报表需要按照一定规则显示数据,如:显示查询日期范围内的奇数日数据,要求数据库中即使无记录该日期也显示(内容为空)。
本文重点来实现奇数日期序列,数据区不是重点,故置空。
以上述报表需求为例,这里来看一下润乾报表的实现过程,以及改进方法。
润乾报表实现
以下为润乾报表的实现方式,考虑跨年和跨月份的情况:
使用时要对辅助列A列进行隐藏,以及对第2行进行条件隐藏,偶数的日期不显示。所以报表工具实现要依靠大量隐藏行列。
报表工具实现需要借助隐藏行格完成,主要原因是数据计算和报表呈现混在一起导致,既要完成报表展现,又要兼顾数据计算,往往导致报表计算能力不足。如果能将数据计算和报表呈现剥离开,那么报表开发将更加快捷。
润乾集算报表5.0是在保留原有润乾报表核心功能的情况下,推出的强计算报表工具,其内置的集算器非常适合完成数据计算,从而将报表数据准备和呈现分开。本例的需求采用集算报表实现要简单得多,方法如下:
集算报表实现
编写集算脚本
首先使用集算器编写计算逻辑,为报表输出两个日期之间的奇数日。
A1:根据起止日期参数,列出该日期段中的所有日期
A2:选出奇数日
A3:为报表返回结果集
报表调用
使用集算报表设计器,新建报表,使用“集算器”数据集类型,选择上面编辑好的集算脚本(time.dfx)
设置报表模板及表达式
报表中只简单的列表取值即可,无需再完成复杂计算。
由于集算器对集合运算的有效支持,使得从一个集合(所有日期)中选出部分数据(奇数日)非常容易。不同于在一般报表工具中计算,集算器进行数据计算时不带有任何展现属性,因此效率更高;同时,由于报表端不再包含大量的隐藏格,报表效率得到了进一步提升。
此外,对于代码很简单的脚本,可以不必独立编辑出脚本文件,而使用集算报表内置的脚本数据集,把脚本直接嵌入到报表模板。方法如下:
1、在数据集设置窗口中点击“增加”按钮,弹出数据集类型对话框,选择“脚本数据集”
2、在弹出的脚本数据集编辑窗口中编写集算脚本:
脚本数据集中可以直接使用报表定义的参数,如上述脚本中的begin、end即为报表参数。
3、报表调用,与其他数据集使用方式一致,不再赘述。