数据采集录入填报时如何只更新当前修改行

简介: 在实际的项目开发中,填报表的应用十分广泛。多数情况下,填报表会作为整个项目的一部分配合需求灵活使用,下面就举例介绍一下。要求:当前用户在页面上修改了某行数据,报表自动将用户名更新到这些行的【操作人】字段,但在报表展现内容中不要显示。

在实际的项目开发中,填报表的应用十分广泛。

多数情况下,填报表会作为整个项目的一部分配合需求灵活使用,下面就举例介绍一下。

要求:

当前用户在页面上修改了某行数据,报表自动将用户名更新到这些行的【操作人】字段,但在报表展现内容中不要显示。

当前报表设计如下,首先实现基本的填报操作:

数据来源:

数据去向:

至此,填报表的基本功能已经实现, 下面我们继续以这个报表为例看一下怎么实现只对修改过的行进行更新。

  1. 报表底端增加辅助格,用于获取用户名。
  1. 在数据回填执行 update 前对要更新的数据做处理。方式如下:

通过对比新旧对象的记录来实现,如果新旧对象不同,则在新对象中保留不同的记录供后面更新使用,如果新旧对象一致则不参与执行更新,以此达到只更新修改行的效果。

注:旧对象保存的是修改前的数据,新对象保存的是修改后的数据。

  1. 具体的数据处理过程如下:

数据来源脚本不做任何修改,数据去向脚本修改如下:

其中:

B1 单元格表达式:=employee.([编号, 部门, 姓名, 性别, 出生日期, 入职日期, 籍贯, 工资]),列出对象 employee 中需要对比的字段;

C1 单元格表达式: =employee_old.([编号, 部门, 姓名, 性别, 出生日期, 入职日期, 籍贯, 工资]),列出对象 employee_old 中需要对比的字段;

2-3 行 使用 for 循环对比 employee 与 employee_old 对象记录并从 employee 中删除两者相同的记录,从而整理出被用户修改的行;

A5 单元格 使用 db.update() 函数实现更新,这里用变量 Operator 模拟后台获取的用户名。

其中,后台获取当前用户名可以参考以下实例:

在报表展现界面 showInput.jsp 中获取用户名,并将其拼接到系统变量 param 中,供更新使用

通过上面的脚本,我们就可以实现只对修改过的行标记【操作人】了。

效果如下:

修改前,操作人为空。

在 Web 端访问报表,修改其中任意几行

然后,在数据库端查询数据,检查一下,我们会发现只有刚才修改过的几行才标记了【操作人】,Bingo!没想到吧,就这么轻松搞定了。

最最后,一定不要忘记把辅助格隐藏起来噢!!!

辅助行,行高设置为 0,这样就完美了。

课外知识扩展

什么是填报表:

通常我们看到的报表基本都是对已有数据的读取展现,但还有一类报表不仅能读取展现数据还可以做增删改的操作并与数据库交互,这类报表我们称为填报表。

填报表的用处有哪些:

作为一种“介质”,如:收集各地区的某项指标数据,供中央汇总统计使用;

作为审核流程的“材料”,如:项目经理填写预算报表,提交后由对应部门审批处理。

填报更新原理:

目前,行式填报表在提交的时会自动对比修改前和修改后的数据:首先对比主键,根据主键是否有新增或缺失确定数据的增删操作;然后再针对前后都有的记录对比每条记录值是否有不同,如有不同则执行 update 操作。

所以,建议数据处理(数据来源、数据去向)中的字段名称与报表中的字段名称个数要保持一致,不然填报更新时就会因新旧对象字段不匹配导致更新失败。

另外细心的你会发现,更新前后的数据是分开编辑的,这样设计有什么好处?容我卖个关子,想了解更多的就关注关注我吧!!!

相关文章
|
3月前
|
人工智能 自然语言处理 BI
草料二维码表单功能:轻松收集和管理数据
表单作为草料二维码的高级功能之一,可用于收集格式统一的数据。你可以通过组合姓名、图片、检查项等组件搭建出电子表单,关联到二维码中,扫码填写表单即可更快速、规范的收集数据。 这些数据保存在账号下形成动态档案,可以导出Excel或PDF进行存档;也可以根据企业要求自定义PDF导出格式。
|
5月前
|
SQL 运维 分布式计算
DataWorks发现通过可视化界面创建表,没有提交生产的按钮啦?现在开发不能提交生产了码?
DataWorks发现通过可视化界面创建表,没有提交生产的按钮啦?现在开发不能提交生产了码?
32 1
|
5月前
|
数据管理
宜搭流程中,数据管理批量发起如何成功导入 年-月-日 时:分格式数据 当前数据管理批量发起,Excel文本中编辑时间格式如2023-12-07 20:00,批量导入生成后显示为20231207 00:00,请问如何让时:分正确显示。
宜搭流程中,数据管理批量发起如何成功导入 年-月-日 时:分格式数据 当前数据管理批量发起,Excel文本中编辑时间格式如2023-12-07 20:00,批量导入生成后显示为20231207 00:00,请问如何让时:分正确显示。
68 2
|
12月前
|
数据库
点餐系统新增excel菜品数据批量导入功能
点餐系统新增excel菜品数据批量导入功能
112 0
|
网络协议 测试技术 Go
收支软件-完善明细显示 | 学习笔记
快速学习收支软件-完善明细显示
62 0
收支软件-完善明细显示 | 学习笔记
1_Excel实战_自动录入另一个表格对应的数据
1_Excel实战_自动录入另一个表格对应的数据
271 0
1_Excel实战_自动录入另一个表格对应的数据
|
数据处理 数据库
简单的EXCEL导入实战(错误数据记录原因,正确数据入库)
简单的EXCEL导入实战(错误数据记录原因,正确数据入库)
1446 0
简单的EXCEL导入实战(错误数据记录原因,正确数据入库)
|
Oracle 关系型数据库 Shell
[自制工具]批量后台更新统计信息
Oracle数据库有时需要批量收集数据库的统计信息,如在大量数据迁移或大量数据更新以后,但是收集的时间可能会较长,为了避免网络中断等意外情况可能引起的麻烦,今天调试了这个小脚本,可以分用户批量执行,同时记录执行时间等日志信息,比较实用。
176 0
|
BI 数据库
填报脚本之轻松搞定复杂表的数据入库
润乾报表,数据校验,脚本校验,集算器
1173 0
|
数据采集 BI 数据库