用户在页面端修改数据时为保证数据的可追溯性,能够在数据表中增长修改人字段,用于保存修改人的信息,追溯数据的有效性。下面就介绍一下如何实现这个需求。数据库
一:填报表制做浏览器
按照用户的需求制做填报表,如“订单信息表”:安全
一、 新建填报表,新增参数:userid,用于接收系统传进来的用户信息。session
二、 在“数据处理”对话框中把“数据来源”设置为使用“脚本”方式,如图:jsp
三、 在“数据处理”对话框中把“数据去向”也设置为使用“脚本”,如图:函数
注意:B2 中 EDITUSER 字段为数据库中的修改人字段,将其赋值为 userid,表示更新时将参数 userid 的值保存到对应字段中。url
四、 制做填报表,以下图:spa
A3 设置单元格类型为维度格,表达式为 =dd.(DDID),dd 为数据来源中定义的数据对象名称,此单元格取表中 DDID 的值,字段名称中设置 dd.DDID。3d
B3~E3 单元格类型设置成数值格,用于填写信息,按照填报表取字段名称规则,B3 单元格默认取其上方单元格为字段名称,因为数据库中存储的是英文字段名“KHID”,和 B2 中的“客户编号”不一致,因此为取出正确数据,在 B3 单元格的字段名称中设置“KHID”,指定单元格字段名称,其他相似。对象
按照客户样式要求调整报表样式,并保存报表便可。
五、 发布报表并设置参数传递
在浏览器中访问该报表,而且在 url 中将用户编号传递给参数 userid,如:http://localhost:6868/demo/reportJsp/showInput.jsp?sht=ddxx.sht&userid=zhangsan
参数能够在 url 中传递,为保证其安全性,用户信息可能存在 session 中,那么在 showInput.jsp 中获取 session 中的用户信息,并传递给报表标签的 params 标签便可,传递格式:参数名称 = 参数值。
报表展示后,格式以下:
页面端修改数据保存后,去数据库端查看数据发现,EDITUSER 字段数据为传入的用户信息,以下图:
实际使用中发现,用户可能只修改了某几条记录,可是数据库中的 EDITUSER 字段的全部数据都会发生变化,而用户需求确定是只更改该用户修改的数据。
问题缘由及解决办法:
前面更新数据采用的是集算脚本中的 update 函数,该函数处理时会根据新旧对象数据进行判断,从而断定处理时是 update、insert 仍是 delete 操做。所以解决办法就是在新旧对象中删除没有修改的数据便可,下面是更改后的数据去向脚本:
B1 中经过 join 函数将两个对象关联在一块儿,此时关联字段是对象中的全部字段,这样能够找到没有修改的数据。
C1 中取出两个对象中全部数据相同 (没有修改的) 的主键字段
A二、B2 中分别从两个对象中根据 C1 的值过滤出没有修改的数据
A三、B3 删除没有修改的数据,这样两个对象中的数据均为用户页面端修改后的数据,再执行 update 操做便可。数据库中数据以下:
可见,只有页面端修改的数据 EDITUSER 字段的值会发生变化,其他不变,这样就能够定位到具体哪些数据被哪些人作了修改。
本例中经过在脚本中对填报对象的数据进行修改,作到了在相应数据表中更新最后修改人字段,而且能精确到他修改的数据。实际应用中也能够增长最后修改时间等,或者在脚本中作更复杂的业务处理。