表达式太复杂 使用复杂的 IIF 条件语句时出错 - 访问 SQL



我在MS Access中收到查询错误"查询表达式中的表达式太复杂"。我有一堆带有复杂条件语句的嵌套 IIF 语句,我总共有大约 23 个,目前 im 在它开始中断时为 13。

我见过的一个常见解决方案是创建一个单独的查找表,其中包含要返回的值,但我认为这在我的情况下不起作用,因为我有复杂的布尔逻辑。

我已经研究了这个问题,我相信使用 SWITCH 语句会导致同样的问题。另一篇文章中的某人建议将IIF声明分成两部分,然后是第3个最终IIF来比较两者,但还没有试一试。Access 2007 中的表达式过于复杂

iif( (HedgeFile.[UnwindDate] is Not Null OR HedgeFile.[UnwindDate] <> '') AND (HedgeFile.[UnwindDate] <= 12/31/2018 AND  HedgeFile.[Current Base Rate] = 0), '2. Terminated', 
iif (HedgeFile.[Port] IN ('ASSUME', 'HDLTV'), '3. Port Excluded from Model',
iif (HedgeFile.[Code] = 'WSP', '4. Company Swaps', 'OK') AS FilterName

如果有人对如何解决这个问题有任何建议,请告知。期待您的来信!

参数不正确。
如果 UnwindDate 是日期/时间字段,则需要日期参数的分隔符。如果是文本类型,则需要撇号分隔符。如果是日期/时间类型,则字段无法保存字符串,因此不需要检查字符串,这可能会导致数据类型不匹配错误。如果字段是文本类型,则使用:HedgeFile.UnwindDate & "" <> ""处理可能的空或空字符串(我从不允许表中出现空字符串)。

IIf(Not HedgeFile.[UnwindDate] Is Null AND HedgeFile.[UnwindDate] <= #12/31/2018# AND HedgeFile.[Current Base Rate] = 0, '2. Terminated', 
IIf(HedgeFile.[Port] IN ('ASSUME', 'HDLTV'), '3. Port Excluded from Model',
IIf(HedgeFile.[Code] = 'WSP', '4. Company Swaps', 'OK'))) AS FilterName

Switch(Not HedgeFile.[UnwindDate] Is Null AND HedgeFile.[UnwindDate] <= #12/31/2018# AND HedgeFile.[Current Base Rate] = 0, '2. Terminated', 
HedgeFile.[Port] IN ('ASSUME', 'HDLTV'), '3. Port Excluded from Model',
HedgeFile.[Code] = 'WSP', '4. Company Swaps', TRUE, 'OK') AS FilterName

我最终按照我在原始问题中的建议将 IIF 声明分成几部分。

最新更新