历史版本22 :嵌入式主子报表 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

嵌入式主子报表特点是在单元格中嵌入独立的报表模板,嵌入的模板称为「子报表」,嵌入子报表后的整体称为「主报表」。

各子报表格式可以不对齐,子表与主表的格式也可以不对齐,子报表能够获取主表中的值。如下图员工销售一览表:

222

2. 示例编辑

2.1 制作主报表

2.1.1 设计表格

新建普通报表,设计主表如下图所示:

Snag_13b7f55.png

注:根据实际情况将行 3 和行 5 的行高增高,否则只能显示部分数据。

2.1.2 添加参数

点击「模板>模板参数」,在主表中添加一个参数,双击参数名修改为「销售员」,通过参数查询某一个销售员的个人信息及订单信息。

Snag_14242a8.png

2.1.3 添加下拉框控件

点击编辑参数界面,点击「全部添加」,在参数面板上生成控件,参数控件选择「下拉框控件」,最后调整组件位置,步骤如下图所示:

image.png

2.1.4 设置控件默认值

1)选中「下拉框控件」,控件名称修改为「销售员」,控件值默认为字符串「张颖」,即默认查询张颖的个人信息及订单信息。

2)点击数据字典设置,选择数据库 FRDemo 中的雇员表,实际值为「雇员 ID」 列,显示值为「姓名」列,此处使用列序号分别为 1 列和 2 列。

步骤如下图所示:

1607676144454433.png

2.2 制作子报表 1

2.2.1 准备数据

新建普通报表,新建数据库查询 ds1,SQL 查询语句为:SELECT * FROM 雇员 where 雇员ID = ${ID}。通过参数 ID 查询出对应销售员的个人信息。

1607677368337736.png

2.2.2 设计表格

设计表格如下图所示:

1607677611657756.png

完成后保存报表。

2.3 制作子报表 2

2.3.1 准备数据

新建普通报表,新建数据库查询 ds1,SQL 查询语句为:SELECT * FROM 订单 where 雇员ID = ${销售员} and strftime('%Y',订购日期)='2011'。通过参数「销售员」查询出对应销售员订购日期在 2011 年的订单信息。

1607677368337736.png

2.3.2 设计表格

设计表格如下图所示:

1607678393124410.png

完成后保存报表。

2.4 嵌入子报表

1)打开主报表,右击主报表 B3 单元格,选择「单元格元素>插入子报表」,如下图所示:

Snag_186bf5f.png

2)在弹出的编辑子报表对话框中,选择子报表 1 所在路径。添加参数 ID (子表中的参数名称),值为公式 $销售员,将主表的销售员参数值传递给子表 1 的 ID 参数,如下图所示:

Snag_189872a.png

3)右击主报表 B5 单元格,选择「单元格元素>插入子报表」,在弹出的编辑子报表对话框中,选择子报表 2 所在路径。

由于子报表 2 的参数名与主报表中的参数名相同,此时可以不设置传递参数,直接选择继承报表的参数,如下图所示:

Snag_18d38f7.png

2.5 效果预览

保存报表,点击「分页预览」,效果如下图所示:

4CB8DA55-B8BA-4D6E-8120-31A8006ADCB4.GIF

注:移动端不支持。

3. 模板下载编辑

已完成模板可参见:

主报表:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\MasterReport\嵌入式主子表主报表.cpt

子报表1:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\MasterReport\嵌入式主子表子报表1.cpt

子报表2:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\MasterReport\嵌入式主子表子报表2.cpt

点击下载模板:

嵌入式主子表主报表.cpt

嵌入式主子表子报表1.cpt

嵌入式主子表子报表2.cpt

4. 注意事项编辑

4.1 嵌入的子报表与主报表单元格边界问题

4.1.1 问题描述

当在主报表中嵌入子报表的单元格设置边框时,预览效果中子报表与单元格的左边界无法对齐,如下图所示:

4.1.2 原因分析

因为单元格的「单元格属性>样式>对齐」默认左右会自动缩进,所以预览时,嵌入的子报表与主报表单元格的左边界无法对齐。如下图所示:

Snag_1a6da3e.png

4.1.3 解决方案

将「单元格属性>样式>对齐」左右缩进改为 0 即可。效果如下图所示:

注:不支持子报表自动填充整个单元格。