以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 数据更新日志 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=113589) |
||||
-- 作者:newsun2k -- 发布时间:2018/1/19 8:45:00 -- 数据更新日志 我想做一个数据更新的日志,记录数据更新前后的情况,及更新人。 原来是用触发器做的。有个缺陷是,不知道数据是哪个用户更新的。 如果在系统里面,每次更新就保存数据更新记录,比较麻烦,涉及表的更新类型太多了: 用户直接更新当前表、更新其他表时更新当前表(有的是通过datatables().save,有的是通过dr.save保存的,或者sqlreplacefor保存) 修改起来涉及面比较广 不知道老师有没有好的方法教我,谢谢。
|
||||
-- 作者:有点甜 -- 发布时间:2018/1/19 9:12:00 -- 1、参考
2、如果用触发器,可以查询客户端信息
http://blog.csdn.net/xiaojia_boke/article/details/40310629
|
||||
-- 作者:newsun2k -- 发布时间:2018/1/19 10:36:00 -- 1、提供的例子中,确实通过replacefor也可以更新数据。 但是有一个比较重要的缺陷,如果改动比较多,尤其是新增一行数据的时候。 会在日志中创建很多行数据,(一个字段对应一行数据),甚至不最后保存,只是中间改动了一下,也会创建一行数据。 这肯定不行啊。 那日志表不得非常巨大? 2、访问sql server都是一个用户,sa.
|
||||
-- 作者:有点甜 -- 发布时间:2018/1/19 10:42:00 -- 1、你可以对新增的行不进行处理;
你可以不在datacolchanged事件处理,你可以在beforesavedatarow事件处理,循环每一行对比,把不同的记录。
2、你可以弄多个用户;
你也可以在触发器记录修改的内容,在foxtable里面记录修改的人员以及时间,两者结合大致确定谁修改了数据。 |
||||
-- 作者:newsun2k -- 发布时间:2018/1/19 10:55:00 -- 1、使用beforeavedatarow,那replacefor更新的时候,不起作用了。 |
||||
-- 作者:有点甜 -- 发布时间:2018/1/19 10:59:00 -- 以下是引用newsun2k在2018/1/19 10:55:00的发言:
1、使用beforeavedatarow,那replacefor更新的时候,不起作用了。
起作用的。只要是前台那里修改的内容,最后保存都会触发beforeSaveDataRow事件 |