2017-08-15 43 views
0

我在Access 2010中創建了一個表單,並且我根據文本框(B和C)和選擇表單組合框(A)填寫了表單。問題是,如果任何文本框留空,我會得到「無效使用空值」錯誤。我注意到我可以避免這個錯誤,如果我昏暗的文本框作爲Variant而不是Integer。我不確定這是否是正確的解決方案。我可以更改以下腳本以避免此錯誤嗎?避免當字段爲空時使用空錯誤無效

Private Sub ABCBoxEnter_Click() 
Dim A As String 
Dim B As Integer 
Dim C As Integer 
If Not IsNull(Me!ComboBox.Value) Then 
    A = Me!ComboBox.Value 
    B = Afield 
    C = Bfield 
    values = "VALUES (" 
    values = values & "'" & ID & "','" & A & "','" & B & "','" & C & "')" 
    SQL = "INSERT INTO ContactTable (ID, A, B, C)" 
    SQL = SQL & values 
    DoCmd.RunSQL SQL 
    Me.B.Value = "" 
    Me.C.Value = "" 
End If 
End Sub 

回答

0

您可以使用的Nz

values = values & "'" & Nz(ID) & "','" & Nz(A) & "','" & Nz(B) & "','" & Nz(C) & "')" 

或者,更好,實現我的功能CSql

+0

如果'Me!ComboBox.Value'爲'Null',那麼'A = Me!ComboBox.Value'會引發null的無效使用,除非'A'被指定爲'Variant'。 'A = CSql(Me!ComboBox.Value)'和'B'和'C'相同的方法在使用'CSql'時更有效。然後'B'和'C'應該是一個字符串。 –

+0

@ErikvonAsmuth:不,這是由_If_排除的(上面的行)。但看到我添加到_CSql_的鏈接。 – Gustav

+0

啊,愚蠢的,雖然 –

0

最大的問題是:你希望當值Null發生什麼。

正如你所看到的,整數和字符串不能包含Null,而Variant可以。調暗您的中間變量爲Variant是您的代碼中可以使用的一種方法。您還可以使用Nz函數將Null替換爲空字符串(如果稱爲字符串)或0(如果稱爲整數)。

請注意,如果您要從SQL語句中刪除'撇號,則會遇到錯誤,並且您必須在SQL語句中使用(B)。

相關問題