使用OR运算符的IIF查询不起作用

Rei*_*oud 5 ms-access ms-access-2003

我正在尝试在MS访问查询中运行以下条件作为条件.基本上我想做的是:

  • 如果checkbox = True,则显示所有记录,包括具有空白或空字段的记录(我的表单的组合框[combo9]中的默认值为"*")
  • 如果checkbox = False,则仅显示与Combo9中的值匹配的记录

我当前的表达式不会给出任何错误,但也不会产生任何结果!表达式的TRUE和FALSE部分可以自行处理,但在组合到iif表达式时不起作用.

Like IIf([Forms]![F_leg_reg]![Check25]=True,Like [Forms]![F_leg_reg]![Combo9] Or "" Or Is Null,Like [Forms]![F_leg_reg]![Combo9])
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我这里我做错了什么吗?提前致谢.

T I*_*T I 8

不确定你需要这么多likes,你or在返回值中使用逻辑运算符是没有意义的

IIF (condition, value-if-true, value-if-false)
Run Code Online (Sandbox Code Playgroud)

所以..

Like IIF ([forms]![foo].[text1] = "1" OR [forms]![foo].[text2] = "1", 'bar', 'foobar')
Run Code Online (Sandbox Code Playgroud)

如果满足任一条件,IIF将返回'bar'否则它将返回'foobar'

如果你愿意,你可以嵌套它

Like IIF ([forms]![foo].[text1] = "1" OR [forms]![foo].[text2] = "1", 'bar', 
        IIF ([forms]![foo].[text1] = "2" AND [forms]![foo].[text2] = "2", 'foobar', null)
    )
Run Code Online (Sandbox Code Playgroud)

如果任一条件满足IIF将返回"酒吧"否则我们检查,看看是否text1 text2是"2",如果是的话返回"foobar的"否则我们返回null

希望这可以帮助