完善窗体数据修改历史记录的示例,这样会更方便给每个窗体直接调用。
之前学弟分享的《窗体数据修改历史记录的示例;记录Access字段编辑保存日志的示例;记录字段操作日志【Access软件网】》http://www.accessoft.com/article-show.asp?id=20823
我给他完善了一下,改成这样会更方便给每个窗体直接调用,改动的代码如下:
Public Function LoadRecordToTag(frm As Object)
Dim ctl As Control
For Each ctl In frm.Controls
If (ctl.ControlType = acComboBox Or ctl.ControlType = acTextBox) And ctl.Name <> "历史记录" And ctl.Name <> "NoCheck" Then
If frm.Controls(ctl.Name).Locked = False Then
frm.Controls(ctl.Name).Tag = "<" & frm.Controls(ctl.Name) & ">"
End If
End If
Next
End Function
Public Function SaveRecordChange(frm As Object, ID As String)
Dim changeTXT As String
Dim ctl As Control
Dim str1 As String
For Each ctl In frm.Controls
If (ctl.ControlType = acComboBox Or ctl.ControlType = acTextBox) And ctl.Name <> "历史记录" And ctl.Name <> "NoCheck" Then
If frm.Controls(ctl.Name).Locked = False Then
str1 = Trim(frm.Controls(ctl.Name & "_Label").Caption)
If frm.Controls(ctl.Name).Tag <> "<" & frm.Controls(ctl.Name) & ">" Then
changeTXT = changeTXT & str1 & frm.Controls(ctl.Name).Tag & "→<" & frm.Controls(ctl.Name) & ">;"
End If
End If
End If
Next
If changeTXT <> "" Then
Set rst = CurrentDb.OpenRecordset("tbl操作日志", dbOpenDynaset)
rst.AddNew
rst!编号 = frm![ID]
rst!用户 = GetParameter("Current User nickname")
rst!时间 = Now()
rst!修改历史 = changeTXT
rst.Update
rst.Close
End If
End Function
'加载数据到控件tag中,监视是否有修改
Call LoadRecordToTag(Me)
‘保存
If Not Me.DataEntry Then
Call SaveRecordChange(Me, Me![PID])
End If
本文暂时没有评论,来添加一个吧(●'◡'●)