一个例子
一个例子
先看下面的报表:
它的数据集为:ds1: SELECT EMPLOYEE.EMPID,EMPLOYEE.EMPNAME,EMPLOYEE.SEX,EMPLOYEE.DEGREE,EMPLOYEE.BONUS FROM EMPLOYEE
其中A2单元格的表达式为:=ds1.Select(EMPID,false,,int(EMPID))
B2单元格的表达式为:=ds1.EMPNAME
C2单元格的表达式为:=ds1.SEX,显示值表达式为:=if(value()=="1","男","女")
D2单元格的表达式为:=ds1.DEGREE E2单元格的表达式为:=ds1.BONUS
预览如下:
这是一个很简单的网格式报表,现在需要在这个报表中增加累积的计算表达式。所谓的累积,就是从第一行起累加到当前行的数值之和,这里我们需要进行累积计算的是E列,该怎么做呢?
分析:对第一行来说,F2格的值等于E2格,对第二行来说,F2格的值==第一行的F2格+第二行的E2格,对第三行来说,……
结论:累积值=上一行的累积值+当前行需要被累积的值
问题:如何在单元格表达式中表示“上一行的累积值”?从图E2可以看出,在设计状态,只有一行单元格,E2格只有一个,扩展后变成了很多行,变成了很多个E2格,因此,在设计状态下要描述扩展后的E2格,是比较困难的。
解决:润乾报表提供了位移坐标的表示法,可以很轻松地描述这种关系,参见 位移坐标用法。在这个例子中,F2格的表达式可以写成=E2+F2[-1],如下图所示:
预览效果: