Foxtable(狐表)用户栏目专家坐堂 → [求助]如何像系统日志一样记录登录后的所有操作?


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

主题:[求助]如何像系统日志一样记录登录后的所有操作?

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


加好友 发短信
等级:婴狐 帖子:47 积分:481 威望:0 精华:0 注册:2018/1/5 19:09:00
[求助]如何像系统日志一样记录登录后的所有操作?  发帖心情 Post By:2018/1/23 17:37:00 [只看该作者]

 请问下:

如何像系统日志一样记录每个用户登录后的所有操作?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/23 17:39:00 [只看该作者]

下载信息  [文件大小:312.0 KB  下载次数:22]
图片点击可在新窗口打开查看点击浏览该文件:操作日志2017.table

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


加好友 发短信
等级:婴狐 帖子:47 积分:481 威望:0 精华:0 注册:2018/1/5 19:09:00
  发帖心情 Post By:2018/1/25 16:40:00 [只看该作者]

 非常感谢有点甜,我理解了思路:
1)先通过项目属性事件设置全局表事件;
2)通过全局表事件进行仔细设置。

对于表的操作不仅仅是示例的两类,所有的事件应该是都可以设置的吧?

如果用户不小心在修改后把表也保存了,那我如果要恢复数据只能通过对照操作日志一点点修复吗?有其它思路?谢谢


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/25 17:17:00 [只看该作者]

1、所有事件都可以设置,但修改数据基本就只是那几个事件而已。

 

2、恢复数据的问题。日志不是保存了各列的数据么?如果需要恢复,就做个按钮,勾选需要恢复的行,把字符串拆分出来,还原回去。


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


加好友 发短信
等级:三尾狐 帖子:629 积分:4927 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2018/1/27 18:36:00 [只看该作者]

为什么要AfterOpenProject事件加上以下代码,

 

For Each dt As DataTable In DataTables

    dt.GlobalHandler.DataColChanged = True

    dt.GlobalHandler.DataRowAdded = True

Next

还有DataColChanged事件为什么要增加红色部分,如果列状态为锁定,是不是就不添加记录了呢

 

If e.DataTable.Name <> "数据操作日志" Then

    If e.DataRow.RowState = 2 Then

        Return

    Else

        Dim dr As DataRow = DataTables("数据操作日志").AddNew

        dr("ID") = e.DataRow("_Identify")

        dr("用户") = User.Name

        dr("涉及表") = e.DataTable.Name

        dr("涉及列") = e.DataCol.Name

        dr("涉及行") = e.DataRow("_Identify")

        dr("时间") = Date.Now

        dr("操作") = """" & e.OldValue &  """ 改成了 """ & e.NewValue & """"

        Dim str As String = ""

        For Each c As DataCol In e.DataTable.DataCols

            str += c.Name & "=" & e.DataRow(c.Name) & "|"

        Next

        dr("原行数据") = str '这个记录的数据是修改后的数据,并不是原行原始的数据

    End If

End If


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


加好友 发短信
等级:三尾狐 帖子:629 积分:4927 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2018/1/27 18:48:00 [只看该作者]

请问如何在每个表的各自行关联各自的操作日志数据呢,我做到两个表后系统就报错,一直还没找到解决的办法,求大师指点妙招,另外如果修改的是电话号码,请问如何中间四位用*代替

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/28 14:40:00 [只看该作者]


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/28 14:41:00 [只看该作者]

以下是引用188802386在2018/1/27 18:48:00的发言:
请问如何在每个表的各自行关联各自的操作日志数据呢,我做到两个表后系统就报错,一直还没找到解决的办法,求大师指点妙招,另外如果修改的是电话号码,请问如何中间四位用*代替

 

请上传具体实例说明你的问题。


 回到顶部