如果报表携带大量隐藏格,会对其性能影响很大。这是因为大量隐藏格会占用内存、降低运算速度。而且隐藏单元格除了单元格值外,还记录了很多显示属性值,比如:字体、颜色、显示方式等等。虽然单元格隐藏了,但是这些属性还在,而且带着这些属性计算,也会影响计算速度。
下面这个《1997年订单情况统计》报表就是比较典型的隐藏格影响性能的例子:
这个报表的“比去年同期”是指与去年同月份的比值,无对应月份则为空;要求只显示本年数据。
通过格间计算来实现这个报表,需要将1996年的数据也读取到报表单元格中完成比上期、比去年同期的计算,再把1996年的单元格隐藏起来。所以,这个报表的实际单元格数量要比客户看到的多的多。我们可以通过润乾报表的格间计算来看一下具体的实现:
上图可以看到1996年的行也在报表中,只是隐藏起来了。还有“年”列也要隐藏。
可以考虑采用润乾集算报表解决方案,将大量格间计算转移到集算引擎,避免大量隐藏格和显示属性对计算性能的影响。集算报表方案和传统方案的结构对比示意图如下:
具体做法是:在集算器设计计算同期比、上期比的脚本(sales.dfx)如下:
A1:连接数据源demo。
A2:取出两年的订单数据,按照年月汇总、排序,arg_year是脚本的输入参数。
A3:关闭数据连接。
A4:计算比上期,这里注意到使用[-1]来引用上一条记录。
A5:按月份排序。
A6:计算相同月份和上一年的比值,即同期比。
A7:只选出本年数据,通过A8为报表返回结果集。
在润乾集算报表中定义报表参数和集算数据集:
在集算报表设计器中设计报表如下:
运行报表,输入参数即可得到前面的报表。上图中可以看到,报表中没有隐藏格和复杂的公式,设计变得很简单。
时间: 2024-10-09 06:14:31