页面树结构
转至元数据结尾
转至元数据起始

示例

在填报补录的功能中,通常会有一种主子表的填报需求。比如如下的报销表单,绿色是填报的部分。其中上半部分是报销主表,填写报销事宜和总金额;下半部分是报销的明细,记录相关的项目和金额。

保存后数据库中,主表数据如下:

子表数据如下:

 

注意:主子表回写的关键是子表中要包含主表的主键字段。

 


操作步骤

1.准备回写表。

在对应的数据库中新建一个表,命名为“reimburse_main”,该表为回写数据的主表。其结构如下:

  • 字段名称字段含义类型是否主键
    c_name报销人varchar(255)Y
    c_date报销时间datetimeY
    c_matters报销事宜varchar(255)N
    c_total报销金额floatN

在对应的数据库中新建一个表,命名为“reimburse_sub”,该表为回写数据的子表。其结构如下:

  • 字段名称字段含义类型是否主键
    c_name报销人varchar(255)Y
    c_date报销时间datetimeY
    c_project所属项目varchar(255)Y
    c_amount报销金额floatN

      并在数据库管理中把此这两个表添加到对应的数据源下。具体可以参考清单补录的第2步骤。

 

2.创建数据集。

由于主子表的下半部分项目明细,是需要插入行的。所以需要构造一个数据集,在创建电子表格时,将字段拖拽到单元格中,并设置填报属性“可以插入/删除行”,即可实现行的增删

 

创建数据集,查询出子表的字段,并且数据为空数据,如下:

 

数据为空,预览如下:

 

 

3.创建电子表格。

在报表设计器中创建一个电子表格,如下设计,不关联任何数据集注意此示例中报销事宜、项目和金额是需要填写的,因此将填充颜色设置为绿色。


4.设置单元格内容

(1)在C4中输入公式“=ssr_getcurrentusername()”,使报销人自动设置为当前登录用户的用户名

 

(2)在单元格E4中,输入公式“=now()”,并设置单元格格式为“yyyy-mm-dd hh:mm:ss”。使报销时间自动设置为当前时间。

 

(3)“报销事宜”是需要填写的,所以C5单元格不需设置内容

 

(4)在C6单元格中,输入公式“=sum(D10)”,报销总金额由明细计算得到,如下:

 

(5)将步骤2查询中的“项目”字段拖拽到B10单元格中,如下:

 

(6)将步骤2查询中的“金额”字段拖拽到单元格D10中,并设置为“不扩展-汇总-求和”,如下:

 

5.设置主表填报回写

先设置前半部分的主表回写。

(1)点击C5单元格,设置其填报属性为“多行文本”

 

(2)点击工具栏上“回写规则”按钮,新增回写规则,设置回写规则名称为“主表回写”,并选择回写的数据库表为“报销主表”,即步骤1中的“reimburse_main”。

回写规则设置如下,其中报销人和报销时间是主键:

 

 

 

6.设置子表填表回写

接下来设置子表部分的回写。

(1)选择“B10”单元格,设置其填报属性为“单行文本”,并且勾选“可以插入/删除行”

 

(2)选择“D10”单元格,设置其填报属性为数字

 

(3)设置回写规则。点击工具栏上的“回写规则”按钮,再增加一个回写规则,命名为“子表回写”,选择回写的数据库表为“报销子表”,即步骤1中的“reimburse_sub”。

回写规则设置如下,报销人、报销时间是主键,绑定的是主表中的相关单元格,项目字段也作为主键,则一个主表可对应子表多条数据:

 

7.发布预览即可。

      
   

  • 无标签