以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  外部数据的操作日志代码不执行问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184553)

--  作者:lgz518
--  发布时间:2022/12/13 15:23:00
--  外部数据的操作日志代码不执行问题


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






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("用户") = _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






If e.DataTable.Name <> "操作日志" Then
    Dim dr As DataRow = DataTables("操作日志").AddNew
    dr("ID") = e.DataRow("_Identify")
   \' dr("用户") = User.Name
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


上面代码在内部执行可以,到外部数据源就不行,是哪里错?请帮处理

--  作者:有点蓝
--  发布时间:2022/12/13 15:50:00
--  
外部表没有加载
--  作者:lgz518
--  发布时间:2022/12/13 16:03:00
--  
我查找外部数据库也没有内容
--  作者:lgz518
--  发布时间:2022/12/13 16:04:00
--  
是上面代码执行无效,在内表是可以,在外表就不行
--  作者:有点蓝
--  发布时间:2022/12/13 16:08:00
--  
下面代码只针对已经加载的表,没有加载的表不会执行到的。如果是动态加载的表,或者是sqltable等,在加载后重新调用下面代码

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