当字段为空时,避免使用Null错误

时间:2017-08-15 10:28:40

标签: access-vba

我在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

2 个答案:

答案 0 :(得分:0)

您可以使用 Nz

@functions {
    public int getRandomNumber(int min, int max, Random rnd, List<int> featuredStories) {

    int randomNumber = rnd.Next(min, max);

    if (featuredStories.Contains(randomNumber)) 
    {
        randomNumber = getRandomNumber(min, max, rnd, featuredStories); 
    }
    else
    {
        featuredStories.Add(randomNumber);
    }


    return randomNumber;
}

或者,更好的是,实现我的功能CSql

答案 1 :(得分:0)

最大的问题是:当值为Null时,您希望发生什么?

正如您所注意到的,整数和字符串不能包含Null,而Variant可以包含Variant。将中间变量调整为Nz是一种在您的代码中可行的方法。您还可以使用Null函数将'替换为空字符串(如果称为字符串),或者将0替换为整数。

请注意,如果您要从SQL语句中删除Iif(IsNull(B), "Null", B)撇号,则会遇到错误,您必须使用B,其中只有if f == 'mass': # construct parameters with for loop maybe: parameters = {key: value for (key, value) in [('a','b'),('c','d')]} # parameters = {'a': 'b', 'c': 'd'} else: parameters = {key: value for (key, value) in [('b','a'),('d','c')]} SQL语句。