以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如果数据被人修改过,怎么突出来  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=84782)

--  作者:misamisali
--  发布时间:2016/5/10 13:59:00
--  如果数据被人修改过,怎么突出来
如果我一个table里面数据被人修改了,怎么设置可以显示出来,修改日期,修改人是谁?
--  作者:大红袍
--  发布时间:2016/5/10 14:20:00
--  

 你可以加一列,记录修改的信息。DataColChanged事件

 

If e.DataCol.name <> "log"  Then
    If e.DataRow.IsNull("log") Then
        e.DataRow("log") = Date.now & " " & user.name & " 把【" & e.DataCol.Name & "】列内容从\'" & e.OldValue & "\'修改成 \'" & e.NewValue & "\'"
    Else
        e.DataRow("log") = vbcrlf & Date.now & " " & user.name & " 把【" & e.DataCol.Name & "】列内容从\'" & e.OldValue & "\'修改成 \'" & e.NewValue & "\'"
    End If
End If


--  作者:misamisali
--  发布时间:2016/5/10 14:40:00
--  
如图,单价 和 总额 发生了修改, 根据你的程序怎么修改?
图片点击可在新窗口打开查看此主题相关图片如下:修改表格.jpg
图片点击可在新窗口打开查看

--  作者:misamisali
--  发布时间:2016/5/10 14:47:00
--  
我发了个例子,你能再帮我看下吗
--  作者:大红袍
--  发布时间:2016/5/10 14:52:00
--  

If e.DataCol.name = "单价" OrElse e.DataCol.Name = "总额"  Then
    If e.DataRow.IsNull("log") Then
        e.DataRow("log") = Date.now & " " & user.name & " 把【" & e.DataCol.Name & "】列内容从\'" & e.OldValue & "\'修改成 \'" & e.NewValue & "\'"
    Else
        e.DataRow("log") = vbcrlf & Date.now & " " & user.name & " 把【" & e.DataCol.Name & "】列内容从\'" & e.OldValue & "\'修改成 \'" & e.NewValue & "\'"
    End If
End If


--  作者:misamisali
--  发布时间:2016/5/10 15:39:00
--  程序能跑,但是还有两个问题
1、只能第一次修改某单元格时, "Log列"能显示修改人和时间,内容;但是再这行的某单元格修改之后,“Log列”信息消失了,再输入无反应。
2、"Log"列内容字符太多,一个单元格里面看不完,能不能像EXCEL单元格一样,点击某单元格,在上方有显示槽可以看多出单元格的字符。
图片点击可在新窗口打开查看此主题相关图片如下:问题.jpg
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2016/5/10 15:44:00
--  

代码要改一改

 

If e.DataCol.name = "单价" OrElse e.DataCol.Name = "总额"  Then
    If e.DataRow.IsNull("log") Then
        e.DataRow("log") = Date.now & " " & user.name & " 把【" & e.DataCol.Name & "】列内容从\'" & e.OldValue & "\'修改成 \'" & e.NewValue & "\'"
    Else
        e.DataRow("log") &= vbcrlf & Date.now & " " & user.name & " 把【" & e.DataCol.Name & "】列内容从\'" & e.OldValue & "\'修改成 \'" & e.NewValue & "\'"
    End If
End If

 

1、你把行拉高可以看到内容的。你也可以把log列改成备注列,会多一个列窗口,也可以看到信息。

 

2、可以在click事件设置自动行高 ,Click事件

 

If e.Col.name = "log" Then
    e.Table.AutoSizeRow(e.Row.index)
End If


--  作者:misamisali
--  发布时间:2016/5/10 17:13:00
--  代码没问题,还有一个备注被删除的问题
楼主,你的代码没问题了,但是我设置了备注列,能够手动删除,请问怎么禁止掉登录用户删除呢
--  作者:大红袍
--  发布时间:2016/5/10 17:25:00
--  
列属性->允许编辑->False
--  作者:misamisali
--  发布时间:2016/6/21 15:01:00
--  记录修改信息,一段时间后,能不能清除
按照你说的,设置备注表记录修改过的内容,一段时间后,修改记录非常多了,怎么清除?
如果我想设置1个月后清除一次记录,怎么操作?