[英]IIF statement in ms access query returns #error when testing for null
[英]MS Access: Error When Rounding IIf Statement
当IIf条件为false时,此Round语句将产生错误,而在IIf条件为true时将起作用。
我在SQL方面的经验非常有限。 我从一个退休的同事那里继承了我正在尝试调整的Access DB,所以我一直在进行故障排除和语法拼写方面的工作。
这是我要开始工作的Round语句:
Round(IIf([Manual] is Not Null,[Manual]/180,[MemberDays]/180),3) AS [%ADM]
故障排除编辑:
Round(IIf([Manual] is Not Null,180/180,100/180),3) AS [%ADM]
手动字段是通过以下语句创建的(不确定是否相关,但已确定我会添加):
IIf(([2-billing-Prep Export]!wth_date) Is Not Null,[MemberDays]-[Session Cum]+1,"")) AS Manual
预期的结果:如果Manual不为null,则%ADM将填充Manual / 180至3 decpts。 如果Manual为null,则%ADM将填充MemberDays / 180至3 decpts。
实际结果:如果Manual不为null,则该语句有效,但是Manual为null时,%ADM填充#ERROR。 Google告诉我这是因为计算中的字段之一为null ...但是MemberDays绝不会为null。
故障排除编辑的结果:%ADM就像条件始终为真一样填充,即使对于“手动”为或看起来为空的记录也是如此。 我很困惑,因为在进行故障排除编辑之前,条件似乎可以识别“手册”中的空值/非空值。
在IIf
表达式中,对真值部分和假值部分都进行了评估,如果其中之一不能被评估,则会返回错误。 在您的情况下,您认为Manual
有时可以为Null
,但我不这么认为...因为在Manual
的IIf
公式中,当它应返回Null
时,您返回一个空字符串。 空字符串不能除以数字。 因此:
将“ Manual
字段的表达式更改为
IIf(([2-billing-Prep Export]!wth_date) Is Not Null,[MemberDays]-[Session Cum]+1,Null)) AS Manual
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.