嵌入式主子报表
规定当子报表进行运算时,从展现布局上看,子报表始终缩在当前格内,或者仅仅把当前格撑大,并不对当前格周边的格子造成影响,这种报表称为嵌入式子报表。
报表特点
嵌入式子报表的特点是在单元格中嵌入独立的报表模板,形成格中嵌表的模式,嵌入的模板称为子报表,嵌入子报表后的整体称为主报表。子报表和主报表的格线可以不对齐,子表间格线也可以不对齐,主报表可以访问子报表的值。子报表在展现、导出和打印时为图片。
报表实例1
预期效果
制作主报表“客户订单统计表”,嵌入子报表“订单明细”。
制作方法
制作主报表
第一步 定义数据集
主报表中的数据集“客户订单”是从产品自带演示数据库的“演示 _ 客户表”取数,数据集sql语法如下:
第二步 制作表样
绘制出报表基本结构:
第三步 定义单元格表达式
设置A3单元格表达式为:=客户订单.Select(客户ID,false)
第四步 设置显示值
选中A3单元格,在报表属性栏的【显示值】中设置表达式:客户订单.select1(联系人,客户ID==value())
第五步 设置行类型
设置表头,实现冻结表头的效果。具体操作如下:
选中第一行,在右侧【行属性】里,将【行类型】设置为头标题。
选中第二行,将【行类型】设置为报表头。
第六步 保存
点击【保存】按钮,再弹出的保存页面设置资源名称、文件名称均为“客户订单统计表”。
制作子报表
第一步 定义数据集
子报表中的数据集“订单明细”是从产品自带演示数据库的“演示 _ 订单表”取数,数据集sql语法如下:
第二步 制作表样
绘制出报表基本结构:
第三步 添加参数
点击菜单栏中的【编辑】—【参数和宏】,打开参数设置页面,点击【添加】按钮添加参数,并修参数名为 guestID 。
第四步 定义单元格表达式
设置取数表达式:
B1:=订单明细.group(year(订购日期),false,客户ID==@guestID)
B2:=订单明细.group(month(订购日期),false)
B3:=订单明细.count()
第五步 设置扩展方式
选中B1单元格,设置扩展方向为“横向扩展”。
第六步 设置显示值
选中B1单元格,设置【显示值】,如下图:
选中B2单元格,设置【显示值】,如下图:
第七步 保存
点击【保存】按钮,再弹出的保存页面设置资源名称、文件名称均为“订单明细表”。
添加子报表
第一步 打开主报表
打开主报表“客户订单统计表”,进入主报表设计界面。
第二步 插入子报表
选中B3单元格,点击菜单栏【插入】-【子报表】,将“引入方式”设为“嵌入式”,“路径”选择子报表“订单明细表”。然后点击参数定义后的【添加】按钮添加参数,对应值表达式为:=A3,设置完成点【确定】按钮。
第三步 保存预览
点击【预览】按钮,保存并预览报表。预览截图如下图:
报表实例2
对于嵌入式子报表,主报表里可以获得子报表特定单元格的值,办法是通过调用eval函数来实现。下面我们在上面嵌入式主子报表的基础上,讲解如何在主表中引用子表特定单元格的值。
预期效果
制作如下图所示的“客户订单统计表2”。
制作方法
1.打开并修改子报表
第一步 打开报表
在“资源中心”界面将“订单明细表”【另存为】“订单明细表2”,点【修改】打开报表。
第二步 调整报表格式
在A4单元格中输入“订单合计”,设置B4单元格的表达式:=sum(B3{})
。
第三步 设置B4上主格
选中B4单元格,展开报表属性栏中的【扩展】,把B4的上主格设为 `0,这样可以使B4单元格汇总的,是B1扩展出来的所有年份的订单合计。
第四步 设置第4行不可视
选中第4行,将第4行的可视属性的打勾去掉,这样预览时就不会显示第4行了。将第4行设为不可视,而不是删除,是因为主报表将引用B4单元格的值。
第五步 保存
保存“订单明细表2”。
2.打开并修改主报表
第一步 打开报表
在“资源中心”界面将“客户订单统计表”【另存为】“客户订单统计表2”,点【修改】打开报表。
第二步 调整报表格式
调整报表结构,如下图所示:
第三步 插入子报表
在B3单元格重新插入子报表“订单明细表2”。
第四步 设置C4单元格表达式
设置C4单元格中的表达式:=eval("B4",B3)
C4单元格表达式的含义是: B3为嵌入式子报表,取得B3中的子报表中B4的值,这样就相当于主报表引用子报表的数据值并汇总。
第五步 保存预览
点击【预览】按钮,保存并预览报表,预览页面如下图所示: