我正在尝试在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
答案 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