2016-11-04 78 views
0

我正在使用下面的代码来跟踪表单上的更改,它工作正常。审计跟踪,但不会保存

不过,我想用它在我的主要形式记录只是日期/时间有人点击一个按钮,但是我得到以下错误:

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 

我想我需要告诉它接受空值,但不确定如何?

回答

2

Nz(Screen.ActiveControl.OldValue)将返回一个空字符串而不是空值。

Nz(Screen.ActiveControl.OldValue,"<Null>")如果PriorInfo是文本并且您想要记录它为空。

Nz(Screen.ActiveControl.OldValue,-1)如果PriorInfo是数字,-1是安全的“空”数字。