预备知识:先做一张多层交叉报表,效果如下图所示:
现在,我们把本章中预备的报表做一些改变,首先,我们在原有数据集的基础上增加如下数据集的定义:
ds2:SELECT 雇员.雇员ID,订单明细.产品ID,雇员.职务,雇员.姓氏||雇员.名字 as 姓名 FROM 雇员,订单,订单明细 WHERE 雇员.雇员ID = 订单.雇员ID AND 订单.订单ID = 订单明细.订单ID ORDER BY 订单.订购日期 ASC
然后在报表下方追加一行,增加一个纵向扩展格,如下图所示:
该报表的预览效果如下图所示:
从上图可以看出,该报表出现了两片纵向扩展区域,这两片纵向扩展区域看起来毫无关系,但是格线严格对齐。下面我们对这个报表继续做改变,在新增加的行中写入计算表达式,如下图所示:
其中:
在A4单元格输入表达式:= ds2.group(职务,false)
在B4单元格输入表达式:= ds2.group(雇员ID,false) 设置显示值为:ds2.姓名
在C4单元格输入表达式:=ds1.sum(数量*单价,雇员ID=B4) 设置显示格式为:¥1234.01
C4格中的表达式为:=ds1.sum(数量*单价,雇员ID=B4)。其含义是:雇员ID为B4单元格的雇员在C2城市的销售额;可以看出,这个表达式既和上表头C2格有关联,又和左表头B4格有关联,我们再看一下预览效果:
从上图可以看出,上下两片本来没有关系的扩展区域,通过C4格的表达式和上表头C2格关联起来,变成了上下两片紧密关联的扩展区域。
现在,我们把第1节中的报表做一些改变,首先,我们在原有数据集的基础上增加如下数据集的定义:
ds3:SELECT 类别.类别ID,类别.类别名称 FROM 类别 ds4:SELECT 产品.类别ID,产品.产品ID FROM 产品
然后在报表右侧追加一列,增加一个横向扩展格,如下图所示:
该报表的预览效果如下图所示:
从上图可以看出,该报表出现了两片横向扩展区域,这两片横向扩展区域看起来毫无关系,但是格线严格对齐。下面我们对这个报表继续做改变,在新增加的行中写入计算表达式,如下图所示:
其中:
在D2单元格输入表达式:=ds4.Group(类别ID,false,类别ID!=null) ,设置显示值为:ds3.getone(类别名称,类别ID==@value) ,扩展方向:横向扩展
在D3单元格输入表达式:=ds1.sum(数量*单价,产品ID in ds4.select(产品ID)),设置显示格式为:¥1234.01
在D4单元格输入表达式:=ds1.sum(数量*单价,产品ID in ds4.select(产品ID) and 雇员ID=B4),设置显示格式为:¥1234.01
D3格中的表达式为:=ds1.sum(数量*单价,产品ID in ds4.select(产品ID))。其含义是:年月为B3时产品ID为D2的产品销售额之和;可以看出,这个表达式既和上表头D2格有关联,又和左表头B3格有关联。
D4格中的表达式为:=ds1.sum(数量*单价,产品ID in ds4.select(产品ID) and 雇员ID=B4)。其含义是:B4单元格的销售员对产品ID为D2的产品销售额之和;可以看出,这个表达式既和上表头D2格有关联,又和左表头B4格有关联。 我们再看一下预览效果:
从上图可以看出,上下两片本来没有关系的扩展区域,通过D3、D4格的表达式和左表头B3、B4分别格关联起来,变成了左右两片紧密关联的扩展区域。
现在,我们把第2节中的报表做一些改变,在报表中分别增加两行两列,如图所示:
接下来我们在新加的行列中增加一些表达式,对不同扩展区域的数据分别进行统计,如图所示:
其中:
在D3单元格输入表达式:=sum(C3{C3>10000}) 设置显示格式为:¥1234.01
在D5单元格输入表达式:=sum(C5{C5>10000}) 设置显示格式为:¥1234.01
在C4单元格输入表达式:=sum(C3{C3>10000}) 设置显示格式为:¥1234.01
在C6单元格输入表达式:=sum(C5{}) 设置显示格式为:¥1234.01
在F3单元格输入表达式:=sum(E3{}) 设置显示格式为:¥1234.01
在F5单元格输入表达式:=sum(E5{}) 设置显示格式为:¥1234.01
在E4单元格输入表达式:=sum(E3{E3>10000}) 设置显示格式为:¥1234.01
在E6单元格输入表达式:=sum(E5{}) 设置显示格式为:¥1234.01
D3格中的表达式为:=sum(C3{C3>10000})。其含义是:订购日期为B3的且销售额大于10000的之和;
F3格中的表达式为:=sum(E3{})。其含义是:订购日期为B3的销售额之和。
从上图可以看出,整个报表横向纵向被分成了好几片单元格,有的是扩展的,有的是固定行的,固定区域和动态扩展区域混合在一起,既互相独立又有一定的数据联系,这种报表就是最典型的多源分片报表。