以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 请教操作日志问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=176136) |
|
-- 作者:xnsiwei -- 发布时间:2022/4/1 4:32:00 -- 请教操作日志问题 操作日志记录代码如下 1、项目事件切换:LoadUserSetting For Each dt As DataTable In DataTables dt.GlobalHandler.DataColChanged = True \'全局表事件DataColChanged事件列数据变化对所有表有效 dt.GlobalHandler.DataRowAdded = True \'全局表事件DataRowAdded事件增加行对所有表有效 Next 2、项目事件加载:AfterOpenProject For Each dt As DataTable In DataTables dt.GlobalHandler.DataColChanged = True \'全局表事件DataColChanged事件列数据变化对所有表有效 dt.GlobalHandler.DataRowAdded = True \'全局表事件DataRowAdded事件增加行对所有表有效 Next 3、项目全局表事件数据变化: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 dr.save End If End If 4、项目全局表事件增加行:DataRowAdded If e.DataTable.Name <> "数据操作日志" Then Dim dr As DataRow = DataTables("数据操作日志").AddNew dr("ID") = e.DataRow("_Identify") 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 dr.save End If 出现问题如下: 1、直接以普通用户登录,操作相关表后无法记录日志 2、直接以普通用户登录,切换到开发者,再切换到普通用户,操作相关表后可以记录日志 3、以开发登录再切换到普通用户,操作相关表后可以记录日志 就是说普通用户直接登录不能记录操作日志 请教版主!! |
|
-- 作者:有点蓝 -- 发布时间:2022/4/1 8:47:00 -- 我测试没有问题 |
|
-- 作者:xnsiwei -- 发布时间:2022/4/1 8:56:00 -- 我的表是动态加载的,有关系吗? |
|
-- 作者:有点蓝 -- 发布时间:2022/4/1 8:59:00 -- 动态加载的,在加载后调用GlobalHandler.DataColChanged = True |
|
-- 作者:xnsiwei -- 发布时间:2022/4/1 9:17:00 -- 把全局代码放到: 3、项目事件加载BeforeLoadInnerTable,动态加载表情况下 For Each dt As DataTable In DataTables dt.GlobalHandler.DataColChanged = True \'全局表事件DataColChanged事件列数据变化对所有表有效 dt.GlobalHandler.DataRowAdded = True \'全局表事件DataRowAdded事件增加行对所有表有效 Next 4、项目事件加载BeforeLoadOuterTable,动态加载表情况下 For Each dt As DataTable In DataTables dt.GlobalHandler.DataColChanged = True \'全局表事件DataColChanged事件列数据变化对所有表有效 dt.GlobalHandler.DataRowAdded = True \'全局表事件DataRowAdded事件增加行对所有表有效 Next 动态加载表后,操作日志问题解决
|
|
-- 作者:xnsiwei -- 发布时间:2022/4/2 9:33:00 -- 1、项目事件加载BeforeLoadInnerTable,动态加载表情况下
2、项目事件加载BeforeLoadOuterTable,动态加载表情况下 二、不放到事件的第一行,起初不加载表的代码有效,但记录不了操作日志 三、测试后解决办法:
[此贴子已经被作者于2022/4/3 4:55:36编辑过]
|
|
-- 作者:yifan3429 -- 发布时间:2022/4/2 9:44:00 -- 在加载后调用怎么做 |
|
-- 作者:xnsiwei -- 发布时间:2022/4/2 10:25:00 -- 把调用代码放在加载代码后面就可 以下内容只有回复后才可以浏览 [此贴子已经被作者于2022/4/3 4:54:30编辑过]
|
|
-- 作者:237756360 -- 发布时间:2022/4/4 18:21:00 -- 学习 |
|
-- 作者:xnsiwei -- 发布时间:2022/4/16 9:19:00 -- 谢谢 |