本节将重点介绍累积报表的制作,学习位移坐标的简单写法。
先看下面的报表:
它的数据集为:ds1:
SELECT EMPLOYEE.EID,EMPLOYEE.NAME,EMPLOYEE.GENDER,EMPLOYEE.SALARY FROM EMPLOYEE
其中A2单元格的表达式为:=ds1.select(int(EID):1,,,int(EID))
B2单元格的表达式为:=ds1.NAME
C2单元格的表达式为:=ds1.GENDER,显示值表达式为:=if(value()=="1","男","女")
D2单元格的表达式为:=ds1.SALARY
预览如下:
这是一个很简单的网格式报表,现在需要在这个报表中增加累积的计算表达式。所谓的累积,就是从第一行起累加到当前行的数值之和,这里我们需要进行累积计算的是D列,该怎么做呢?
分析:对第一行来说,E2格的值等于D2格,对第二行来说,E2格的值==第一行的E2格+第二行的D2格,对第三行来说,……
结论:累积值=上一行的累积值+当前行需要被累积的值
问题:如何在单元格表达式中表示“上一行的累积值”?从图D2可以看出,在设计状态,只有一行单元格,D2格只有一个,扩展后变成了很多行,变成了很多个D2格,因此,在设计状态下要描述扩展后的D2格,是比较困难的。
解决:润乾报表提供了位移坐标的表示法,可以很轻松地描述这种关系,参见 位移坐标 用法。在这个例子中,E2格的表达式可以写成=D2+E2[-1],如下图所示:
报表保存为12.2.1.rpx,预览效果:
在没有复杂的主格关系的报表中,位移坐标的简单表示法如下:
语法:
cell[±n]
说明:
表示当前格cell往上位移n格或者往下位移n格,其中+代表往下位移,-代表往上位移
举例:
上例中,我们通过位移坐标实现了累计报表,其实,从上例中,我们也可以发现,如何取得上一行的累计值,是实现这个报表的关键,通过位移坐标能方便取得上一行的数据,除此之外,如果能将每一行的累计值保存在某一个变量中,那么,每一行在算累计值的时候就可以直接通过这个变量来计算了。下面,我们就来看看用临时变量如何实现累计报表。
A1单元格:=a=0,创建一个临时变量a,初始值为0
E3单元格:=a=a+D3,引用临时变量a,每一个扩展行给a重新赋值,将上一行变量a的值+本行奖金的结果赋值给变量a,即实现奖金累计。
预览效果如下: