【问题标题】:Error from calculated results of nested IIf( ) expressions in query查询中嵌套 IIf( ) 表达式的计算结果错误
【发布时间】:2013-03-12 18:43:41
【问题描述】:

我正在尝试根据记录分类到三个组之一执行计算。所以,如果a,那么x;否则,如果 b,则 y;否则,如果 c,则 z。这就是我正在尝试的:

Field:IIf([Rating]<6, 
DateAdd("m",3,[Rating/Comments Date]), 
IIf(5<[Rating]<8, 
    DateAdd("m",6,[Rating/Comments Date]), 
    DateAdd("y",1,[Rating/Comments Date])))

知道为什么返回“#error”而不是计算的 DateAdd 结果吗?

【问题讨论】:

    标签: ms-access iif


    【解决方案1】:

    尝试将您的 5&lt;[Rating]&lt;8 段更改为 [Rating] BETWEEN 6 AND 7

    【讨论】:

    • 转到表格的设计视图并检查 [Rating/Comments Date] 字段的格式。如果日期存储为字符串,则 DateAdd 函数将失败。
    • 我也看到了这个错误,用于评估空值。 [Rating] 或 [Rating/Comments Date] 字段中是否有空值?
    • 是的,两个字段都有空值。但该函数似乎仍然适用于数据集中间的一条记录。
    【解决方案2】:

    年份是yyyy (http://office.microsoft.com/en-ie/access-help/dateadd-function-HA001228810.aspx)

    如何简化:

    Field:IIf([Rating]<6, 
    DateAdd("m",3,[Rating/Comments Date]), 
    IIf([Rating]>8, DateAdd("yyyy",1,[Rating/Comments Date]),
        DateAdd("m",6,[Rating/Comments Date])))
    

    【讨论】:

    • 除了一条 500 的记录外,它仍然返回#error。这让我发疯了!不过,感谢您帮助我简化。
    • 你有一点样本数据吗?
    • @Tony 没有样本数据,我可以重现您遇到的问题的唯一方法是将 [Rating] 字段转换为存储为文本的数字。我建议再看看你的桌子设计。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多