# 制作一张填报表的基本步骤 定义报表结构与数据 -> 设置报表类型为填报表 -> 针对填报数据设置更新属性 ->针对填报表单设置填报属性->填报表单预览 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_68af83a9e2c0a84e52eb855e505e8d51_r.png) **定义报表结构与数据:**与普通统计报表的制作方法一样,定义好报表的基本结构与单元格中的数据表达式。如果不需要展示数据只需要录入数据可以不添加数据集。 **设置报表类型为填报表:**将报表的类型设置为填报表。 **针对填报数据设置更新属性:**将单元格与数据库字段进行绑定,控制Web端录入的数据与数据库字段一致。 **针对填报表单设置填报属性:**将需要填报的单元格配置填报属性,例如下拉列表,下拉树,设置自动计算,设置校验等等。 **填报表单预览:**在Web端录入数据并进行提交入库操作。 # 第一张填报表的制作 先按照制作普通统计报表的方法,定义好报表的基本结构与单元格中的数据。 ## 定义报表结构与数据 ### 新建报表 1.新建报表,并添加两个数据集,数据集分别从系统登记好的演示_雇员表(DEMO_EMPLOYEE)和演示_订单表(DEMO_ORDERS)来取数,数据集中的数据对应了填报表中的单元格数据 报表中的数据来自下面数据集: 雇员信息: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_12d19a983ee186bc9f0687dcb5f8b493_r.png) 地区: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_d6de8928bc0d7c6dfdef4b497d9ed202_r.png) ### 设计表样 2.设计报表基本结构与样式 将[A1]--[H1]单元格合并,绘制表样 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_17db3d89583ce46a3ce7288308b91357_r.png) ### 设置取数表达式 3.在相应单元格设置对应取数表达式 **A3单元格中表达式为:**`=雇员信息.Select(雇员ID,false)` **B3单元格中表达式为:**`=雇员信息.销售人员` **C3单元格中表达式为:**`=雇员信息.出生日期` **D3单元格中表达式为:**`=雇员信息.职务` **E3单元格中表达式为:**`=雇员信息.地区` **F3单元格中表达式为:**`=雇员信息.城市` **G3单元格中表达式为:**`=雇员信息.邮政编码` **H3单元格中表达式为:**`=雇员信息.雇佣日期` 定义完成后如下图所示: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_25c915eb0bcef7d4f819df57a66cc0a0_r.png) 如需详细了解普通统计报表的具体制作方法,请参考:[学习制作第一张报表](http://124.133.73.35:8181/docs/sjjc/dyzbb "学习制作第一张报表")。 ## 设置报表类型为填报表 通过设计器菜单工具栏的【填报设置】菜单,进入到报表填报属性设置界面,将【报表类型】属性设置为“普通填报表”或者“行式填报表”,即可将上一步制作好的统计报表转换为填报表: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_4a739ba177ca459d8a5012964478387d_r.png) ## 针对填报数据设置更新属性 针对填报表中需要录入和保存的数据,进一步设置各项更新属性。 更新属性是指表单填报数据提交至服务器后的进一步更新存储方式,如:填报数据更新至数据库表、字段的属性。 使用【增加】按钮,可以新增一个更新属性。对于已有的更新属性,也可以进行重新定义名称、删除、上移、下移等操作。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_bf9714b72e0d4a9a117d242f923219f6_r.png) 可为填报表设置多个更新属性,所以一张填报表中的数据,能够以多种方式进行更新,更多介绍请参考:[更新属性](http://124.133.73.35:8181/docs/sjjc/sjjc-1c5p5mviuvi8g"更新属性")。 ### 更新属性入口 通过设计器菜单工具栏的【填报设置】菜单,进入到报表属性设置界面,将报表类型设置为"普通填报表"或者"行式填报表"。 点击更新属性 下方的【添加】按钮即可增加一条更新属性。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_62a6998df250711ba87508333dfa266b_r.png) ### 更新属性配置 #### 1. 定义属性名称 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_62815d54475e6b82dc4cad65e5d8171e_r.png) #### 2. 设置更新格 更新格即更新属性设置所在的单元格,有扩展属性的填报表单需要将更新格设置为扩展属性所在的单元格,没有扩展属性的填报表单更新格可以任意选择其中一个单元格。更多更新格介绍请参考:[更新属性](http://124.133.73.35:8181/docs/sjjc/sjjc-1c5p5mviuvi8g"更新属性")。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_0420bce5f96a737a79b1f5185c3c99ba_r.png) #### 3. 选择数据去向 设置更新方式为:数据库表更新 数据源为:demo 模式为:PUBLIC 表名为:DEMO_EMPLOYEE ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_c18b32b2430f8ea68774f7e4e1c7cd87_r.png) >填报表中的数据提交到服务器后,可以有多种数据更新存储的方式。例如,可以选择将填报数据更新至数据库表中,或者使用自定义的方式进行存储。用户可以根据实际业务的需要,灵活选用。 >>可选的数据更新方式包括: >>更新数据库表:将填报数据更新到数据库表中 >>用储存过程更新:将填报数据通过存储过程进行更新处理 >>用自定义类更新:基于接口实现数据更新java类,将填报数据交由自定义的java类完成更新处理,实现更灵活、个性化的数据更新方式 #### 4.将单元格与数据库字段进行绑定 设置单元格数据与数据表字段的对应更新关系,控制Web端录入的数据与数据库字段一致。 设置雇员ID为主键。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_ffa717963e82fef4aaf6890c53e656f2_r.png) >**注意:**更新到数据表的填报数据更新方式,需要设置数据更新的主键字段。主键为报表引擎处理报表提交数据的唯一标识,主键可以是一个字段,也可以是多个字段的联合主键,主键相同的两条记录,后面提交的会覆盖之前提交的。 #### 5.设置提交类型和更新方式 设置提交类型为【智能提交】,勾选【是否更新未修改行】 点击下方【确定】按钮保存最终设置。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_68cc58891b5057ef62e49274063dadc9_r.png) >**注意:**系统默认提交类型为【智能提交】,默认勾选【是否更新未修改行】无特殊情况下此两项不需要修改,采用默认即可。 >> 对于数据库表更新,存在四种提交类型(存储过程更新和自定义更新无此属性),每条更新属性可以设置不同的提交类型 >>1.智能提交:根据主键 insert/update,若为行式报表则还能delete,默认为此方式(报表组暂时只支持智能提交) >>2.删除提交:根据主键 delete(删除页面上显示的数据,与智能提交的删除不同,智能提交是delete页面上少掉的数据) >>3.插入提交:根据主键 insert页面上所有数据 >>4.更新提交:根据主键,执行update页面上修改的数据或delete页面上少掉的数据,不能插入数据 ## 针对填报表单设置填报属性 设置好报表更新属性后,要针对填报表的实际业务要求,给各个单元格设置填报属性。例如哪些单元格可写,哪些单元格只读,可写单元格使用何种编辑风格等等。 >**注意:**单元格是否可写,与此单元格数据是否入库没有直接关系,不可写的单元格数据也是可以提交入库。 单元格填报属性的设置入口: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_12c2548b06aa7fc3dca90f1fb82e2aea_r.png) 本示例中雇员ID是不可写的,其余单元格可写。具体我们按报表的结构顺序说明。 A3单元格是只读的,不可写: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_8408bef2e726f2cf718a1646135b04a6_r.png) B3单元格可写: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_43fd1c8a5af3e80eb025b7723b9c9a5c_r.png) C3单元格可写,并且为其设置的编辑风格为下拉日历,取值类型为年月日时分秒 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_87463961beadb48f24b9ebf3a21088e4_r.png) ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_e6cd4511485a0920de27eaac191cd358_r.png) ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_ea15e6859373e5a33a614a808dda8db0_r.png) D3单元格可写,并且设置不允许为空 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_348a4d51f7aa60bd2022eab373df9d47_r.png) ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_ddb7f2852f05c13d382ab2bd4aa5e3b1_r.png) E3单元格可写,设置编辑风格为下拉数据集,数据集来源于最开始新建的地区数据集,数据列为货主地区,显示列为货主地区。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_67ed480149d10f985f5acdaa4ab71d79_r.png) F3单元格可写,设置编辑风格为下拉数据集,数据集来源于最开始新建的地区数据集,数据列为货主城市,显示列为货主城市。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_5739e75efa97588252f9c57a1b57c8ca_r.png) 设置关联过滤实现城市跟随前面的地区(E3)单元格联动, ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_c4b2fe491ce22e633eb68f4e8460e889_r.png) 1.勾选【排序,关联过滤】选项 2.点击添加按钮 3.设置触发关联过滤单元格:${E3} 4.设置关联过滤表达式:货主地区==${E3}.toString() G3单元格可写,编辑风格为输入框 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_ef22ec24d9e27db7b389d792f960fdfd_r.png) H3单元格可写,编辑风格为下拉日历,取值类型为年月日时分秒 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_cc91c10b7a64ba926a784d6ef35827b9_r.png) ## 保存报表 点击保存,此报表模板保存资源名称为【雇员信息表】 ## 填报表单预览 点击设计界面左上角的预览按钮对报表模板进行查看,在弹出预览窗口前也会对报表进行保存。 除了在设计界面点击预览按钮查看报表之外,我们还可以到保存报表的资源目录下查看报表。 设计界面查看: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_9b145d3a2c1fdc02ebb795207f554638_r.png) 资源列表查看: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_e803a34cca2eb29fc312019e13128b9a_r.png) 报表效果预览如下: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_b35ef2d3da1b484b2f1039f6c7bf4409_r.png)