访问查询中的“IIf with In”运算符

时间:2016-01-31 19:36:20

标签: sql ms-access-2010

您好,提前致谢,

需要快速帮助查询IIF和IN运算符。

尝试在查询中实现下面提到的标准但是不适用于这种情况“In(”Ordered“,”Pending“)”但是如果我在没有IN运算符的情况下放置单个值,那么它就可以工作。

Like IIf([Forms]![ReportCriteriaSelection]![StatusForSup]=0,IIf(IsNull([Forms]![ReportCriteriaSelection]![RepCritOdrStatus]),"*",[Forms]![ReportCriteriaSelection]![RepCritOdrStatus]),In ("Ordered", "Pending"))

1 个答案:

答案 0 :(得分:2)

我将在这个答案中假设这个条件的主题是 FieldX 。只需将其替换为 Like 运算符左侧的任何内容。

问题

您无法将 In 运算符组合在一起。如果您解决了所有 IIf 条件,那么错误的表达式实际上归结为:

FieldX Like In ("Ordered", "Pending")

...这是无效的语法。有效的可能是:

FieldX Like "Ordered"

或:

FieldX In ("Ordered", "Pending")

解决方案

由于您希望在此 FieldX 上使用不同的运算符,具体取决于其他条件,您需要使用多个WHERE条件来表达它:

WHERE  (    [Forms]![ReportCriteriaSelection]![StatusForSup] = 0 
       AND  FieldX = Nz([Forms]![ReportCriteriaSelection]![RepCritOdrStatus], FieldX)
       )
  OR   (    Nz([Forms]![ReportCriteriaSelection]![StatusForSup],1) <> 0 
       AND  FieldX IN ("Ordered", "Pending")
       )

以上内容应与您的目标相同。我使用了Nz function