使用 Access VBA 时,我们需要执行 IF-Than 语句,但有 16 个值。因此,我尝试包含“OR”,但此代码返回错误“找不到表达式中引用的字段‘I’。以下是我们的:注意:字段位于子表单 f_SubReviewer:: If (Me![f_SubReviewer]![ReviewerComments] <> "" Or [Adj1] <> "") Than...
答案1
这听起来好像 an if
with 16 or
s 是错误的方式。另一方面,该case
语句似乎非常适合这种情况。
快速搜索显示 MS Access 有一个 case 语句,其语法如下:
选择案例测试表达式 案例条件_1 结果_1 案例条件_2 结果_2 ... 案例条件_n 结果 案例其他 结果其他 结束选择
这将使代码更易读,并且速度也可能会更快。
使用 switch 和 case 与 if 的示例(使用类似 C 的语法,因为我知道这个)
如果((A=1)|(A=2)|(A=3)) { 做一点事 } 别的 { 做点别的事 } 开关(A) { 情况 1:{做某事} ;中断 情况 2: 情况 3:{做某事} (A 可能是 2 或 3,因为 2 后面没有 break);break。 默认:{做其他事} }
答案2
看起来您正在尝试检查多个字段/变量以确保没有一个为空或 null。在这种情况下,您可以执行一大堆嵌套的if
/elseif
语句,但这很快就会变得很糟糕。我建议创建一个新的布尔变量,如blnNoBlanks
,将其设置为 true,然后if
在每个字段上运行单独的语句,如果任何条件失败,则将变量设置为 false。像这样:
Dim blnNoBlanks as boolean
blnNoBlanks = True
If (Me![f_SubReviewer]![ReviewerComments] = "" Then
blnNoBlanks = false
End If
If [Adj1] = "" Then
blnNoBlanks = false
End If
'... the rest of the IF statements
If blnNoBlanks Then
'Enter your new code here
End If
如果blnNoBlanks
变量通过了检查,IF
那么你就可以继续了。如果没有,变量将为 false,你可以采取相应的措施。比上述代码更好的方法是将所有检查放入一个函数中,然后调用它来分配你的布尔变量。这将使代码更易于阅读,并允许你从代码中的其他位置再次调用该函数。