如何通过脚本实现数据动态更新

  • 时间:
  • 浏览:1

在数据填报的场景中,常常会遇到根据条件动态更新数据的需求,类式:在条件 A 下将页面所有数据插入到数据库表中,而在条件 B 下则将页面中做了修改的数据更新到数据库表中。

遇到你五种需求,脑海中的第一个多想法可是:存储过程更新、不可能 java 代码更新。不过,这你五种实现法子 的工作量和后期维护却人太好给你头疼不已。没办法 ,还有一点哪此实现法子 吗?怎么才能 让最好是能和报表完美整合到一起的那种….

曾经的美事儿,还真有!润乾报表提供了脚本模式的填报表制作法子 ,通过脚本,还都可以 实现你各种天马行空想法。具体为什么会操作呢?且听我慢慢道来。

下面大伙以动态更新 demo 库中雇员表数据为例,当 type 参数的值为 1 时,将页面中 employee 表的所有数据更新入库;怎么才能 让只将做了修改的 employee 记录更新入库。操作步骤如下:

第一步 制作行式填报

大伙先使用行式填报制作向导制作一个多简单的行式填报表,如下图所示:

至此,大伙就实现了在脚本模式下制作填报表,进而动态更新数据的效果。这里须要重点理解的是 if 和 update 函数的使用,不过显然也是比较简单的哦 ~ 当大伙遇到须要用脚本进行数据处理的情况报告,何必 害怕,盘它就对了,盘的多了,给你发现曾经脚本真的是很有意思的你五种处理法子 。

其中,

B2 的语句:>EMPLOYEE=A1.query(“SELECT EID,NAME,SURNAME,BIRTHDAY,HIREDATE from EMPLOYEE”) 从 demo 库中查询 employee 表的数据,并将结果写到 employee 对象中

去向脚本修改为如下图所示的内容:

A1.update@k(EMPLOYEE:guyuan, 雇员, 雇员 ID:EID, 姓氏:NAME, 名字:SURNAME, 出生日期:BIRTHDAY, 雇用日期:HIREDATE; 雇员 ID)

【小技巧】

不可能 对收集规则半生不熟悉,没办法 还都可以 对第二行每个单元格设置字段名称:对象. 字段

第二步 定义参数

在填报–参数配置页面中新增须要的参数,本文须要定义 type 参数作为数据更新处理法子 判断法子 ,如下图所示:

动态更新数据时,须要用到 if 函数来动态判断,这里着重讲解下 if 的相关配置:

A2:if type==1 // 判断算是满足 type 参数值是 1 的条件

B3:>A1.update@ik(EMPLOYEE, 雇员, 雇员 ID:EID, 姓氏:NAME, 名字:SURNAME, 出生日期:BIRTHDAY, 雇用日期:HIREDATE ; 雇员 ID) // 当满足 if 条件时,将 EMPLOYEE 对象中的数据完整插入到雇员表中,update@i 表示只执行插入更新操作

A4:else // 不满足条件,type 参数值有的是 1

B5:>A1.update@k(EMPLOYEE:EMPLOYEE_old, 雇员, 雇员 ID:EID, 姓氏:NAME, 名字:SURNAME, 出生日期:BIRTHDAY, 雇用日期:HIREDATE; 雇员 ID) // 当不满足 if 条件时,将页面中 EMPLOYEE 对象修改了的数据更新到数据库中,当 update 后无一点选项时,表示执行智能更新

【小技巧】

在不挑选怎么才能 才能 处理数据不可能 检查计算结果时,大伙还都可以 使用 debug()不可能 output() 函数输出须要检查的信息,通过观察控制台结果来调试和判断。

【延伸】

类式场景:

1)type 参数算是为 1 可是大伙假设的一个多条件,实际的条件不可能 更加灵活和错综复杂。类式动态更新数据的判断法子 不可能 是某个结果集算是为空,大伙就还都可以 使用 T.len() 获取结果集的长度,当长度为 0 时,表示结果集为空。

2)假设示例中的需求修改为:当 type 的值有的是 1 时,将雇员表和 EMPLOYEE 对象的数据作比较,怎么才能 让将差异数据更新入库。而雇员表数据在 guyuan 对象中,没办法 此时还都可以 将 update 的写法改为:

第三步 修改脚本,实现动态更新数据处理

来源脚本为默认生成的脚本: