以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  在保存成功后记录被修改的记录信息  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=188714)

--  作者:xunxun0903
--  发布时间:2023/10/13 10:21:00
--  在保存成功后记录被修改的记录信息
老师 请教
场景:A录入了一行信息,如果A再编辑这条信息,我要记录他修改了列的 原值 和 新值(修改完保存成功才记录)。

我在BeforeSaveDataRow这样写合适吗?


Dim dra As DataRow = DataTables("审计事件").AddNew


dra("GUID") = Vars("_Guid")

dra("用户") = Vars("_Username")

dra("用户名") = Vars("_Chname")


dra.Save


Dim name As New List (Of String) From {"姓名", "用户名", "密码", "用户类型", "创建日期", "禁用", "禁用日期"}

For i = 0 To 6

    Dim dr As DataRow = DataTables("审计_变更明细").AddNew

        dr("GUID") = Vars("_Guid")

        dr("属性名称") = e.DataTable.DataCols(name(i)).Name

        If e.DataRow(name(i)) = e.DataRow.OriginalValue(name(i)) Then

            Else

        dr("变更前") = e.DataRow.OriginalValue(name(i)) 

        dr("变更后") = e.DataRow(name(i)) 

        End If

         dr.Save

Next


DataColChanged 是一只要一修改了就会记录 不知道怎么处理保存后才记录。


--  作者:有点蓝
--  发布时间:2023/10/13 10:29:00
--  
BeforeSaveDataRow事件测试有什么问题?
--  作者:xunxun0903
--  发布时间:2023/10/13 10:36:00
--  
怎么样记录只被修改过的列?未被修改过的我不记录
[此贴子已经被作者于2023/10/13 10:42:22编辑过]

--  作者:有点蓝
--  发布时间:2023/10/13 10:57:00
--  

Dim name As New List (Of String) From {"姓名", "用户名", "密码", "用户类型", "创建日期", "禁用", "禁用日期"}

For i = 0 To name.count- 1

        If e.DataRow(name(i)) = e.DataRow.OriginalValue(name(i)) Then

            Else

    Dim dr As DataRow = DataTables("审计_变更明细").AddNew

        dr("GUID") = Vars("_Guid")

        dr("属性名称") = e.DataTable.DataCols(name(i)).Name

        dr("变更前") = e.DataRow.OriginalValue(name(i)) 

        dr("变更后") = e.DataRow(name(i)) 

dr.save

        End If

Next


--  作者:xunxun0903
--  发布时间:2023/10/13 11:05:00
--  
多谢!