1. 概述
1.1 版本
报表服务器版本 |
---|
11.0 |
1.2 应用场景
单表式主子报表一般数据集会有两个以上,分别是主表的数据集和子表的数据集,在展现上,一般要求主表以自由格式展现,子表以列表格式展现,为一对多的关系,子报表可能同时存在多个。
单表式主子报表操作比较方便,而且可以进行数据填报,详情可参见:主从表填报
2. 示例
下面制作一个单表式主子报表作为示例:
该报表的数据分为两个区域展示,分别为「订单统计表」和「订单明细表」。这两个表格都是展示订单相关的数据,即它们都针对同一个对象「订单」,但他们展示的详细订单数据完全不同。我们称「订单统计表」为主表,称「订单明细表」为子表,而这两个表格构成的报表整体称为「单表式主子报表」(命名为「订单数据主子表」)。
2.1 数据准备
新建普通报表,新建两个数据库查询,SQL 查询语句分别为:
ds1:SELECT * FROM 订单
ds2:SELECT * FROM 订单明细
2.2 报表设计
2.2.1 订单统计表
1)按照下面表格中的说明设计「订单统计表」样式:
单元格 | 操作 |
---|---|
A1~D2 | 合并A1~D2单元格,写入标题「订单统计表」,字号12,字体居中,加粗,左父格为 B3 |
A3,A4,C4,A5,C5,A6,A7,C7 | 依次写入字段标题名:订单编号,订单日期,发货日期,客户编号,客户名称,地址,到货日期,应付金额。字体靠左,左父格为 B3 |
B3~D3 | 合并 B3~D3 单元格 |
B4,D4,B5,D5,B6~D6,B7,D7 | 合并 B6~D6 ,给这些空白单元格只添加黑色的外部底框,字体靠左,左父格为 B3 |
注:因为所有数据均依靠 B3 单元格的「订单 ID」查询出来的,所以左父格均为 B3。
给单元格添加黑色的外部底框的方法如下图所示:
设计好的「订单统计表」样式如下图所示:
2)将数据集 ds1 中的相关数据列按照标题字段依次拖入到 B3,B4,D4,B5,D5,B6,B7,D7 单元格中。
3)分别选中 B4,D4,B7 单元格,右边属性面板选择「单元格元素>格式」,设置格式为「日期型 > yyyy-MM-dd」。
4)选中 D7 单元格,右边属性面板选择「单元格元素>格式」,设置单元格格式为「数字 > #0.00」,保留数值小数点后两位。
2.2.2 订单明细表
1)按照下面表格中的说明设计「订单明细表」样式:
单元格 | 设置 |
---|---|
A9~E10 | 合并 A9~E10 单元格,写入标题「订单明细表」,字号12,字体居中,加粗 |
A11~E11 | 依次写入字段标题名:产品,单价,数量,折扣,销售额。字体居中 |
A12~D12 | 依次将数据集 ds2 中的数据列:「产品 ID,单价,数量,折扣」 拖入到对应单元格中。字体居中,设置 A12 单元格的左父格为 B3 |
E12 | 插入公式B12*C12*(1-D12),计算出销售额 |
2)设计好的「订单明细表」样式如下图所示:
2.3 设置过滤
通过给 A12 单元格添加数据过滤条件,建立起数据集 ds1 和 ds2 之间的联系。
双击 A12 单元格,弹出数据列对话框,选择「过滤」。给单元格添加一个普通条件,将 ds2 的「订单 ID」字段与 ds1 的「订单 ID」字段进行绑定,实现两个数据集之间的关联。
条件可以设置为 ds2 的「订单 ID」列等于「单元格 B3」 或者等于「数据列 ds1 订单ID」。
2.4 设置分页
为了让扩展出来的每个「订单 ID」对应的「订单统计表」和「订单明细表」分页展示,需要设置分页。
因为一个「订单 ID」可能对应几个「产品 ID」,即订单明细表扩展的数据可能不止一行,所以此时无法设置「行后分页」,需要在下一页前设置「行前分页」。选中 A1 单元格,右边属性面板选择「单元格属性>其他>分页」,勾选「行前分页」。
2.5 效果预览
2.5.1 PC 端
保存报表,点击「分页预览」,效果如下图所示:
2.5.2 移动端
移动端查看报表的方式请参见 报表移动端预览。
App 端和 HTML5 端均支持,效果如下图所示:
3. 模板下载
已完成模板可参见:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\MasterReport\订单数据主子表.cpt
点击下载模板:订单数据主子表.cpt