某报表系统中有部分报表需要按照一定规则显示数据,如:显示查询日期范围内的奇数日数据,要求数据库中即使无记录该日期也显示(内容为空)。

wKiom1P8I1zxj_GCAADJWPeHKiU035.jpg

    本文重点来实现奇数日期序列,数据区不是重点,故置空。

    以上述报表需求为例,这里来看一下润乾报表的实现过程,以及改进方法。

润乾报表实现

以下为润乾报表的实现方式,考虑跨年和跨月份的情况:

wKioL1P8JHXD6rOQAAFTM_L2R30354.jpg

使用时要对辅助列A列进行隐藏,以及对第2行进行条件隐藏,偶数的日期不显示。所以报表工具实现要依靠大量隐藏行列。

报表工具实现需要借助隐藏行格完成,主要原因是数据计算和报表呈现混在一起导致,既要完成报表展现,又要兼顾数据计算,往往导致报表计算能力不足。如果能将数据计算和报表呈现剥离开,那么报表开发将更加快捷。

润乾集算报表5.0是在保留原有润乾报表核心功能的情况下,推出的强计算报表工具,其内置的集算器非常适合完成数据计算,从而将报表数据准备和呈现分开。本例的需求采用集算报表实现要简单得多,方法如下:

集算报表实现

编写集算脚本

    首先使用集算器编写计算逻辑,为报表输出两个日期之间的奇数日。

wKiom1P8I17xcuv_AADGsp2v3ns365.jpg

    A1:根据起止日期参数,列出该日期段中的所有日期

    A2:选出奇数日

    A3:为报表返回结果集

   报表调用

    使用集算报表设计器,新建报表,使用“集算器数据集类型,选择上面编辑好的集算脚本(time.dfx

wKiom1P8I1-z8BatAAEDSi19r9Y547.jpg

    设置报表模板及表达式

wKioL1P8JHbB0AkhAAArTY_pzJU491.jpg

    报表中只简单的列表取值即可,无需再完成复杂计算。

    由于集算器对集合运算的有效支持,使得从一个集合(所有日期)中选出部分数据(奇数日)非常容易。不同于在一般报表工具中计算,集算器进行数据计算时不带有任何展现属性,因此效率更高;同时,由于报表端不再包含大量的隐藏格,报表效率得到了进一步提升。

 此外,对于代码很简单的脚本,可以不必独立编辑出脚本文件,而使用集算报表内置的脚本数据集,把脚本直接嵌入到报表模板。方法如下:

    1、在数据集设置窗口中点击“增加”按钮,弹出数据集类型对话框,选择脚本数据集

wKioL1P8JHfAVp-YAACBO0RLf9c855.jpg

    2、在弹出的脚本数据集编辑窗口中编写集算脚本:

wKiom1P8I2Dg4oCEAADvraum9YA666.jpg

    脚本数据集中可以直接使用报表定义的参数,如上述脚本中的beginend即为报表参数。

    3、报表调用,与其他数据集使用方式一致,不再赘述。