最新历史版本 :主从表填报 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 问题描述

在实际填报表设计中,主从表是常见的一种填报场景,主表中的一条记录对应从表中的多条记录,例如「订单表」和「订单明细表」,「订单表」的一个订单可能对应「订单明细表」中的多条产品数据,通过「订单 ID」字段进行关联。

像这样数据来自于多个数据源,填报时数据回填到多个表中的报表,也可以称之为多源填报表。

1.2 实现思路

首先通过设置过滤条件,将表与表关联起来,然后通过定义多个内置 SQL 提交将数据回填到不同的数据表中。

2. 示例编辑

2.1 数据准备

新建普通报表,新建两个数据库查询,SQL 查询语句分别为:

ds1:SELECT * FROM 订单

ds2:SELECT * FROM 订单明细

2.2 报表设计

2.2.1 表格样式设计

按照下图所示设置表样,并将对应的数据列拖入到对应的单元格中:

1612490670708972.png

将 B4、B6、B8 单元格的「左父格」均设置为 A3 单元格,其余单元格为默认,即数据均是根据「订单 ID」扩展得来。

2.2.2 单元格设置

1)各单元格添加控件类型如下表所示:

单元格
控件类型
B4、D4、F4、B8、A12下拉框控件
B6、D8、B12~E12数字控件
D6、F6文本控件
F8复选按钮控件
F12、G12按钮控件

2)设置 B4、D4、F4、B8、A12 单元格「下拉框控件」的「数据字典」,并且设置 B4、D4、F4、A12 单元格的「单元格属性>形态」也为「数据字典」,具体设置均如下表所示:

单元格  数据库表 实际值    显示值
B4客户客户ID公司名称
D4雇员雇员ID姓名
F4运货商运货商ID公司名称
B8订单货主城市货主城市
A12产品产品ID产品名称

控件「数据字典」设置如下图:
1612428200475932.png

单元格形态「数据字典」设置如下图:

1612428211688001.png

3)设置 F12 和 G12 的「按钮控件」分别为「插入行」和「删除行」按钮,其指定单元格都为 A12 单元格。如下图所示:

1612428485573471.png

2.2.3 插入公式

在 H12 单元格中插入公式:C12 * D12 * (1 - E12),即:数量*进价*(1-折扣)

在 D8 单元格中插入公式:round(sum(H12) + B6,2)。表示「应付金额」为数量*进价*(1-折扣)+运货费

注:round() 表示应付金额保留两位小数,函数详细解释可参考Round函数

2.2.4 插入行策略

选中 H12 单元格,点击右侧面板「单元格属性>其他」,将插入行策略设置为「原值」,确保单元格公式在插入行时被保留。

1612491371647074.png

2.3 参数设置

1)点击菜单栏「模板>模板参数」,添加一个参数名为 ID 的模板参数,默认值为 10001。如下图所示:

222

2)在参数界面添加参数生成相应控件,控件类型选择为「下拉框控件」,并设置下拉框控件的数据字典:数据库表为「订单」,实际值和显示值均为第 1 列:订单 ID。如下图所示:

1612429401616392.png

2.4 过滤条件设置

双击 A3 单元格,设置过滤条件,条件为普通条件:「订单 ID 」列等于参数 $ID。如下图所示:

1612429555920978.png

双击 A12 单元格,设置过滤条件,条件为普通条件:「订单 ID」 列等于单元格 A3。
1612429694611284.png

2.5 隐藏行列设置

1)A3 单元格只是作为过滤数据使用,不需要展示在页面上,所以需要隐藏。可以直接选中第 3 行的行序号,单击鼠标右键选择隐藏,如下图所示:

1612429951535785.png

也可以通过给 A3 单元格添加一个行高为 0 的条件属性,如下图所示:

1612430151763607.png

2)同样点击 H 列,单击鼠标右键选择隐藏,将 H12 单元格隐藏。

2.6 报表填报属性设置

点击菜单栏「模板>报表填报属性」,按照下图所示给报表增加两个内置 SQL 提交

内置 SQL1:
222

内置 SQL2:
222

2.7 效果预览

2.7.1 PC 端

保存报表,点击「填报预览」,查询订单号为 10001 的数据,效果如下图所示:
1612432113245059.png

修改子表,修改数量与进价,点击提交,提示成功。刷新浏览器,再选择10001,可以看到数据已经改变,如下图:

1612432202735236.png

2.7.2 移动端

App 端和 HTML5 端均支持,效果如下图所示:

Screenshot_20210205_111000.jpg

3. 模板下载编辑

已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\MultiFormReport\主从填报.cpt

点击下载模板:主从表填报.cpt

4. 注意事项编辑

4.1 多个内置 SQL 的执行顺序

若一个填报模板中定义了多个内置 SQL,其执行顺序会按照定义的顺序执行,若在执行其中一个内置 SQL 时出错,会停止下面内置 SQL 的执行并对已执行的内置 SQL 进行回滚,回滚具体请查看 报表填报属性