谢谢老师 !参照论坛例子 代码如下,
在项目中,直接修改对应表里面的数据,可以正常写入新增、修改、删除后操作数据日志
在窗体表中将代码写入对应的窗体表事件后,操作数据 可以正常写入新增、修改、删除后操作数据日志
下述三个表事件代码,
1、有没有办法直接封装在函数里呢?怎么解决提示未定义”e“的问题呢?
2、有没有办法直接对项目所有的表都能够起作用,包含项目表、窗体表、副本表……
项目事件afteropenproject代码如下:
For Each dt As DataTable In DataTables
dt.GlobalHandler.DataColChanged = True
dt.GlobalHandler.DataRowAdded = True
dt.GlobalHandler.DataRowDeleting = True
Next
全局表datacolchanged代码如下:
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
全局表datarowadded代码如下:
If e.DataTable.Name <> "数据操作日志" Then
Dim dr As DataRow = DataTables("数据操作日志").AddNew
dr("uuid") = e.DataRow("uuid")
dr("用户") = User.Name
dr("涉及表") = e.DataTable.Name
dr("涉及列") = Nothing
dr("涉及行") = e.DataRow("_Identify")
dr("时间") = Date.Now
dr("操作内容") = "增加了一行"
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
全局表datarowdeleting代码如下:
If e.DataTable.Name <> "数据操作日志" Then
Dim dr As DataRow = DataTables("数据操作日志").AddNew
dr("uuid") = e.DataRow("uuid")
dr("用户") = User.Name
dr("涉及表") = e.DataTable.Name
dr("涉及列") = Nothing
dr("涉及行") = e.DataRow("_Identify")
dr("时间") = Date.Now
dr("操作内容") = "删除了一行"
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
[此贴子已经被作者于2022/2/10 18:43:30编辑过]