主从填报表

编辑
文档创建者:文档助手1 (67727 )     浏览次数:11206次     编辑次数:10次     最近更新:ukae 于 2018-04-19     

目录:

1. 问题描述编辑

如下图通过单个报表实现主子表的业务逻辑,上面为订单信息,数据来自订单表;下面是该订单的明细,数据来自于订单明细表,通过订单id进行关联。
修改上方订单信息及明细数据时,数据将分别回填至对应的数据表中。
像这样数据来自于多个数据源,填报时数据回填到多个表中的报表,我们称之为多源填报表。

2. 实现思路编辑

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

3. 示例编辑

3.1 增加数据集
新建工作簿,增加数据集ds1,SQL语句为:SELECT * FROM 订单
再增加一个数据集ds2,SQL语句为:SELECT * FROM 订单明细
3.2 表样设计
按照下图所示设置表样,并将对应的数据列拖入到对应的单元格中:
在D8单元格中填入公式:=round(sum(H12) + B6,2)
注:sum(H12) + B6 表示应付金额为数量*进价*(1-折扣),round(sum(H12) + B6,2)表示应付金额保留两位小数,round函数详细解释请参考Round函数文档。
在H12单元格中填入公式:=C12 * D12 * (1 - E12)
给B4,D4,F4以及A12单元格增数据字典设置
单元格  数据库表  实际值    显示值
  B4  客户  客户ID  公司名称
  D4  雇员  雇员ID  姓名
  F4  运货商  运货商ID  公司名称
  A12  产品  产品  产品名称
以B4为例:
222

3.3 参数设置
点击模板>模板参数,增加一个参数名为ID的报表参数,默认值为10001。
在参数布局界面生成相应控件,设置控件类型为下拉框。
然后属性面板控件设置>数据字典设置下拉框的数据表为订单,实际值和显示值均为:订单ID。
3.4 过滤条件设置
给A3设置过滤条件,过滤为订单ID等于参数$ID。

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

3.5 单元格父格设置
将B4,B6,B8的左父格均设置为A3。
222

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的数据,效果如下:
222
修改子表,修改数量与进价,点击提交,提示成功。刷新浏览器,再选择10001,可以看到数据已经改变,如下图:
222
在线查看模板效果请点击master-sub.cpt
已完成的模板,可参见:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\MultiFormReport\主从填报表.cpt

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

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

附件列表


主题: 填报应用
如果您认为本文档还有待完善,请编辑

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

此页面有帮助吗?