MS Access表达式生成器:垂直条的无效使用

时间:2018-04-11 22:42:47

标签: ms-access calculated-field expressionbuilder

我被交给了别人之前建造的旧的Access数据库。我在现有查询中添加了一个字段,但是当我去保存时,它在我从未触及的其他字段上引发了错误。错误消息:垂直条的使用无效。这是它不喜欢的表达方式,但不知怎的,它们能够在过去保存它:

DaysOpened: 
IIf([re_close_date] Is Null|IIf([close_date] Is Null|Date()-[date_reported]|Date()-[reopen_dt]))

我已经尝试过切换到逗号和&,但是如果有人可以提供帮助,却无法获得正确的组合重建吗?基本上......如果re_close_date为null,请检查close_date是否为null。如果两者都为是,则记录必须仍为打开,因此我们需要通过获取当前日期并减去date_reported或当前日期来计算DaysOpened - 如果重新打开记录,则重新打开_dt。感谢。

2 个答案:

答案 0 :(得分:0)

替换这些条以获得有效的语法:

IIf([re_close_date] Is Null, IIf([close_date] Is Null, Date()-[date_reported], Date()-[reopen_dt]))

或者也许:

IIf([re_close_date] Is Null, IIf([close_date] Is Null, Date()-[date_reported], Date()-[reopen_dt]), 0)

答案 1 :(得分:0)

最后通过将List Separator的区域设置从Vertical Bar切换到逗号并切换到IsNull()函数来解决它。以下是最终奏效的内容:

DaysOpened:IIf(IsNull([Re_Close_Date]),IIF(IsNull([Close_Date]),Date() - [Date_Reported],Date() - [Reopen_dt]),0)

令人沮丧的是,即使您使用表达式生成器,它也会告诉您对IIf语句使用垂直条(而不是逗号),但是一旦您尝试运行它就会抛出垂直条错误消息。要解决此问题,请按如下方式在Windows中更改操作系统设置:

控制面板>地区&语言>点击格式标签下的其他设置>从|更改列表分隔符值至 ,。单击“应用”,然后在表达式中将逗号垂直条替换为逗号。