目录

表达式预解析

概念定义

表达式预解析是优化报表运算的重要手段。它是在单元格扩展前把表达式中能计算的先算出来,能定位的先定位,避免扩展后的重复计算

功能背景

由于单元格是扩展的,设计时只有一个单元格,运算后,可能扩展出n个单元格。如果在单元格扩展前先对表达式进行解析,把能够算出来的部分先算,或者需要引用的变量先进行定位,就不需要在扩展后重复的运算n遍,或者对变量定位n次。 举例:

1、 表达式中的常量计算:某个单元格中的表达式为(5-arg1*1)*A1+(3*(arg2+3)/2),其中arg1和arg2为传入的参数值。假设arg1=2,arg2=3,此时如果在报表扩展前进行表达式预解析,这个表达式解析后成了3*A1+9.如果这个单元格扩展了1000次,那么只需要对3*A1+9计算1000次。但是,如果不进行表达式预解析,那么需要对(5-arg1*1)*A1+(3*(arg2+3)/2)计算1000次,相当于(5-arg1*1)和(3*(arg2+3)/2)分别被重复算了1000次。

2、 表达式中的变量引用:某个单元格中的表达式为ds1.colname,其中ds1为数据集的名字,colname为列名。该表达式进行计算时,需要先定位colname为第几个列,从而在列对象存放数组里找到这个列。在报表扩展前进行表达式预解析时,这个表达式被解析成ds1.#n,其中n代表第几个列。这个单元格如果被扩展了1000次,那么这1000次的运算都可以直接定位到列,不需要重复定位

类似的预解析还很多,无法一一穷举,总之,其原则就是利用报表的扩展原理,在单元格扩展前把表达式中能计算的先算出来,能定位的先定位,避免扩展后的重复计算。

使用方法

表达式预解析的控制通过授权文件进行,不需要进行任何配置。