MS Access 查询条件 IIf true then <

Posted

技术标签:

【中文标题】MS Access 查询条件 IIf true then <【英文标题】:MS Access Query Criteria IIf true then < 【发布时间】:2018-11-22 12:48:20 【问题描述】:

我有一个 MS Access 2007 查询,其条件如下 - 但它不起作用!

IIf([Forms]![CSL_CSD_Log]![Reason_Category]=1,<6,[Forms]![CSL_CSD_Log]![Reason_Category])

我不明白为什么 TRUE 结果没有给我所有

我错过了什么吗??

提前致谢。

【问题讨论】:

你能发布你的查询的SQL吗?我认为您需要 EVAL 您的 IIf 语句才能按您期望的方式工作。 @Minty 这是我的 SQL 代码 'SELECT TBL_Descriptor_Values.Descriptor_ID、TBL_Descriptor_Values.Descriptor、TBL_Descriptor_Values.Descriptor_Category FROM TBL_Descriptor_Values WHERE ((((TBL_Descriptor_Values.Descriptor_Category)=IIf([Forms]![CSLC_CSD]) ]=1,(TBL_Descriptor_Values.Descriptor_Category) 【参考方案1】:

转到 SQL 视图并尝试 where 子句:

WHERE 
    IIF([Forms]![CSL_CSD_Log]![Reason_Category] = 1, [FieldToFilter] < 6, [FieldToFilter] = [Forms]![CSL_CSD_Log]![Reason_Category])

【讨论】:

【参考方案2】:

感谢您的回复,他们把我带到了另一个方向,我设法让它根据需要工作。 它可能不是最漂亮的编码,但是嘿:)

SELECT TBL_Descriptor_Values.Descriptor_ID, TBL_Descriptor_Values.Descriptor, 
TBL_Descriptor_Values.Descriptor_Category
FROM TBL_Descriptor_Values
WHERE (((IIf([Forms]![CSL_CSD_Log]![Reason_Category]<2,[TBL_Descriptor_Values].            
[Descriptor_Category]))<6) AND ((TBL_Descriptor_Values.Enabled)=-1)) OR 
(((TBL_Descriptor_Values.Enabled)=-1) AND ((IIf([Forms]![CSL_CSD_Log]! 
[Reason_Category]=4,[TBL_Descriptor_Values].[Descriptor_Category]))=4)) OR 
(((TBL_Descriptor_Values.Enabled)=-1) AND ((IIf([Forms]![CSL_CSD_Log]! 
[Reason_Category]=5,[TBL_Descriptor_Values].[Descriptor_Category]))=5)) OR 
(((TBL_Descriptor_Values.Enabled)=-1) AND ((IIf([Forms]![CSL_CSD_Log]! 
[Reason_Category]=6,[TBL_Descriptor_Values].[Descriptor_Category]))=6))
ORDER BY TBL_Descriptor_Values.Order;

再次感谢。

【讨论】:

以上是关于MS Access 查询条件 IIf true then <的主要内容,如果未能解决你的问题,请参考以下文章

查询在 iif ms-access sql 中不返回真值

如何将 MS Access“IIF”查询转换为 Sql Server 查询?

iif 日期超过两次 MS-Access [关闭]

MS Access 查询转换为 Sql Server

MS ACCESS 2016 - 使用 Null 进行查询的标准

Sum() 使用 IIF() 或 MS Access 中的 Where 子句