此章节,我们通过一个网格式填报表的制作快速了解润乾报表填报表的制作到发布的全过程。我们以员工表为例,查询出员工表数据,并对数据进行修改后提交数据库。
首先打开润乾报表设计器,点击【本地应用】à【启动示例数据库】,启动系统自带的demo示例数据库。
再点击【工具】à【数据源】
在打开数据源连接对话框中可以看到系统缺省demo数据源。选中demo数据源,点击右侧的【连接】按钮,连接成功的数据源呈粉色,并且连接状态由[未连接]变为[已连接]。如下图:
再点击【文件】à【新建填报表】,系统生成一张空白填报表。
编辑填报表内容和样式,内容如下图所示:
填报表的单元格分为维度格,数值格,普通格。
一般来说,维度格和数值格即为字段值,普通格为字段名。
自动计算的数值格由其他数值格计算而来,可用于展现计算结果,也可用于数据采集及数据回填。
选中A3单元格,在右侧单元格属性栏中设置A3的单元格类型为维度格:
维度格一般为主键值,且不可被填写,如A3单元格中的数值在WEB端预览后不可被填写。此时A3单元格的左上角会有一个蓝色小三角,如下图。
选中B3-I3单元格,在右侧单元格属性栏中设置B3-I3的单元格类型为数值格。
此时数值格的左上角会有绿色的小三角,如下图。
数值格中的字段值可用于填写,如B3 - I3单元格中的数值在WEB端预览后均可被填写。
点击【填报】à【数据处理】,设置数据来源和数据去向。数据来源把数据从数据库中读取出来,数据去向则是把填报后的新数据回填到数据库。
点击【使用向导生成脚本】,弹出脚本编辑向导对话框,如下图:
点击数据集列表中的按钮,选择数据表(要求demo数据源已连接)。
界面如下:
创建对象步骤如下:
1. “模式名”下拉框中选择“DEMO”模式。
2. “数据表”下拉框中选择“员工表”。
选择完数据表后,字段列表框中会自动列出“员工表”的所有字段,且默认已勾选全部字段。字段选出项为勾选状态时,填报表中才能引用该字段。
3. 在字段列表框选择“编号”作为主键。通常情况下将无重复数据的字段作为主键。注意:数据回填时主键不可为空。
4. 把对象名修改为employee。每一个对象名所对应的数据集可以认为是一个序表。
对象名可自定义,自定义时需与填报表中的对象名保持一致。
设置好之后点击【确定】按钮,系统根据用户配置的数据集信息自动生成数据来源、数据去向和保存对象的旧数据。数据来源和数据去向中脚本语法遵循集算器脚本语法。
数据来源
数据来源中的脚本内容是系统根据向导自动生成的,作用是将填报表展现所需的数据通过变量的形式返回给填报表,如下图:
将填报表展现所需的数据通过对象名employee返回给填报表,然后在填报表单元格中就可以通过对象.字段名获取数据了,例如employee.编号。
数据去向
数据去向中的脚本内容是系统根据向导自动生成的,作用是通过每个字段的表达式,获取填报表单元格中的填报数据,回填到指定的数据表中。
填报表在做更新处理时,会以编号为主键对比新对象 employee 和旧对象 employee_old的数据,然后将差异数据更新到员工表中。
本例中无需对数据来源和数据去向脚本再做任何修改。如果自动生成的脚本不能满足需求,那么可以对脚本进行二次编辑,不过这就要求用户对相关的集算器函数有一定的了解了,这里不再赘述。
保存对象的旧数据
系统根据向导自动生成名为employee的“对象名”和名为employee_old的“保存旧数据的对象名”。
WEB端发布后,填报表数据去向中的初始数据和填报后的数据分别存放在employee_old和employee中。填报完成后点击提交按钮,系统会根据employee_old与employee中的数据对比结果,更新数据去向中对应的数据库。
保存对象的旧数据中“对象名”和“保存旧数据的对象名”均可自定义,自定义时需与脚本中的新对象和旧对象,以及填报表中的对象名保持一致。
数据来源和数据去向的三种模式
数据来源和数据去向分别提供了三种模式:脚本模式、SPL文件模式和多源SQL模式。
不同的需求选用不同的模式:多源SQL模式适用于从数据库存取数,且一个对象对应一个表,不支持多表关联;脚本模式和SPL文件模式也可以从数据库存取数,同时支持多表关联取数、从文件系统中获取数据、动态取数等情况,适用于对集算器脚本有一定了解的用户。
脚本模式可直接编辑脚本,参考制作交叉填报表;
使用向导能自动生成脚本,例如本例;
多源SQL模式的使用,参考多源SQL模式在数据处理中的使用;
脚本内容可存到SPL文件,参考SPL文件模式在数据处理中的使用。
使用脚本或者SPL文件时可根据需求灵活编辑脚本得到所需数据,其语法遵循集算器脚本语法。
编辑A3单元格:=employee.(编号),维度格表达式返回值是维序列,通常是没有重复成员的序列,可以通过对象名.(字段名)获取。此时A3单元格的返回值对应对象employee中的“编号”字段的字段值。该单元格是一个纵向扩展的扩展格。
选中A3单元格,在右侧属性列表的字段名称中输入“employee.编号”。
取数表达式:对象名.字段名,在同片区任意一个普通格内容或者数值格的字段名称属性里引用即可。
此处employee为取数脚本返回的序表变量,表示此块区域的数据都取自employee,也就是数据来源中对象名为employee的数据表。对象employee中的字段名称对应物理表员工表中的同名字段。
WEB预览时B3中的值取自employee.部门,C3中的值取自employee.姓名,D3-I3中的值依次取自employee.性别、employee.出生日期、employee.入职日期、employee.籍贯、employee.工资、employee.应发工资。
由此可见填报表里的每个维度格、数值格的字段名称需与物理表里的字段名一致。
本例中,没有给其他数值格设置字段名称属性,程序会自动将数值格上方的普通格内容作为数值格的字段名称。
设计填报表时,尤其复杂填报表时,可以通过设计器的预览按钮查看填报表的采集结果,以此检查报表设计是否正确:
到此,一个网格式填报表就做好了,保存该填报表为3.1.sht。可以直接WEB端预览(参见WEB预览),也可以在此基础上再增加编辑风格,合法性校验,自动计算和显示格式,具体可参考本章后续章节。