以文本方式查看主题

-  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,从而判断是否真实修改了。