如何在If / Then语句中使用多个条件

时间:2015-09-03 20:07:45

标签: ms-access access-vba ms-access-2010

我正在尝试在Access 2010中编写代码,当单击[Validate]按钮时,它将分析多个字段(总共8个)中的值(或没有值),然后返回一个语句(或文本)在另一个字段([AppStatus])中,基于是否输入了所有8个字段。换句话说,如果任何字段为空,则[AppStatus]字段应填充默认文本“RE PRE-QUAL”。下面是我开始的地方,但我似乎无法弄清楚它为什么不起作用。

Private Sub Validate_Click()
    If [PrimarySSN].Value = Null Then
    If [PropAddress].Value = Null Then
    If [PropCity].Value = Null Then
    If [PropState].Value = Null Then
    If [PropZipCode].Value = Null Then
    If [RequestedLoanAmount].Value = Null Then
    If [BorrowerIncome.Value] = Null Then
    If [EstHomeValue].Value = Null Then
          [AppStatus].Value = "RE PRE-QUAL"
    ElseIf [PrimarySSN].Value = Not Null Then
    ElseIf [PropAddress].Value = Not Null Then
    ElseIf [PropCity].Value = Not Null Then
    ElseIf [PropState].Value = Not Null Then
    ElseIf [PropZipCode].Value = Not Null Then
    ElseIf [RequestedLoanAmount].Value = Not Null Then
    ElseIf [BorrowerIncome].Value = Not Null Then
    ElseIf [EstHomeValue].Value = Not Null Then
          [AppStatus].Value = Null
    End If
    End If
    End If
    End If
    End If
    End If
    End If
End Sub

2 个答案:

答案 0 :(得分:3)

它不起作用的原因之一是因为Nothing is ever equal to Null, not even another Null。另一个问题是您无法在VBA代码中使用Not Null。 (Not Null在Access SQL中有效,但这对此没有帮助。)在VBA中,使用IsNull()检查值是否为空。

当其他8个字段中的一个或多个为空时,您希望" RE PRE-QUAL" 作为 AppStatus 的值(即{{ 1}})。否则, AppStatus 将为Null。所以你可以这样做......

IsNull(fieldname.Value) = True

然而,当扩展到所有8个字段时,这将有点笨拙。

作为替代方案,您可以从控件名称列表开始,将它们加载到数组中,并使用If IsNull(Me.PrimarySSN.Value) _ Or IsNull(Me.PropAddress.Value) _ ' additional Or conditions for each of next 5 fields Or IsNull(Me.EstHomeValue.Value) Then Me.AppStatus.Value = "RE PRE-QUAL" Else Me.AppStatus.Value = Null End If 循环来遍历数组,检查每个控件值是否为Null。如果其中任何一个为Null,请将 AppStatus 设置为" RE PRE-QUAL" 并打开循环。

For

请注意,这种方法可以使维护更容易。如果您需要在应检查的控件列表中添加或删除控件,或更改其任何名称,只需编辑 strFieldList 字符串即可。

答案 1 :(得分:0)

我认为这就是你所需要的:

If [PrimarySSN].Value = Null Or [PropAddress].Value = Null Or [PropCity].Value = Null Or [PropState].Value = Null Or [PropZipCode].Value = Null Or [RequestedLoanAmount].Value = Null Or [BorrowerIncome.Value] = Null Or [EstHomeValue].Value = Null Then
      [AppStatus].Value = "RE PRE-QUAL"
Else
      [AppStatus].Value = Null    
End If

And also consider this: