excel - 通过 Excel VBA 运行 Access 查询时出现间歇性错误

标签 excel ms-access vba

我有一个 .xlsm 文件,它在新电子表格中编译来自 5 个 Access 数据库表的条目,然后打开 Access,并运行几个查询来更新主表(我知道,数据库的体系结构很糟糕......)问题(有时)出现以下代码,

Dim accessApp
Set accessApp = CreateObject("Access.Application")
accessApp.UserControl = True
accessApp.OpenCurrentDatabase ("G:\Dir1\Dir2\Processing Database.accdb")
DoCmd.SetWarnings False
DoCmd.OpenQuery "DeleteFTP", acViewNormal, acEdit

OpenQuery行我收到“运行时错误 2486,您目前无法执行此操作”,是否需要加载某种代码库或其他东西来防止这种间歇性问题?

最佳答案

我认为您的 Processing Database.accdb 数据库包含一个名为 DeleteFTP 的已保存查询,并且您希望执行该查询。

如果这是真的,请限定 DoCmd与应用程序对象 accessApp ...

accessApp.DoCmd.OpenQuery "DeleteFTP", acViewNormal, acEdit

请注意,如果您的 Excel 项目不包含 Access 引用,它将无法识别这些 Access 常量 acViewNormalacEdit .在这种情况下,您可以使用常量的值而不是它们的名称:

accessApp.DoCmd.OpenQuery "DeleteFTP", 0, 1

但是我不确定这些建议是否足够,因为您说问题是间歇性的,在我看来,您当前的代码总是会失败。所以还有一些我不明白的事情。

关闭SetWarnings压制信息。我不知道它是否在这种情况下隐藏了线索,但建议你还是避免它。如果您使用 DAO.Database.Execute,则不需要它。方法及其 dbFailOnError执行删除查询的选项...

'DoCmd.SetWarnings False
'DoCmd.OpenQuery "DeleteFTP", acViewNormal, acEdit
accessApp.CurrentDb.Execute "DeleteFTP", 128 ' dbFailOnError = 128

关于excel - 通过 Excel VBA 运行 Access 查询时出现间歇性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31723856/

相关文章:

javascript - 通过 axios 下载后损坏的 XLSX 文件

excel - 使用openpyxl在excel中查找图像和删除图像

excel - 确定 VBA 2007 中对象变量的库名称..?

excel - 仅对一个特定列使用宏代码

excel - 使用条件更改按钮中的文本

excel - Application.Run 和范围参数?

javascript - VBA : access an HTML elements without Id or Name

ms-access - 将csv文件导入access的VBA程序

sql - 如何在 SQL 输出中重复记录

excel - 在Excel VBA中构建矩阵