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

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

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

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

要求:

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

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

数据来源:

数据去向:

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

  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 操作。

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

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

相关文章
|
6月前
|
编译器
文件\学生信息录入
文件\学生信息录入
45 3
|
6月前
|
数据采集 DataWorks 监控
DataWorks产品使用合集之数据地图中的信息发生修改,但是业务流程中的表结构没有相应变化,是什么导致的
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
6月前
|
存储 JSON NoSQL
MongoDB 插入文档:轻松管理数据录入与批量导入
MongoDB 插入文档:轻松管理数据录入与批量导入
|
7月前
|
数据管理
宜搭流程中,数据管理批量发起如何成功导入 年-月-日 时:分格式数据 当前数据管理批量发起,Excel文本中编辑时间格式如2023-12-07 20:00,批量导入生成后显示为20231207 00:00,请问如何让时:分正确显示。
宜搭流程中,数据管理批量发起如何成功导入 年-月-日 时:分格式数据 当前数据管理批量发起,Excel文本中编辑时间格式如2023-12-07 20:00,批量导入生成后显示为20231207 00:00,请问如何让时:分正确显示。
198 2
|
数据库
点餐系统新增excel菜品数据批量导入功能
点餐系统新增excel菜品数据批量导入功能
201 0
1_Excel实战_自动录入另一个表格对应的数据
1_Excel实战_自动录入另一个表格对应的数据
314 0
1_Excel实战_自动录入另一个表格对应的数据
|
XML Java 网络安全
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(一)
为了更好地掌握SSH的用法,使用一个纳税服务系统来练手…..搭建SSH框架环境在上一篇已经详细地说明了。
130 0
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(一)
|
Java 网络安全
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(二)
为了更好地掌握SSH的用法,使用一个纳税服务系统来练手…..搭建SSH框架环境在上一篇已经详细地说明了。
168 0
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(二)
|
JavaScript Java 网络安全
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(三)
为了更好地掌握SSH的用法,使用一个纳税服务系统来练手…..搭建SSH框架环境在上一篇已经详细地说明了。
189 0
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(三)
|
Oracle 关系型数据库 Shell
[自制工具]批量后台更新统计信息
Oracle数据库有时需要批量收集数据库的统计信息,如在大量数据迁移或大量数据更新以后,但是收集的时间可能会较长,为了避免网络中断等意外情况可能引起的麻烦,今天调试了这个小脚本,可以分用户批量执行,同时记录执行时间等日志信息,比较实用。
222 0

热门文章

最新文章