繁体   English   中英

MS Access:舍入IIf语句时出错

[英]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 ,但我不这么认为...因为在ManualIIf公式中,当它应返回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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM