以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- raisedatacolchanged与日志 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=87400) |
-- 作者:lk15502 -- 发布时间:2016/7/11 8:18:00 -- raisedatacolchanged与日志 库存表有一列“库存时间”,根据“入库日期”由代码计算而得,为保证数据每天更新,在项目事件afteropenproject中加入了raisedatacolchanged语句,然后做了一个数据操作日志,会在产生大量涉及“入库日期”,“库存时间”的数据,怎么屏蔽这些,或者有什么其他思路? |
-- 作者:Hyphen -- 发布时间:2016/7/11 8:39:00 -- 数据操作日志是怎样做的,具体上代码或者例子说明 |
-- 作者:lk15502 -- 发布时间:2016/7/11 8:41:00 -- 全局表事件datacolchanged If e.DataTable.Name <> "数据操作日志" Then Dim dr As DataRow = DataTables("数据操作日志").AddNew Select Case e.DataTable.name Case "入库表" dr("用户") = User.Name dr("涉及表") = e.DataTable.Name dr("涉及列") = e.DataCol.Name dr("涉及行") = e.DataRow("_Identify") dr("时间") = Date.Now dr("涉及编号") = e.DataRow("入库编号") dr("操作") = """" & e.OldValue & """ 改成了 """ & e.NewValue & """" Case "库存表" dr("用户") = User.Name dr("涉及表") = e.DataTable.Name dr("涉及列") = e.DataCol.Name dr("涉及行") = e.DataRow("_Identify") dr("时间") = Date.Now dr("涉及编号") = e.DataRow("入库编号") dr("操作") = """" & e.OldValue & """ 改成了 """ & e.NewValue & """" Case "出库表" dr("用户") = User.Name dr("涉及表") = e.DataTable.Name dr("涉及列") = e.DataCol.Name dr("涉及行") = e.DataRow("_Identify") dr("时间") = Date.Now dr("涉及编号") = e.DataRow("出库编号") dr("操作") = """" & e.OldValue & """ 改成了 """ & e.NewValue & """" End Select End If |
-- 作者:lk15502 -- 发布时间:2016/7/11 8:43:00 -- datarowadded: If e.DataTable.Name <> "数据操作日志" Then Dim dr As DataRow = DataTables("数据操作日志").AddNew() Select Case e.DataTable.name Case "入库表" dr("用户") = User.Name dr("涉及表") = e.DataTable.Name dr("涉及行") = e.DataRow("_Identify") dr("时间") = Date.Now dr("涉及编号") = e.DataRow("入库编号") dr("操作") = "增加行" Case "库存表" dr("用户") = User.Name dr("涉及表") = e.DataTable.Name dr("涉及行") = e.DataRow("_Identify") dr("时间") = Date.Now dr("涉及编号") = e.DataRow("入库编号") dr("操作") = "增加行" Case "出库表" dr("用户") = User.Name dr("涉及表") = e.DataTable.Name dr("涉及行") = e.DataRow("_Identify") dr("时间") = Date.Now dr("涉及编号") = e.DataRow("出库编号") dr("操作") = "增加行" End Select End If |
-- 作者:lk15502 -- 发布时间:2016/7/11 8:44:00 -- datarowdeleted: If e.DataTable.Name <> "数据操作日志" Then Dim dr As DataRow = DataTables("数据操作日志").AddNew() Select Case e.DataTable.name Case "入库表" dr("用户") = User.Name dr("涉及表") = e.DataTable.Name dr("涉及行") = e.DataRow("_Identify") dr("时间") = Date.Now dr("涉及编号") = e.DataRow("入库编号") dr("操作") = "删除行" Case "库存表" dr("用户") = User.Name dr("涉及表") = e.DataTable.Name dr("涉及行") = e.DataRow("_Identify") dr("时间") = Date.Now dr("涉及编号") = e.DataRow("入库编号") dr("操作") = "删除行" Case "出库表" dr("用户") = User.Name dr("涉及表") = e.DataTable.Name dr("涉及行") = e.DataRow("_Identify") dr("时间") = Date.Now dr("涉及编号") = e.DataRow("出库编号") dr("操作") = "删除行" End Select End If |
-- 作者:lk15502 -- 发布时间:2016/7/11 8:51:00 -- 还在项目事件afteropenproject中加入了raisedatacolchanged语句,打开项目更新库存时间,由此导致产生大量操作日志
|
-- 作者:Hyphen -- 发布时间:2016/7/11 9:12:00 -- datacolchanged再套一个Select Case Case "库存表" Select Case e.DataCol.name Case "入库日期","库存时间" Case Else dr("用户") = User.Name dr("涉及表") = e.DataTable.Name dr("涉及行") = e.DataRow("_Identify") dr("时间") = Date.Now dr("涉及编号") = e.DataRow("入库编号") dr("操作") = "增加行" End Select |
-- 作者:大红袍 -- 发布时间:2016/7/11 9:24:00 -- 以下是引用lk15502在2016/7/11 8:51:00的发言:
还在项目事件afteropenproject中加入了raisedatacolchanged语句,打开项目更新库存时间,由此导致产生大量操作日志
那你就加上
SystemReady = False
raisedatacolchanged语句
SystemReady = True |
-- 作者:lk15502 -- 发布时间:2016/7/11 10:36:00 -- 其他不用作任何改动吗? |
-- 作者:大红袍 -- 发布时间:2016/7/11 10:43:00 -- 以下是引用lk15502在2016/7/11 10:36:00的发言:
其他不用作任何改动吗?
不用。
你也可以在DataColChanged代码,比较e.NewValue是否等于e.OldValue,从而判断是否真实修改了。 |