如果值或值则

如果值或值则

使用 Access VBA 时,我们需要执行 IF-Than 语句,但有 16 个值。因此,我尝试包含“OR”,但此代码返回错误“找不到表达式中引用的字段‘I’。以下是我们的:注意:字段位于子表单 f_SubReviewer:: If (Me![f_SubReviewer]![ReviewerComments] <> "" Or [Adj1] <> "") Than...

答案1

这听起来好像 an ifwith 16 ors 是错误的方式。另一方面,该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,你可以采取相应的措施。比上述代码更好的方法是将所有检查放入一个函数中,然后调用它来分配你的布尔变量。这将使代码更易于阅读,并允许你从代码中的其他位置再次调用该函数。

相关内容