You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Access表达式生成器错误:竖线使用无效问题咨询

解决Access查询中“Invalid Use of Vertical Bars”报错问题

这个问题我之前处理过类似的——旧Access数据库里的查询表达式误用了竖线|,之前可能靠旧版本的兼容漏洞能保存,但现在语法检查严格了就触发报错。咱们一步步拆解解决:

问题根源

原表达式里的竖线|是错误的用法:Access中IIf函数的参数分隔符必须是逗号,,而竖线在Access里是字符串连接运算符(和&功能类似),原表达式把它当成参数分隔符用,完全不符合语法规范,只是旧版本可能没严格校验才蒙混过关。

同时原表达式的嵌套逻辑也有语法漏洞,咱们先还原你要实现的业务逻辑:

计算工单的已开放天数:如果[re_close_date]为空(工单未最终关闭),则判断[close_date]是否为空——为空就用当前日期减上报日期,不为空就用当前日期减重新打开日期。

修正后的正确表达式

按照Access标准的IIf语法(IIf(条件, 真值, 假值)),把所有竖线替换成逗号,同时补全逻辑(比如[re_close_date]不为空时的计算逻辑,原表达式没处理,我默认用关闭日期减上报日期,你可以根据实际需求调整):

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

如果原逻辑中[re_close_date]不为空时不需要计算天数,你可以把最后一个参数换成Null或者0:

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

验证步骤

  1. 把上述修正后的表达式替换到查询的对应字段中
  2. 保存查询,此时应该不会再出现竖线报错
  3. 运行查询,检查DaysOpened字段的计算结果是否符合你的业务预期——如果有异常,再根据实际数据调整逻辑(比如日期字段是否有Null值、日期格式是否正确)

内容的提问来源于stack exchange,提问作者CompileThis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:57:38