以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如何实现日志功能记录多个编辑人和编辑时间?多谢。  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=91203)

--  作者:ksaa16888
--  发布时间:2016/10/3 9:26:00
--  [求助]如何实现日志功能记录多个编辑人和编辑时间?多谢。

AfterEdit中加入以下代码,编辑人一行只能记录最后一位编辑人员,我想实现日志功能,不同的登录用户编辑了内容,即记录该用户名和编辑时间,该如何实现?多谢。

If e.Row.Isnull("账号")=False Then
    e.Row("编辑人")=user.name
    e.Row("编辑时间")=now
Else
    e.Row("编辑人")=Nothing
    e.Row("编辑时间")=nothing
End If

--  作者:狐狸爸爸
--  发布时间:2016/10/3 9:59:00
--  
If e.Row.Isnull("账号")=False Then
    e.Row("编辑人")=e.Row("编辑人") & user.name
    e.Row("编辑时间")=e.Row("编辑时间") & now
End If

--  作者:ksaa16888
--  发布时间:2016/10/3 11:36:00
--  
再请教下,可以实现?如何实现记录编辑人、编辑时间和编辑内容的日志呢?多谢。 即:编辑人、编辑时间、编辑了什么。
[此贴子已经被作者于2016/10/3 11:41:25编辑过]

--  作者:狐狸爸爸
--  发布时间:2016/10/3 19:16:00
--  
用一个列,列名编辑日志,备注型:

e.Row("编辑日志")=e.Row("编辑日志") &  user.name & “|” & Date.now & "|" e.text & vbcrlf


--  作者:ksaa16888
--  发布时间:2016/10/3 20:45:00
--  
加入到changeedit中:e.Row("编辑日志")=e.Row("编辑日志") & user.name & "|" & Date.now & "|" & e.text & vbcrlf
只记录账号一列(看参数TEST解释,是只记录编辑文本?),测试时也只记录了一个文本列,其他逻辑型等数据编辑变更日志未记录。
[此贴子已经被作者于2016/10/3 21:23:59编辑过]

--  作者:狐狸爸爸
--  发布时间:2016/10/4 8:59:00
--  
afterEdit事件

if e.col.name <> "编辑日志" then
    e.Row("编辑日志")=e.Row("编辑日志") & user.name & "|" & Date.now & "|" & e.text & vbcrlf
end if

--  作者:ksaa16888
--  发布时间:2016/10/4 11:51:00
--  
报未知的编译错误,把e.teXt去掉就OK,AFTERedit说明里面没有TEXT参数。
if e.col.name <> "编辑日志" then
    e.Row("编辑日志")=e.Row("编辑日志") & user.name & "|" & Date.now & "|" & vbcrlf
end if

但一旦这么做了,又没记录编辑内容了。
[此贴子已经被作者于2016/10/4 11:59:46编辑过]

--  作者:狐狸爸爸
--  发布时间:2016/10/5 6:49:00
--  
if e.col.name <> "编辑日志" then
    e.Row("编辑日志")=e.Row("编辑日志") & user.name & "|" & Date.now & "|" & e.row(e.col.name) & vbcrlf
end if

--  作者:客人
--  发布时间:2016/10/5 20:08:00
--  
多谢狐爸,试了下代码,afteredit事件是不是只能记录新值?旧值记录不了?后来我在datacolchanged用以下代码尝试实现,测试了下,感觉好像可以,能帮忙看下是否有问题吗?

Select Case e.DataCol.name
    Case "账号"
        If e.NewValue Is Nothing Then
            e.DataRow("户名") = Nothing
            e.DataRow("机构") = Nothing
            e.DataRow("核准时间") = Nothing
            e.DataRow("是否黑名单")=Nothing
        Else
            e.DataRow("编辑日志") = e.DataRow("编辑日志") & User.Name & " " & Date.Now & "将" & e.DataCol.name & " """ & e.OldValue & """ 修改为 """ & e.NewValue & """" & vbcrlf
            Dim jcxx,rhhz,hmd As DataRow
            jcxx = DataTables("基础数据表").Find("[账号] = \'" & e.NewValue & "\'")
            rhhz = DataTables("核准信息").Find("[账号] = \'" & e.NewValue & "\'")
            If jcxx IsNot Nothing Then
                e.DataRow("户名") = jcxx("户名")
                e.DataRow("机构") = jcxx("机构")
                If rhhz IsNot Nothing Then e.DataRow("核准时间") = rhhz("核准时间")
                hmd=DataTables("黑名单").find("[户名] = \'" & e.DataRow("户名") & "\'")
                If hmd IsNot Nothing Then
                    e.DataRow("是否黑名单")=True
                Else
                    e.DataRow("是否黑名单")=False
                End If
            End If
        End If
    Case Else
        If e.DataCol.name<>"编辑日志" Then
            e.DataRow("编辑日志") = e.DataRow("编辑日志") & User.Name & " " & Date.Now & "将" & e.DataCol.name & " """ & e.OldValue & """ 修改为 """ & e.NewValue & """" & vbcrlf
        End If
End Select

--  作者:ksaa16888
--  发布时间:2016/10/5 20:26:00
--  
多谢狐爸,试了下代码,afteredit事件是不是只能记录新值?旧值记录不了?后来我在datacolchanged用以下代码尝试实现,测试了下,感觉好像可以,能帮忙看下是否有问题吗?

Select Case e.DataCol.name
    Case "账号"
        If e.NewValue Is Nothing Then
            e.DataRow("户名") = Nothing
            e.DataRow("机构") = Nothing
            e.DataRow("核准时间") = Nothing
            e.DataRow("是否黑名单")=Nothing
        Else
            e.DataRow("编辑日志") = e.DataRow("编辑日志") & User.Name & " " & Date.Now & "将" & e.DataCol.name & " """ & e.OldValue & """ 修改为 """ & e.NewValue & """" & vbcrlf
            Dim jcxx,rhhz,hmd As DataRow
            jcxx = DataTables("基础数据表").Find("[账号] = \'" & e.NewValue & "\'")
            rhhz = DataTables("核准信息").Find("[账号] = \'" & e.NewValue & "\'")
            If jcxx IsNot Nothing Then
                e.DataRow("户名") = jcxx("户名")
                e.DataRow("机构") = jcxx("机构")
                If rhhz IsNot Nothing Then e.DataRow("核准时间") = rhhz("核准时间")
                hmd=DataTables("黑名单").find("[户名] = \'" & e.DataRow("户名") & "\'")
                If hmd IsNot Nothing Then
                    e.DataRow("是否黑名单")=True
                Else
                    e.DataRow("是否黑名单")=False
                End If
            End If
        End If
    Case Else
        If e.DataCol.name<>"编辑日志" Then
            e.DataRow("编辑日志") = e.DataRow("编辑日志") & User.Name & " " & Date.Now & "将" & e.DataCol.name & " """ & e.OldValue & """ 修改为 """ & e.NewValue & """" & vbcrlf
        End If
End Select