2017-08-15 44 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)。

相关问题