当 IIf 条件为假时,此 Round 语句会产生错误,当 IIf 条件为真时,它会起作用。
我对 SQL 的经验非常有限。我从一位退休的同事那里继承了这个我正在尝试调整的 Access DB,所以我一直在暗中拍摄故障排除和拼凑语法。
这是我试图开始工作的回合声明:
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]
Manual 字段由此语句创建(不确定是否相关,但我认为我会包括在内):
IIf(([2-billing-Prep Export]!wth_date) Is Not Null,[MemberDays]-[Session Cum]+1,"")) AS Manual
预期结果:如果 Manual 不为空,%ADM 将填充 Manual/180 到 3 dec pts。如果 Manual 为空,%ADM 将填充 MemberDays/180 到 3 dec pts。
实际结果:该语句在 Manual 不为 null 时有效,但当 Manual 为 null 时,%ADM 填充为 #ERROR。Google 告诉我这是因为计算中的一个字段为空……但 MemberDays 永远不会为空。
故障排除编辑的结果:%ADM 被填充,就好像条件始终为真,即使对于 Manual 为或看起来为 null 的记录也是如此。我很困惑,因为在进行故障排除编辑之前,条件似乎识别了手册中的空/非空值。
在一个IIf
表达式中,true-part 和 false-part 都会被求值,如果其中之一不能被求值,则返回一个错误。在您的情况下,您认为有时Manual
可能Null
会如此,但我不这么认为......因为在IIf
for的公式中Manual
,您在应该返回时返回一个空字符串Null
。空字符串不能被数字分割。所以:
将该Manual
字段的表达式更改为
IIf(([2-billing-Prep Export]!wth_date) Is Not Null,[MemberDays]-[Session Cum]+1,Null)) AS Manual
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句