累积报表
一、报表实例
先看下面的报表:
预览如下:
这是一个很简单的网格式报表,现在需要在这个报表中增加累积的计算表达式。所谓的累积,就是从第一行起累加到当前行的数值之和,这里我们需要进行累积计算的是E列,该怎么做呢?
二、设计过程
分析:对第一行来说,F2格的值等于E2格,对第二行来说,F2格的值=第一行的F2格+第二行的E2格,对第三行来说,……
结论:累积值=上一行的累积值+当前行需要被累积的值
问题:如何在单元格表达式中表示“上一行的累积值”?从图中的E2可以看出,在设计状态,只有一行单元格,E2格只有一个,扩展后变成了很多行,变成了很多个E2格,因此,在设计状态下要描述扩展后的E2格,是比较困难的。
解决:快逸报表提供了位移坐标的表示法,可以很轻松地描述这种关系。在这个例子中,F2格的表达式可以写成=E2+F2[-1]。
1、定义数据集ds25
demo_雇员订单表:select DEMO_EMPLOYEE.雇员ID,DEMO_EMPLOYEE.销售人员,DEMO_EMPLOYEE.出生日期,DEMO_EMPLOYEE.职务,DEMO_ORDERDETAILS.数量,DEMO_ORDERDETAILS.单价 from DEMO_EMPLOYEE,DEMO_ORDERDETAILS,DEMO_ORDERS where DEMO_ORDERS.订单ID=DEMO_ORDERDETAILS.订单ID and DEMO_EMPLOYEE.雇员ID = DEMO_ORDERS.雇员ID
2、编辑报表
(1)A2单元格表达式:=demo_雇员订单表.dselect(雇员ID)
(2)B2单元格表达式:=demo_雇员订单表.销售人员
(3)C2单元格表达式:=demo_雇员订单表.职务
(4)D2单元格表达式:=demo_雇员订单表.出生日期,显示格式:yyyy-MM-dd
(5)E2单元格表达式:=demo_雇员订单表.Sum(数量*单价),显示格式:¥#,##0.00,缩进:3
(6)F2单元格表达式:=E2+F2[-1],显示格式:¥#,##0.00,缩进:3
3、保存预览
此报表保存为“累积报表”,预览结果如下:
三、小结
1. 位移坐标的简单写法
在没有复杂的主格关系的报表中,位移坐标的简单表示法如下:
语法: Cellx[±n]
说明: 表示当前格Cellx往上位移n格或者往下位移n格,其中+代表往下位移,-代表往上位移。
例:本节的报表实例中,F2[-1]表示当前单元格F2上一行的值。
2. 临时变量的做法
本节的例子中,我们通过位移坐标实现了累计报表。其实,如何取得上一行的累计值,是实现这个报表的关键。通过位移坐标能方便地取得上一行的数据。除此之外,如果能将每一行的累计值保存在某一个变量中,那么,每一行在算累计值的时候就可以直接通过这个变量来计算了。
下面,我们就来看看用临时变量如何实现累计报表。
A1单元格表达式:=a=0,创建一个临时变量a,初始值为0;设置第1行不可视
G3单元格表达式:=a=a+E3,引用临时变量a,每一个扩展行给a重新赋值,将上一行变量a的值+本行奖金的结果赋值给变量a,即实现奖金累计。
预览效果如下: