Access 2010 IIF 查询中的语法

Posted

技术标签:

【中文标题】Access 2010 IIF 查询中的语法【英文标题】:Syntax In Access 2010 IIF Query 【发布时间】:2016-02-04 19:50:20 【问题描述】:

我是 Access 的初级用户,正在尝试在表单中构建查询。

我正在处理我的第一个 IIF 查询,但无法获得所需的行为。

我正在尝试根据 4 个条目提取结果,称为 [band]、[band2]、[band3] 和 [band4]。

这是我所在的地方:

Like IIf(IsNull([forms]![financial_filter]![band]),"*",[forms]![financial_filter]![band]) Or Like [forms]![financial_filter]![band2] Or Like [forms]![financial_filter]![band3] Or Like [forms]![financial_filter]![band4]

这意味着如果 [band] 字段为空,它将提取所有波段的所有结果。但是,如果填写了 [band] 和/或 [band2-4] 字段,它将仅从这些字段中提取结果。这一切正常。

但是,如果用户将 [band] 字段留空并且仅在 [band 2-4] 字段中输入内容,则会显示所有结果,而不仅仅是与 [band 2-4] 字段中的数据相关的结果.请告知如何修改我的查询,以便如果用户选择一个或多个波段但未在 [波段] 字段中输入任何内容,则只会填充选定的结果。

谢谢!

迈克

【问题讨论】:

【参考方案1】:

IIF 与 Query 无关。 IIF 语句是 IF .. THEN .. ELSE .. END IF 语句的快捷方式。

MyResult =IIF (Condition, Make1, Make2) 表示

IF Condition THEN
   MyResult=Make1
ELSE
   MyResult= Make2
END IF

您可以嵌套 IIF 语句,但结果将难以阅读和维护。

因此,在您的情况下,我建议您在表单的 OnCurrent 事件中使用您的业务逻辑(IF THEN ELSE END IF)或(IF THEN ELSEIF ... END IF)写几行,以改善未来的维护和代码的可读性。

【讨论】:

谢谢思科!这是有道理的...我将使用几个 If/Then/Else 语句来隔离所有条件!

以上是关于Access 2010 IIF 查询中的语法的主要内容,如果未能解决你的问题,请参考以下文章

SQL 查询语句 IIF()处理条件判断

访问sql中的IIF和Nz运算符[关闭]

Access使用记录

Access 2010:查询表达式中的语法错误(缺少运算符)

Microsoft Access 2010:查询和表单

Nz 和 IIF 的替代方案(为空)