Foxtable(狐表)用户栏目专家坐堂 → 对用户编辑修改动作的记录跟踪


  共有18162人关注过本帖树形打印复制链接

主题:对用户编辑修改动作的记录跟踪

帅哥哟,离线,有人找我吗?
reachtone
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
对用户编辑修改动作的记录跟踪  发帖心情 Post By:2009/8/22 11:41:00 [显示全部帖子]

    为了实现对每人编辑修改记录的跟踪功能,我在datacolchanged事件中设置了以下事件。

Dim dr As DataRow = e.DataRow
If dr.RowState <> DataRowState.Added '如果不是新增加的行
    dr("操作记录") = dr("操作记录") & Chr(13) & Chr(10) & date.Now & "  【" & User.Name & "】将 〖" & e.DataCol.Name & "〗中的 <" & dr(e.DataCol.Name) & "> 修改成了 <" & e.NewValue & ">"
End If

    我本来的想法是,只要在表中修改了数据,或者通过查找替换等方式修改了数据,都在“操作记录”中记录相关内容。但郁闷的是,现在只要在表中修改数据,项目就会崩溃。看这个例子,只有几行数据而已。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

[此贴子已经被作者于2009-8-22 12:55:31编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/8/22 12:40:00 [显示全部帖子]

以下是引用czy在2009-8-22 12:28:00的发言:
这是正常的,正确应该是:

'跟踪每个人的编辑修改记录
Dim dr As DataRow = e.DataRow
if e.DataCol.Name <> "操作记录" Then
    If dr.RowState <> DataRowState.Added '如果不是新增加的行
        dr("操作记录") = dr("操作记录") & Chr(13) & Chr(10) & date.Now & "  【" & User.Name & "】将 〖" & e.DataCol.Name & "〗中的 <" & dr(e.DataCol.Name) & "> 修改成了 <" & e.NewValue & ">"
    End If
End If

哈哈,厉害,C版就是高手!
如果不加e.DataCol.Name <> "操作记录" 判断的话,该列会永远被修改,从而陷入死循环。
还有个问题,在DataColChanged里好象是得不到原值的,估计要把这个代码放到DataColChanging里了。


 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/8/22 12:45:00 [显示全部帖子]

以下是引用czy在2009-8-22 12:43:00的发言:


没错,老六前不久说过,判断原值只能在DataColChanging事件中。

OK,已经搞定。
多谢C版!


 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/8/22 16:40:00 [显示全部帖子]

以下是引用mr725在2009-8-22 14:44:00的发言:

对楼主和c版的代码增加加一个  if.....end if  。 不然("操作记录") 列中每行因为【& Chr(13) & Chr(10) &】都有个‘小空行’(当然,就希望如此的话,就别加了~  呵呵 )
另外,操作记录 列是不是用一个 操作记录 表来替代更好(还可定期清理掉)。~ 这也有利于恢复到修改前的状况,且第一次保存前根本不需要记录的~ ······对不?

1、在新增行事件中,也做了记录跟踪的设置。这样,在每条记录新增时,都会记录下来几点几分谁新增的这条记录。以后如果有人对该记录进行了修改,就通过这个事件来实现。加换行符号,是为了以后查询跟踪记录时,更有条理。
2、“操作记录”信息是跟着每条记录走的,另建一个表没有必要。客户对数据的安全性要求非常高,这些操作日志是不能清除的(全部由系统自动生成,不许人为编辑)。


 回到顶部