# 报表样例 制作如下图所示的行式填报表: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_96a36ae7e644bea8469f2e7c68980189_r.png) ## 报表特点: - 行式填报表以行作为存储和计算的基本单元,可以边计算边输出,运算速度快 - 行式填报表可以动态的增加、插入、删除数据行而且可以使用自动流水号等。 # 制作方法 第一步,按照制作普通统计报表的方法,设计一张普通报表。详细了解普通报表的具体设计方法可参考:[学习制作第一张报表](http://124.133.73.35:8181/docs/sjjc/dyzbb "学习制作第一张报表")。 ## 定义报表结构与数据 ### 新建报表 1.新建报表,并添加数据集,数据集分别从系统登记好的演示_销售表(DEMO_SALESDAY)来取数,数据集中的数据对应了填报表中的单元格数据 报表中的数据来自下面数据集: 销售数据: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_498e3009abd6034c17100036392f453d_r.png) ### 设计表样 2.设计报表基本结构与样式 将[A1]--[H1]单元格合并,绘制表样 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_aa391a9e0188cf05ae893d03b73c9a78_r.png) 设置第一行和第二行为报表头 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_ae3ec854ff6b9e9066e6de0896237164_r.png) ### 设置取数表达式 3.在相应单元格设置对应取数表达式 **A3单元格中表达式为:**`=销售数据.Select(订单ID,false)` **B3单元格中表达式为:**`=销售数据.客户名称` **C3单元格中表达式为:**`=销售数据.订购日期` **D3单元格中表达式为:**`=销售数据.产品名称` **E3单元格中表达式为:**`=销售数据.销售类型` **F3单元格中表达式为:**`=销售数据.地区` **G3单元格中表达式为:**`=销售数据.城市` **H3单元格中表达式为:**`=销售数据.销售数量` **I3单元格中表达式为:** `=销售数据.销售金额` 定义完成后如下图所示: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_c48ba41c77031d46a646979d676e7e38_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_07e8355acdc58606d984ba3ac8a73925_r.png) ### 更新属性配置 #### 1. 定义属性名称 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_a1a5866a8cd059d61df5fd0e2b3772d8_r.png) #### 2. 设置更新格 更新格即更新属性设置所在的单元格,有扩展属性的填报表单需要将更新格设置为扩展属性所在的单元格,没有扩展属性的填报表单更新格可以任意选择其中一个单元格。更多更新格介绍请参考:[更新属性](http://124.133.73.35:8181/docs/sjjc/sjjc-1c5p5mviuvi8g"更新属性")。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_6e59f0c7b769415bcf53c383d00b76f1_r.png) #### 3. 选择数据去向 设置更新方式为:数据库表更新 数据源为:demo 模式为:PUBLIC 表名为:DEMO_SALESDAY ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_b23afba9a5af0beb652667f649c39dc7_r.png) >填报表中的数据提交到服务器后,可以有多种数据更新存储的方式。例如,可以选择将填报数据更新至数据库表中,或者使用自定义的方式进行存储。用户可以根据实际业务的需要,灵活选用。 >>可选的数据更新方式包括: >>更新数据库表:将填报数据更新到数据库表中 >>用储存过程更新:将填报数据通过存储过程进行更新处理 >>用自定义类更新:基于接口实现数据更新java类,将填报数据交由自定义的java类完成更新处理,实现更灵活、个性化的数据更新方式 #### 4.将单元格与数据库字段进行绑定 设置单元格数据与数据表字段的对应更新关系,控制Web端录入的数据与数据库字段一致。 设置订单ID为主键。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_980e0cfe3fd401c159e661efe20a4bf5_r.png) >**注意:**更新到数据表的填报数据更新方式,需要设置数据更新的主键字段。主键为报表引擎处理报表提交数据的唯一标识,主键可以是一个字段,也可以是多个字段的联合主键,主键相同的两条记录,后面提交的会覆盖之前提交的。 #### 5.设置提交类型和更新方式 设置提交类型为【智能提交】,勾选【是否更新未修改行】 点击下方【确定】按钮保存最终设置。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_32ba520436190388e6bef3b4cb9aaa97_r.png) >**注意:**系统默认提交类型为【智能提交】,默认勾选【是否更新未修改行】无特殊情况下此两项不需要修改,采用默认即可。 >> 对于数据库表更新,存在四种提交类型(存储过程更新和自定义更新无此属性),每条更新属性可以设置不同的提交类型 >>1.智能提交:根据主键 insert/update,若为行式报表则还能delete,默认为此方式(报表组暂时只支持智能提交) >>2.删除提交:根据主键 delete(删除页面上显示的数据,与智能提交的删除不同,智能提交是delete页面上少掉的数据) >>3.插入提交:根据主键 insert页面上所有数据 >>4.更新提交:根据主键,执行update页面上修改的数据或delete页面上少掉的数据,不能插入数据 ## 针对填报表单设置填报属性 设置好报表更新属性后,要针对填报表的实际业务要求,给各个单元格设置填报属性。例如哪些单元格可写,哪些单元格只读,可写单元格使用何种编辑风格等等。 >**注意:**单元格是否可写,与此单元格数据是否入库没有直接关系,不可写的单元格数据也是可以提交入库。 单元格填报属性的设置入口: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_10d80effcdded992a761fecf0bf8de3d_r.png) 设置所有单元格的填报属性为可写: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_383b4eb9e94fa6b9829bfc69555c198f_r.png) ## 保存报表 点击保存,此报表模板保存资源名称为【销售数据天报表】 ## 填报表单预览 点击设计界面左上角的预览按钮对报表模板进行查看。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_7bbc6f89de7f50d4e9fd1b05de25b8e7_r.png) 预览效果如下: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_af2dc2248ab5f697901ae0bb666b1427_r.png) 预览界面关闭: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_a201471205e278d9bd5b7443cfbdab7b_r.png) ## 设置行式报表 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_f61788c946b3f2d39e327404fa9e551b_r.png) 预览效果如下: 报表预览页面可以看到工具栏中有添加行和删除行的按钮。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_f1dbe468b358b1dc365b5ee8c3c13eb9_r.png) ## 流水号定义 流水号是一种特殊的自动计算。它按照一定的递增或者递减规则,在当前值的基础上进行递增或者递减计算。流水号只能在行式表单中使用,流水号不一定非得递增或者递减,它还可以不变。 流水号定义界面 流水号的定义界面如下图所示: 设计界面点击【填报设置】按钮进入属性配置页面。 属性配置页面中,点击流水号设置即可进入流水号设置界面, ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_5aa3c357847e9d4c1723a7e97bdbcecf_r.png) 这里定义的流水号名称为ID,流水号的数据类型为字符串,流水号的初值表达式为:销售数据.max(订单ID)。 流水号在刚开始有一个初值,即第一次计算前的当前值,以后就把每一次计算出的新值作为当前值。 在此设置后的流水号变量名,可以在需要用到流水号的单元格流水号表达式中使用 流水号引用界面 选中要引用流水号的单元格,点击【单元格填报】 在可写与流水号tab页 流水号中 设置引用定义好的流水号表达式。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_476ec1f67ca3a098d8961b198450e6e3_r.png) 预览效果如下: 工具栏中点击追加行按钮,可以看到最后一行只后新加了一行,并且订单ID以流水号的形式自动生成了一个。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_295d38ff39af3e5e5fdecdaecf5e76f6_r.png) ## 自动计算 自动计算可以实现在单元格数据发生改变时,自动计算出另外一些单元格数据结果。能帮助用户更高效的完成数据录入,减少手动录入量。例如当用户输入购买商品的单价和数量时,自动计算出商品的总价。 切换到“校验和自动计算”tab页,可进行自动计算设置,提供了公式计算、js计算两种自动计算方式。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_34fddb9d026086e580288167c37f0e91_r.png) 修改【销售数据填报表】在价格列后面新增一列总价。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_9c88bdfd03d1738294e80eb8ba3844b5_r.png) 设置计算公式为数量*价格。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_f21e3f84e4d277844a715055866bcb25_r.png) 预览效果如下: 填报界面中修改数量或者价格所在的单元格 ,对应的总价会立即触发自动计算。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_7b1d24ea9c6e7845c2ed04c0e5fe3ea1_r.png) ## 数据校验 为了避免用户录入不合要求的错误数据,可以设置单元格的校验属性,让填报表对数据进行合法性检查,保证填报数据的规范、准确。 设置单元格校验属性,可以实现以下方式的数据校验: - 表达式校验,基于用户设置的表达式进行数据验证,更灵活 - 填报数据的数据类型验证,例如必须为数值、日期、电子邮箱等等 - 数据范围校验,例如数值必须在某个范围区间 设置客户ID(B3)单元格不允许为空 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_312a6f88ee52afb6c4149108d53a1704_r.png) 设置数量(H3)必须大于等于1且允许为空 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_4c12004f3cdfa4af9085af1550932dbd_r.png) 预览效果如下: 在新加的一行中客户ID为空的情况下会弹出校验提示信息 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_76cba49f7abac2fe37b47f0799bf4c5b_r.png) 数量小于1也会提示报错 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_8510297e29e6b0b2068a77eff0f61161_r.png) ## 设置编辑风格 在录入数据时,很多数据容易录错,或者部分数据的录入很麻烦。例如:对于编码字段,用户往往只知道中文名称,不知道编码值,而且对于中文名称也不可能完全正确录入,此时需要提供中文下拉框选项,供用户下拉选择,之后再对应到编码值上,类似这种帮助用户快速正确录入数据的功能,称为编辑风格。而对于本张示例报表中订购日期、销售类型,地区、城市这种我们完全可以通过设置编辑风格来方便我们进行数据的录入工作。 设置订购日期(C3单元格)编辑风格为下拉日历,取值类型为年月日 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_c9b6dedbe8c04c04ea277352662c1162_r.png) 设置销售类型(E3单元格)编辑风格为列表选择 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_b5c9417aca4014de8f8c44d3b5ffa7c5_r.png) 设置地区(F3单元格)编辑风格为数据集选择,数据集选择销售数据 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_ecf0a3ffc86f9e7e9e01bc40e7f3a163_r.png) 设置城市(G3单元格)编辑风格为数据集选择,数据集选择销售数据 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_8885526124c3c1df7885f945d7bcf9e9_r.png) 设置关联过滤实现城市跟随前面的地区(F3)单元格联动, ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_ae28bf1be617fac4f1b7010dbeb64821_r.png) 1.勾选【排序,关联过滤】选项 2.点击添加按钮 3.设置触发关联过滤单元格:${F3} 4.设置关联过滤表达式:地区==${F3}.toString() 预览效果如下: 下拉日历 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_13b7f51455eb9d652b93ca2d0f10fe42_r.png) 列表选择 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_b787720b87b314e28ece344787040787_r.png) 地区数据集选择 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_d6c6f8d629dcd061c5c024623808a6d3_r.png) 城市数据集选择,关联地区单元格 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_a4c2add22b09a6a5241ca51d6c4a2854_r.png) ## 样式调整 在设计界面可以根据情况调整报表的样式 ,例如字体字号 ,单元格背景色 等。 设置方法: 1.选中要设置的单元格或者行和列 2.设置相关属性 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_127227ad87cb674bd9d1c801d5c8b536_r.png) ## 保存报表 点击保存,此报表模板保存资源名称为【销售数据填报表】 ## 资源列表查看 除了在设计界面点击预览按钮查看报表之外,我们还可以到保存报表的资源目录下查看报表。 报表效果预览如下: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_ceae136432f0d6b0a3404bcea17bf9d7_r.png)