2016-11-04 9 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 

私はNULL値を受け入れるようにそれを指示する必要がありますが、仮定どのように不確実ですか?

答えて

2

Nz(Screen.ActiveControl.OldValue)は、null値ではなく空の文字列を返します。

Nz(Screen.ActiveControl.OldValue,"<Null>") PriorInfoがテキストで、録音したい場合はnullです。

Nz(Screen.ActiveControl.OldValue,-1) PriorInfoが数値で、-1が安全な「null」番号の場合。

関連する問題