多片扩展
一、报表实例
我们看下面这个报表:
这是一个很常见的主子报表,主表和子表往往存储在不同的物理表中,而且通常是一对多的关系。在一般的报表工具中,这种报表往往利用专门的子表控件来实现,虽然功能实现了,但是存在的缺点是:主子表之间不容易共享数据,不容易进行表间数据的运算。快逸报表利用其多源关联分片模型,很轻松地在单个报表中实现了主子表的功能。
二、设计过程
1、引用数据集demo_zhubiao(如下图),demo_运货商
定义数据集ds21
ds21:select 订单ID,产品ID,单价,折扣比例,数量 from DEMO_ORDERDETAILS
2、编辑报表
(1)B2单元格表达式:=demo_zhubiao.dselect(订单ID)
(2)D2单元格表达式:=date(demo_zhubiao.发货日期),显示格式:yyyy年MM月dd日
(3)F2单元格表达式:=date(demo_zhubiao.到货日期),显示格式:yyyy年MM月dd日
(4)B4单元格表达式:=demo_zhubiao.客户ID
(5)F4单元格表达式:=demo_zhubiao.货主名称
(6)B5单元格表达式:=demo_zhubiao.运货商ID,显示值表达式:demo_运货商.select1(COMPANYNAME,value()==SHIPPERID)
(7)D5单元格表达式:=demo_zhubiao.运货费,显示格式:¥#0.00
(8)F5单元格表达式:=demo_zhubiao.货主城市
(9)B8单元格表达式:=ds21.select(产品ID,false,订单ID==B2,,true)
(10)C8单元格表达式:=ds21.单价,显示格式:¥#0.00
(11)D8单元格表达式:=ds21.折扣比例,显示格式:#0.00
(12)E8单元格表达式:=ds21.数量
(13)F8单元格表达式:=C8*E8,设置显示格式为:¥#0.00
(14)设置A10单元格行后分页
3、设置左主格属性
将A1~A10单元格的左主格设为B2单元格。
4、保存预览
此报表保存为“客户订单”,预览结果如下:
三、小结
本节的报表为一对多分片报表,上面的主表是自由格式报表,为订单的一些信息;下面的子表是网格式报表,为与主表的订单对应的订单明细。两个不同格式的报表分片展示,每个订单号的所有产品也都显示出来,实现了一对多的概念。
这个例子中,左主格是人为指定的,并不是缺省的,这用到了主格认定规则。
主格认定规则
1. 缺省主格认定
单元格横向扩展时,上方横向扩展单元格缺省为它的上主格,下方单元格缺省为它的附属格;如果上方没有横向扩展格,则上主格缺省为`0 格。
单元格纵向扩展时,左边纵向扩展单元格缺省为它的左主格,右边单元格缺省为它的附属格;如果左边没有纵向扩展格,则左主格缺省为`0 格。
2. 人为改变主格规则
除了上面提到的缺省情况外,快逸报表允许人为地改变单元格的主格。可以将某个单元格的左主格设置为某个纵向扩展格、上主格设置为某个横向扩展格,左主格和上主格是分别设置的。
为了符合扩展变化的规则,人为设置主格需要满足上一章介绍的主格设置注意事项。
课后练习:
1、制作如下图所示的多片扩展报表:
2、制作如下图所示的多片扩展报表: