Foxtable(狐表)用户栏目专家坐堂 → 怎么实现项目中的所有表 都可以按照上述规则写入操作日志表 便于数据记录查找呢?


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

主题:怎么实现项目中的所有表 都可以按照上述规则写入操作日志表 便于数据记录查找呢?

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/10 17:02:00 [显示全部帖子]

参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=110215

自己改改代码,和数据合并为符合自己要求的json数据存到日志表即可

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/10 20:32:00 [显示全部帖子]

1、全局表事件本来就已经是共用的。代码也不多,没有必要再放函数。如果要放,把e作为参数传入即可

2、没有办法。

启用全局表事件的代码需要看情况使用:已加载的表放到afteropenproject;窗口sqltable放到窗口afterload;动态加载的表放到加载之后

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/11 10:13:00 [显示全部帖子]

Dim e = args(0)
If e.DataTable.Name <> "数据操作日志" Then
    If e.DataRow.RowState = 2 Then
        Return
    Else
        Dim dr As DataRow = DataTables("数据操作日志").AddNew
        dr("uuid") = e.DataRow("uuid")
        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 = ""
        Dim str1 As String = ""
        For Each c As DataCol In e.DataTable.DataCols
            str += "[" & c.Name & "]=" & e.DataRow.OriginalValue(c.Name) & "|"
            str1 += "[" & c.Name & "]=" & e.DataRow(c.Name) & "|"
        Next
        dr("原始数据") = str
        dr("改后数据") = str1
    End If
End If

全局表datacolchanged代码
Functions.Execute("xx函数",e)

 回到顶部