主从填报表

编辑
  • 文档创建者:文档助手1
  • 浏览次数:15557次
  • 编辑次数:17次
  • 最近更新:Kevin-s 于 2019-06-04
  • 1. 问题描述

    如下图通过单个报表实现主子表的业务逻辑,上面为订单信息,数据来自订单表;下面是该订单的明细,数据来自于订单明细表,通过订单 ID 进行关联。

    修改上方订单信息及明细数据时,数据将分别回填至对应的数据表中。

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

    2. 实现思路

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

    3. 示例

    3.1 增加数据集

    新建工作簿,增加数据集 ds1,SQL 语句为:SELECT * FROM 订单

    再增加一个数据集ds2,SQL 语句为:SELECT * FROM 订单明细

    3.2 表样设计

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

    在 H12 单元格中填入公式:=C12 * D12 * (1 - E12)

    在 D8 单元格中填入公式:=round(sum(H12) + B6,2)

    注:sum(H12) + B6 表示应付金额为数量*进价*(1-折扣),round(sum(H12) + B6,2)表示应付金额保留两位小数,round 函数详细解释请参考 Round函数 文档。

    将 B4,D4,F4 以及 A12 等单元格的单元格属性增加 数据字典 设置

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

    以 B4 为例:

    也可以选择列序号确定实际值与显示值,如下图所示:

    3.3 参数设置

    点击模板>模板参数,增加一个参数名为 ID 的报表参数,默认值为 10001。



    在参数布局界面生成相应控件,设置控件类型为下拉框。

    然后属性面板控件设置>数据字典设置下拉框的数据表为订单,实际值和显示值均为:订单 ID。

    3.4 过滤条件设置

    给 A3 设置过滤条件,过滤为订单 ID 等于参数 $ID。




    同时给 A12 设置过滤条件,过滤为订单 ID 等于单元格 A3。


    3.5 单元格父格设置

    将 B4,B6,B8 的左父格均设置为 A3。


    3.6 行高列宽设置

    将 A3 的行高与 H12 的列宽 隐藏

    3.7 单元格编辑属性设置

    下拉框

    设置 B4,D4,F4,A12 等控件为下拉框控件,其数据字典都选择数据库表,选择对应的实际值与显示值。

    复选框

    设置 F8 的控件类型为复选框。

    数字

    设置 B6,B12,C12,D8,D12,E12 的控件类型为数字型。

    文本型

    设置 B14,D6 和F6 的控件类型为文本型。

    按钮

    设置 F12 和 G12 的控件类型分别为插入行以及删除行按钮,其指定单元格都为 A12

    3.8 报表填报属性设置

    按照下图所示给报表增加两个内置 SQL

    内置 SQL1:


    内置 SQL2:


    3.9 效果查看

    点击填报预览,查询订单号为 10001 的数据,效果如下:


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


    在线查看模板效果请点击 master-sub.cpt

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

    4. 多个内置 SQL 的执行顺序

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

    附件列表


    主题: 填报应用
    标签: 暂无标签 编辑/添加标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]