审计跟踪但不会保存
Audit Tracking but wont save
我正在使用下面的代码来跟踪表单上的更改并且工作正常。
但是,我试图在我的主窗体上使用它来记录有人单击按钮的 date/time 但是我收到以下错误:
You entered an expression that has no value
调试将我带到这里:
rs!PriorInfo = Screen.ActiveControl.OldValue
我的代码
Function TrackChanges()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim strCtl As String
Dim strReason As String
' strReason = InputBox("Reason For Changes")
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
rs!ControlName = strCtl
rs!DateChanged = Date
rs!TimeChanged = Time()
rs!PriorInfo = Screen.ActiveControl.OldValue
rs!NewInfo = Screen.ActiveControl.Value
rs!CurrentUser = fOSUserName
' rs!Reason = strReason
.Update
End With
Set db = Nothing
Set rs = Nothing
End Function
我假设我需要告诉它接受空值但不确定如何?
Nz(Screen.ActiveControl.OldValue)
将 return 一个空字符串而不是空值。
Nz(Screen.ActiveControl.OldValue,"<Null>")
如果 PriorInfo 是文本并且你想记录它是空的。
Nz(Screen.ActiveControl.OldValue,-1)
如果 PriorInfo 是数字并且 -1 是安全的 "null" 数字。
我正在使用下面的代码来跟踪表单上的更改并且工作正常。
但是,我试图在我的主窗体上使用它来记录有人单击按钮的 date/time 但是我收到以下错误:
You entered an expression that has no value
调试将我带到这里:
rs!PriorInfo = Screen.ActiveControl.OldValue
我的代码
Function TrackChanges()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim strCtl As String
Dim strReason As String
' strReason = InputBox("Reason For Changes")
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
rs!ControlName = strCtl
rs!DateChanged = Date
rs!TimeChanged = Time()
rs!PriorInfo = Screen.ActiveControl.OldValue
rs!NewInfo = Screen.ActiveControl.Value
rs!CurrentUser = fOSUserName
' rs!Reason = strReason
.Update
End With
Set db = Nothing
Set rs = Nothing
End Function
我假设我需要告诉它接受空值但不确定如何?
Nz(Screen.ActiveControl.OldValue)
将 return 一个空字符串而不是空值。
Nz(Screen.ActiveControl.OldValue,"<Null>")
如果 PriorInfo 是文本并且你想记录它是空的。
Nz(Screen.ActiveControl.OldValue,-1)
如果 PriorInfo 是数字并且 -1 是安全的 "null" 数字。