Microsoft
Software
Hardware
Network
Question : MS Access Audit using Screen.ActiveControl.OldVa<wbr />lue
I'm trying to create an audit file that tracks the changes made to a form. everytime i execute it i'm getting expression has no value for the screen.activecontrol.old value.
Any help would be appreciated.
Below is the code.
Option Explicit
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Function fOSUserName() As String
' Returns the login name for Adminstrator use
Dim lngLen As Long, lngX As Long
Dim strUserName As String
strUserName = String$(254, 0)
lngLen = 255
lngX = apiGetUserName(strUserName
, lngLen)
If (lngX > 0) Then
fOSUserName = Left$(strUserName, lngLen - 1)
Else
fOSUserName = vbNullString
End If
End Function
Function TrackChanges()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim strCtl As String
strCtl = Screen.ActiveControl.Name
strSQL = "SELECT Audit.* FROM Audit;"
Set db = CurrentDb()
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
If rs.RecordCount > 0 Then rs.MoveLast
With rs
.AddNew
rs!FormName = Screen.ActiveForm.Name
rs!ControlName = strCtl
rs!DateChanged = Date
rs!TimeChanged = Time()
rs!PriorInfo = Screen.ActiveControl.OldVa
lue
rs!NewInfo = Screen.ActiveControl.Value
rs!CurrentUser = fOSUserName
.Update
End With
Set db = Nothing
Set rs = Nothing
End Function
Answer : MS Access Audit using Screen.ActiveControl.OldVa<wbr />lue
ok ... but even on an existing record, if a given field has never had a value entered and save, then there is no OldValue.
Random Solutions
MS Access 2007 Passthrough Query Fails
After Update event code
DOS/Windows Script
Table parameter in SQL 2008
SystemDB and MDW questions
Push mail on SBS2008 problem
creating variables out of column items
How to use CDatabase's ExecuteSQL to find the record or row and then get the result, such as in CRecordSet
Import binary data into SQL 2005
How to export data from various tables into a single xml file