Access报错无法识别'[Historical Quality query].[4/1/2017]'字段,求定位方法
解决Access中隐藏旧日期字段引用的问题
这种藏在犄角旮旯里的旧引用确实让人头疼,我之前处理Access数据库年度升级时也碰到过类似情况。给你几个实用的排查方法,按这个顺序来大概率能定位到[Historical Quality query].[4/1/2017]的位置:
直接查看查询的SQL视图
很多时候设计视图会隐藏一些计算字段或嵌套条件里的引用,切换到SQL视图就能一目了然。打开报错的关联查询,点击顶部菜单的「视图」→「SQL视图」,直接用快捷键Ctrl+F搜索4/1/2017或者Historical Quality query,几乎肯定能找到这个旧日期的硬编码引用。用对象相关性工具追踪依赖
这个查询可能被其他对象(比如报表、另一个查询、窗体)间接引用了。用Access的对象相关性工具来梳理:- 切换到「数据库工具」选项卡
- 点击「对象相关性」,找到出问题的查询,查看它的依赖对象和被依赖对象
- 逐个检查这些关联对象的设计视图或SQL视图,搜索旧日期字符串
排查宏和VBA代码
旧日期可能硬编码在宏或者VBA模块里:- 宏:打开「宏」对象列表,逐个查看宏里的操作(比如
OpenQuery、SetValue),检查有没有带旧日期的参数 - VBA:按下
Alt+F11打开VBA编辑器,用「编辑」→「查找」(Ctrl+F)搜索4/1/2017,别漏了窗体、报表的代码模块,很多时候筛选条件会写在这些地方
- 宏:打开「宏」对象列表,逐个查看宏里的操作(比如
检查报表/窗体的控件属性
报表或窗体的控件可能绑定了包含旧日期的字段,或者控件的筛选、数据源属性里有硬编码:
打开相关的报表/窗体进入设计视图,右键每个可疑控件→「属性」,检查「控件来源」、「筛选」、「排序依据」这些属性里有没有旧日期全局查找替换工具扫一遍
Access自带全局查找功能,能遍历所有对象:- 切换到「开始」选项卡,点击「查找」→「高级查找」
- 在「查找内容」输入
4/1/2017,点击「更多」,把「查找范围」设为「当前数据库」,「匹配」选「字段任何部分」,然后点击「查找全部」,工具会列出所有包含该文本的对象和位置
检查链接表的隐藏属性
如果用了链接表,右键链接表→「设计视图」,检查每个字段的「默认值」、「验证规则」属性,有时候旧日期会藏在这里
内容的提问来源于stack exchange,提问作者Michael Francis
相关产品推荐
相关产品推荐

