反馈已提交

网络繁忙

主从表填报

  • 文档创建者:文档助手1
  • 编辑次数:24次
  • 最近更新:星踪 于 2021-04-28
  • 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。如下图所示:


    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:

    内置 SQL2:

    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 进行回滚,回滚具体请查看 报表填报属性

    附件列表


    主题: 填报应用
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    在线QQ:800049425

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526

    文 档反 馈

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭