2

我有一个 Access 2007 查询。在条件中,如果表单中的过滤器设置为“查看所有组织”,我需要它来选择所有记录。但是,我无法让它工作。以下标准:

=IIf([Forms]![Reports]![Referrals - Business Filter]="View all organisations","Like '*'")

该标准通常有效 - 如果我将“Like '*'”更改为特定的内容,例如“Barclays”,那么它会选择该业务下列出的正确联系人,但这不是我想要实现的。

我究竟做错了什么?

谢谢。

4

1 回答 1

3

你遇到了一些有趣的事情!您试图让查询评估的“Like *”不是文字字符串,而是一个逻辑表达式(其评估结果为 True 或 False)。

当您使用 Iif 在 SQL 中的不同比较表达式之间切换时(严格来说,Iif 是 Access VBA,而不是 SQL,但 Access 允许您在一定程度上在查询中使用 VBA),您只能在文字值之间切换。例如 1、453.5、“This”、“A customer name”。

切换到“LIKE *”表达式相当于即时编写 SQL。就像我在说“我今天喝了 (Iif(It's Friday, (5-4), (6/2)) 杯咖啡”。你的大脑可以在上下文中处理这种从字面英语到必须是评估(并且今天,相当于英文字面单词“one”);Access也可以 - 在一定程度上。但不是评估这个:

[AColumn] = "Like *"

并将其解释为

[AColumn] LIKE "*"

解决方法是将检查“查看全部”是否选择到单独的测试中:

WHERE
([Selection on the form]="View all") OR
([AColumn]=[Selection on the form])
于 2012-11-29T09:58:53.313 回答