清单报表补录回写是指以清单方式列出报表数据,并对报表数据(可以是多条记录操作)进行修改、增删后回写补录到清单报表对应的数据表中。
用例说明
下面我们以清单报表为例演示下面功能:
- 演示回写报表创建执行的完整流程。参考下面流程图:
- 可以修改多条数据回写不同的记录到回写表中。
- 可以插入/删除行来实现增删数据。
- 回写表和清单报表对应查询使用的是同一张表,则回写成功后刷新报表即可看到回写效果。
操作步骤
实现清单报表数据回写的具体操作步骤如下:
1、创建回写库和回写表:
创建一个"MySQL"类型的名为"writedb"的回写库,在回写库中按照如下规则创建回写表"supplier"。
字段ID | 字段名称 | 类型 | 是否可为空 | 是否主键 |
SupplierID | 供应商ID | char(50) | N | Y |
CompanyName | 公司名称 | char(255) | Y | N |
ContactName | 联系人 | char(255) | Y | N |
Address | 地址 | char(255) | Y | N |
Phone | 电话 | char(50) | Y | N |
2、连接回写库和添加回写表。
在浏览端的"系统管理界面"资源目录区的"数据源"中连接以上创建好的回写库,该数据源连接的名称为"回写"。
并在数据库管理中添加回写表。
3、创建电子表格。基于回写表Supplier创建可视化查询,并在输出字段属性中修改字段别名,如下图:
根据上面查询创建电子表格,属性设置为默认即可,如下图:
此时预览清单报表,其工具栏上无回写相关的按钮,如下图:
4、设置回写规则。
在报表设计器中选择工具栏上 回写规则,弹出"回写规则"对话框。
在"回写规则设置"操作区单击 新增规则 按钮,则会增加一个新的规则"未命名"。如下图
输入回写规则名称,在"数据库"下拉列表中选择"回写",在"表"的下拉列表中选择"DEFAULT.supplier"。
将当前报 表中的数据与回写表中的字段做映射关系,设置回写表中各列回写的值。单击 所有列 按钮,在值区域,则会出现所有列对应的表达式。
我们双击SupplierID字段对应主键单元格。双击或是右键设为主键。
我们可以分别选中所有行,修改其"值"输入对应的单元格。如SupplierID字段对应"A3"单元格。
单击 确定 按钮,完成回写规则的设置。
如此时发布资源,预览数据,可以发现工具栏上出现回写相关按钮,但是双击单元格无法修改数据,并且插入/删除行按钮也是灰掉的,不能使用。
此是点击回写按钮,实际上是不执行回写操作的,我们必须在设置单元格填报属性后,才能修改数据,并在点击回写后写入数据库。
5、设置填报属性。用于设置单元格的数据是否可以修改。
a、设置数据可以修改。
在报表设计器中分别选中B3、C3、D3和E3对单元格,点击工具栏上 填报属性 按钮,则弹出"单元格填报属性"对话框。
在对话框中设置E3单元格为"允许修改",并选择为"单行文本"。如下图:
点击 确定 按钮,完成这些单元格的填报属性设置
b、设置允许插入/删除行。选择A3单元格"供应商编号"对应的单元格,设置其填报属性为"允许修改","数字",勾选"可以掺入/删除行"。如下图。
6、执行回写。完成回写规则和填报设置后设,我们发布报表,在浏览器端打开报表,就可以补录回写数据了。
a、数据修改:双击E5对应的"电话号码"扩展出来的第一行数据,该单元格呈可编辑状态,原来数据为" (010) 65554222",输入新数据为" (010) 888888888"。
单击 保存 按钮,弹出"填写内容保存成功"的信息,成功补录数据,数据库数据发生变化。
此时因为"供应商编号"为主键,主键未发生变化,其后数据发生变化,则相当于更新数据,如下图:数据库数据显示为
因回写表字段和清单表单元格对应字段设置关联一致,报表刷新即可看到数据改变,如下图:
b、插入/删除行,添加一条记录。选中"供应商编号""字段值为1的单元格,则工具栏按钮添加/删除行可用。点击 插入行按钮,则会在1对应行下面添加一个新行。
在新行的"供应商编号"主键列对应的单元格中输入30,其它输入相关文本。如下图:
因为"供应商编号"主键列对应的值"30"是个新值,则相当于更新数据,如下图:数据库数据显示为
因回写表字段和清单表单元格对应字段设置关联一致,报表刷新即可看到数据改变,如下图:
c、插入/删除行,删除一条记录。选中"供应商编号""字段值为30的单元格,则工具栏按钮添加/删除行可用。点击 删除行按钮,则会在30行记录删除。
在点击【保存】按钮。数据则可从数据库中删除。
进行数据库,则可以看到数据库中数据也被删除了。