多源填报表
报表样例
制作如下图所示的多源填报表:
报表特点:
- 填报表分上下两部分,上半部分为订单的主表,下半部分为订单明细子表,这两部分数据分别来自不同的物理表
- 需要将一张填报表填入的数据,同时保存到多张物理表中,并保持数据库事务一致性
报表中的数据主要来自两个数据集,分别从不同的物理表取数。其中第一个数据集从订单表demo_orders取数,sql语法如下:
第一个数据集从订单明细表demo_orderdetails取数,sql语法如下:
制作方法
第一步,新建一个填报表,并新建两个数据集,分别对应订单的主表和订单明细的子表。
第二步,设计报表样式,如下图所示:
第三步,将A1,A2,A3,A4,A5,A6,A7,A8,B9的左主格设为B3,A9的左主格设为B9。关于主格,请参考:主格。
接着,对各单元格设置表达式:
- B3: = demo_订单数据.select(订单ID,false)
- D3: =left(str(demo_订单数据.发货日期),10)
- E3: =left(str(demo_订单数据.到货日期),10)
- B5,F5,B6,D6,F6分别对相应字段使用取值公式
- A9: =&B9
- B9: = demo_sales.select(产品ID,FALSE,订单ID==B3)
- C9,D9,E9,F9分别对相应字段使用取值公式
第四步,设置更新属性,在这个报表中,我们需要把订单主表和订单明细的数据分别回填到两个不同的物理表中,所以该表需要对这两个物理表分别设置一个更新属性。
为订单表设置更新属性:
为订单明细表设置更新属性:
两个更新属性中“订单ID”的更新值都来自B3单元格,从而保持了数据库的事务一致性。
到此,这张主子多源填报表已经具有了填报功能,可以在web上发布进行数据填报。
此外,也还可以进一步添加方便输入的编辑风格和保证输入数据正确性的数据校验。下面接着对这个填报表做进一步完善。
第五步,设置编辑风格。
D3、F3:设置编辑风格为“下拉日历”。
B5:设置编辑风格为“下拉树”,需在报表中增加一个数据集从“客户表”取数,用于设置下拉树编辑风格,详细设置如下图:
B6:设置编辑风格为“下拉数据集”,需在报表中增加一个数据集从“运货商表”取数,详细设置如下图
详细了解各种编辑风格的应用,请参考:编辑风格。
第六步,设置合法性校验。
设置C9,D9,E9的填报数据类型为“数值”,以保证输入的数据不会出现非数字的字符。同时,D9单元格设置数据介于最小值0和最大值1之间,保证输入的折扣数据在0-1之间。
详细了解填报表单元格数据校验的应用,请参考:校验。
第七步,设置自动计算。
F9单元格显示的每个产品的订购总金额,是由该产品的单价和销售数量决定的,所以不需手动输入,而是根据输入的单价和数量,自动计算出总金额。
详细了解填报表单元格自动计算的应用,请参考:自动计算。
第八步,发布预览。
功能点说明
设置多个更新属性
更新属性是指填报数据提交至服务器后的进一步更新存储方式。
一个填报表中可以设置多个更新属性,所以一张填报表中的数据,能够以多种方式进行更新。
在上面的示例报表中,由于主表和子表的数据需要分别保存于不同的物理表,所以可以设置两个更新属性,分别处理主表数据和子表数据更新到不同物理表的相应字段中,实现一张填报表中数据的多源回填。
详细了解填报表更新属性的应用,请参考:更新属性。