【问题标题】:MS Access: Error When Rounding IIf StatementMS Access:舍入 IIf 语句时出错
【发布时间】:2019-02-01 02:02:50
【问题描述】:

此 Round 语句在 IIf 条件为假时产生错误,在 IIf 条件为真时有效。

我在 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]

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。谷歌告诉我这是因为计算中的一个字段为空......但 MemberDays 永远不会为空。

故障排除编辑的结果:%ADM 被填充,就好像条件始终为真一样,即使对于 Manual 为空或看起来为空的记录也是如此。我很困惑,因为在进行故障排除编辑之前,该条件似乎可以识别 Manual 中的 null/non null 值。

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    IIf 表达式中,真部分和假部分都被计算,如果其中一个不能被计算,则返回错误。在您的情况下,您认为 Manual 有时可以是 Null,但我不这么认为......因为在 ManualIIf 公式中,当它应该返回 @987654326 时,您返回一个空字符串@。空字符串不能除以数字。因此:

    Manual 字段的表达式更改为

    IIf(([2-billing-Prep Export]!wth_date) Is Not Null,[MemberDays]-[Session Cum]+1,Null)) AS Manual
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多