Ms access 在access vba中编写where子句有更好的方法吗
这里有一个小脑筋急转弯 我有一个查询,其中至少有3个不同的where子句。与其写一个详细的if语句来测试每一个可能的结果,我想知道是否有一个更简单的方法来做它 这3个子句是从下拉菜单中选择的,下拉菜单中至少有3个不同的值,包括“ALL”选项 我希望你们开始关注我的问题 因此,如果我有: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 用户决定选择以下选项: 组
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或其他值的变量,具体取决于组合框值。谢谢你帮助我!