以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]求助在操作日志中记录删除行的信息?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=127733)

--  作者:bashanren
--  发布时间:2018/11/20 21:59:00
--  [求助]求助在操作日志中记录删除行的信息?

 

一、在项目属性的全局表事件中,想在“数据操作日志”中记录删除行的信息,我在“DataRowDeleteting”中写下如下代码,但提示错误,请各位大师帮助修改,谢谢!!

 

If e.DataTable.Name <> "数据操作日志" Then
    Dim dr As DataRow = DataTables("数据操作日志").Delete

    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
End If

 

二、想根据不同用户,限止对不同表格的编辑权限,我在全局事件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
    End If
End If

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:操作日志2017.table


--  作者:有点蓝
--  发布时间:2018/11/20 22:17:00
--  
一、
Dim dr As DataRow = DataTables("数据操作日志").Delete

改为

Dim dr As DataRow = DataTables("数据操作日志").addnew

二、DataColChanged代码能够控制编辑权限?不可能的。


--  作者:有点蓝
--  发布时间:2018/11/20 22:19:00
--  
For Each dt As DataTable In DataTables
    dt.GlobalHandler.DataColChanged = True
    dt.GlobalHandler.DataRowAdded = True
    dt.GlobalHandler.DataRowDeleteting = true
Next

--  作者:bashanren
--  发布时间:2018/11/20 23:31:00
--  

谢谢大师,可下面这段代码提示编译错误,“DataRowDeleteting”不是“GlobalEvents”的成员,该怎么办?

For Each dt As DataTable In DataTables
    dt.GlobalHandler.DataColChanged = True
    dt.GlobalHandler.DataRowAdded = True
    dt.GlobalHandler.DataRowDeleteting = true
Next


--  作者:有点甜
--  发布时间:2018/11/21 8:53:00
--  

改成

 

For Each dt As DataTable In DataTables
    dt.GlobalHandler.DataColChanged = True
    dt.GlobalHandler.DataRowAdded = True
    dt.GlobalHandler.DataRowDeleting = True
Next


--  作者:bashanren
--  发布时间:2018/11/21 13:00:00
--  
谢谢大师,目的达到,问题解决了!!!
--  作者:playmal
--  发布时间:2019/3/10 19:21:00
--  
删除多行如何在日志中记录信息?
--  作者:playmal
--  发布时间:2019/3/10 19:37:00
--  
删除多行时,会报错。
--  作者:有点甜
--  发布时间:2019/3/10 21:02:00
--  
以下是引用playmal在2019/3/10 19:37:00的发言:
删除多行时,会报错。

 

出错实例发上来测试