0

我继承了一个 MS Access 数据库,我应该批量更新一些数据。因此,我创建了一个新查询,并作为第一次测试尝试获取一些过滤的记录列表 - 没有成功。Access 严格拒绝编译包含 LEFT 函数的代码。

这确实编译:

SELECT ColPath FROM MyTable;

这不会编译:

SELECT LEFT([ColPath], 3) FROM MyTable;

哪怕是一个简单的

SELECT LEFT('Hello', 2);

不起作用。

我现在搜索了很多,并找到了建议在 VBA 视图的工具/参考对话框中检查参考的解决方案。在我的案例中没有遗漏参考资料。第二种解决方案是检查 VBA 模块是否有重复的OPTION COMPARE DATABASE语句——在我的例子中没有。

然后我创建了一个全新的数据库并尝试了 - 令人惊讶的是,一切正常!我现在将新数据库的引用与旧数据库进行了比较:它们是相同的。

我很高兴对此有任何想法...

4

1 回答 1

1

听起来你搞砸了你的参考资料。

在 VBA 编辑器中,转到Tools,然后是References

前 2 个应该始终是 Visual Basic For Applications,然后是 Microsoft Access ##.# Object Library,按顺序排列(注意更改顺序的优先按钮)。其他任何事情都会引起麻烦。

即使您没有丢失的参考资料,不正确的参考资料仍然可能导致此问题。

其次,我会执行一般故障排除步骤,反编译(Win R,MSACCESS.EXE /反编译,打开数据库,点击调试 - >编译)和压缩和修复。这将导致您的整个数据库重新编译,如果您的 VBA 代码包含编译错误,这将影响调用任何函数的任何查询。

在此处输入图像描述

于 2021-11-19T14:52:37.403 回答