同意:
IIf([consents].[decision]=1,"grant",
IIf([consents].[allowbreaktheglass]=0,"deny""Default"),
IIf([consents].[AllowBreakTheGlass]=1 AND [consents].[Decision]=0,"emergency only"))
IIF
语句返回错误:
您输入的表达式的函数包含错误数量的参数
同意的标准仅是授予,拒绝和紧急情况。
答案 0 :(得分:1)
IIF语句的语法为:IIf ( expr , truepart , falsepart )
您在以下2中缺少falsepart
:
尝试更改:IIf([consents].[allowbreaktheglass]=0,"deny""Default")
收件人:IIf([consents].[allowbreaktheglass]=0,"deny","Default")
和:IIf([consents].[AllowBreakTheGlass]=1 AND [consents].[Decision]=0,"emergency only")
收件人:IIf([consents].[AllowBreakTheGlass]=1 AND [consents].[Decision]=0,"emergency only","")
有关更多信息,请访问:https://support.office.com/en-us/article/iif-function-32436ecf-c629-48a3-9900-647539c764e3
答案 1 :(得分:1)
尚不能100%清楚地尝试使用Nested IIF statement
完成什么,但是您只是缺少一个失败参数,可能就是您想要的:
添加了“错误?”最后一个失败参数,并将“默认”移到第一个子句的失败中。
Consent:
IIF([consents].[decision] = 1, 'grant',
IIF([consents].[allowbreaktheglass] = 0, 'deny',
IIF([consents].[AllowBreakTheGlass] = 1 AND [consents].[Decision] = 0,
'emergency only', 'Error?')) 'Default')
答案 2 :(得分:1)
看看您是否发现Switch
比嵌套的IIf
语句容易。
在Access查询设计器中打开一个新查询,切换到SQL View,然后粘贴此语句...
SELECT
Switch(
c.[decision]=1, 'grant',
c.[allowbreaktheglass]=0, 'deny',
c.[AllowBreakTheGlass]=1 AND c.[Decision]=0, 'emergency only',
True, 'Default'
) AS Consent
FROM consents AS c;
Switch
对表达式/值对进行操作。它从表达式计算为True的第一对返回值,并忽略其余对,无论它们是否为True。
不确定我了解您想要的逻辑,但是如果'grant'
,那么第一对将返回[decision]=1
。如果没有,它将检查下一对。等等。最后一对具有True
作为表达式,因此当前三对都不匹配时,该函数将返回'Default'
。