0

我收到了一个别人不久前建造的旧 Access db。我向现有查询添加了一个字段,但是当我去保存它时,它在我从未接触过的另一个字段上引发了错误。错误消息:垂直条的使用无效。这是它不喜欢的表达式,但不知何故他们能够在过去保存它:

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

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

4

2 回答 2

0

最后通过将列表分隔符的区域设置从垂直条切换到逗号并切换到 IsNull() 函数来解决它。这是最终奏效的方法:

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

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

控制面板>区域和语言>单击格式选项卡下的其他设置>将列表分隔符值从|更改 至 ,。单击应用,然后将竖线换成表达式中的逗号。

于 2018-04-12T15:15:00.167 回答
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)
于 2018-04-12T07:18:41.993 回答