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)
验证步骤
- 把上述修正后的表达式替换到查询的对应字段中
- 保存查询,此时应该不会再出现竖线报错
- 运行查询,检查
DaysOpened字段的计算结果是否符合你的业务预期——如果有异常,再根据实际数据调整逻辑(比如日期字段是否有Null值、日期格式是否正确)
内容的提问来源于stack exchange,提问作者CompileThis
相关产品推荐
相关产品推荐

