Ms access 在access vba中编写where子句有更好的方法吗

Ms access 在access vba中编写where子句有更好的方法吗,ms-access,Ms Access,这里有一个小脑筋急转弯 我有一个查询,其中至少有3个不同的where子句。与其写一个详细的if语句来测试每一个可能的结果,我想知道是否有一个更简单的方法来做它 这3个子句是从下拉菜单中选择的,下拉菜单中至少有3个不同的值,包括“ALL”选项 我希望你们开始关注我的问题 因此,如果我有: SELECT * FROM tabe1 WHERE col1 = combo1Value AND col2 = combo2Value AND col3 = combo3Value 用户决定选择以下选项: 组

这里有一个小脑筋急转弯

我有一个查询,其中至少有3个不同的where子句。与其写一个详细的if语句来测试每一个可能的结果,我想知道是否有一个更简单的方法来做它

这3个子句是从下拉菜单中选择的,下拉菜单中至少有3个不同的值,包括“ALL”选项

我希望你们开始关注我的问题

因此,如果我有:

SELECT * FROM tabe1 WHERE col1 = combo1Value AND col2 = combo2Value AND col3 = combo3Value
用户决定选择以下选项:

  • 组合1:全部
  • combo2:item(不是全部的选项)
  • combo3:item(不是全部的选项)
现在有没有一种方法可以重新编写我的查询:

WHERE col1 = * AND col2 = combo2value AND col3 = combo3value

或者我别无选择,只能写一个大的if语句???

您可以使用以下内容:

WHERE 
    col1 = IIf([combo1value] = "*", [col1], [combo1value]) AND 
    col2 = IIf([combo2value] = "*", [col2], [combo2value]) AND 
    col3 = IIf([combo3value] = "*", [col3], [combo3value])

在对
=“*”
的回答中,可能重复的Just change
为NULL
。IIF工作得很好,请参见下面的答案(@Gustav),并附上我对如何修改它以使其工作的评论谢谢你的想法!!这就是我必须做的!“…其中col1=“&val1&”和“&IIf(variable“ALL”,“col2=””和variable&“”,1=1),其中1=1类似于返回true,variable是一个包含单词ALL或其他值的变量,具体取决于组合框值。谢谢你帮助我!