审计跟踪但不会保存

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" 数字。