累积报表- 动态格间运算-报表设计高级教程
目录

累积报表

一、报表实例

先看下面的报表:


   预览如下:

 

这是一个很简单的网格式报表,现在需要在这个报表中增加累积的计算表达式。所谓的累积,就是从第一行起累加到当前行的数值之和,这里我们需要进行累积计算的是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,即实现奖金累计。
预览效果如下: