累积报表

阅读(2108) 标签: 累积报表,

本节将重点介绍累积报表的制作,学习位移坐标的简单写法。

一个例子

先看下面的报表:

它的数据集为: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,即实现奖金累计。

预览效果如下: