规定当子报表进行运算时,从展现布局上看,子报表始终缩在当前格内,或者仅仅把当前格撑大,并不对当前格周边的格子造成影响,这种报表称为嵌入式子报表。

报表特点

嵌入式子报表的特点是在单元格中嵌入独立的报表模板,形成格中嵌表的模式,嵌入的模板称为子报表,嵌入子报表后的整体称为主报表。子报表和主报表的格线可以不对齐,子表间格线也可以不对齐,主报表可以访问子报表的值。子报表在展现、导出和打印时为图片。

报表实例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的值,这样就相当于主报表引用子报表的数据值并汇总。

第五步 保存预览

点击【预览】按钮,保存并预览报表,预览页面如下图所示: