以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]表数据改动日志  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=122439)

--  作者:YDS
--  发布时间:2018/7/25 15:49:00
--  [求助]表数据改动日志
想知道表数据谁在什么时间有改动,DataColChanged增加代码如下,结果就是有改动的时候项目自动卡、然后关闭,是什么原因?要如何解决?

If e.DataRow("Log") > "" Then
    e.DataRow("Log") = e.DataRow("Log") & vbcrlf & vars("用户") & "|" & Date.Now & "|" & e.DataCol.Name
Else
    e.DataRow("Log") = vars("用户") & "|" & Date.Now & "|" & e.DataCol.Name
End If

--  作者:有点甜
--  发布时间:2018/7/25 16:14:00
--  

改成

 

If e.DataCol.Name <> "Log" Then    
    If e.DataRow("Log") > "" Then
        e.DataRow("Log") = e.DataRow("Log") & vbcrlf & vars("用户") & "|" & Date.Now & "|" & e.DataCol.Name
    Else
        e.DataRow("Log") = vars("用户") & "|" & Date.Now & "|" & e.DataCol.Name
    End If
End If


--  作者:YDS
--  发布时间:2018/7/25 16:25:00
--  
非常感谢,忘记这个了
--  作者:YDS
--  发布时间:2018/7/25 16:27:00
--  
Log里面的日志大于多少行或者大于多少字需要删除一下?
--  作者:有点甜
--  发布时间:2018/7/25 16:35:00
--  
以下是引用YDS在2018/7/25 16:27:00的发言:
Log里面的日志大于多少行或者大于多少字需要删除一下?

 

这个你需要根据自己的逻辑设置处理一下。比如记录做多100行数据,超过100行的时候,就把第一行删除。


--  作者:YDS
--  发布时间:2018/7/25 17:02:00
--  
If e.DataCol.Name <> "Log" Then
    If e.DataRow("Log") > "" Then
        e.DataRow("Log") = e.DataRow("Log") & vbcrlf & vars("用户") & "|" & Date.Now & "|" & e.DataCol.Name
        Dim n As Integer = e.DataRow("Log").Split(vbcrif)
        If n > 99 Then
           \' 删除第一行的代码怎么写
        End If
    Else
        e.DataRow("Log") = vars("用户") & "|" & Date.Now & "|" & e.DataCol.Name
    End If
End If

--  作者:有点甜
--  发布时间:2018/7/25 17:17:00
--  

参考代码

 

Dim str As String = "1234" & vbcrlf & "abc" & vbcrlf & "789"
Dim ls As new List(of String)
ls.AddRange(str.replace(chr(10), "").Split(chr(13)))
ls.RemoveAt(0)
str = String.Join(vbcrlf, ls.ToArray)
msgbox(str)