连接 DAO 访问时出现错误 429

Posted

技术标签:

【中文标题】连接 DAO 访问时出现错误 429【英文标题】:Error 429 when connect DAO Access 【发布时间】:2015-04-07 19:22:54 【问题描述】:

我有以下 VBA 代码,用于连接到 MDB 数据库,但是当我尝试连接 DAO.OpenDatabase(DbFile) 时出现 429 错误

我之前没有收到此错误,但现在正在发生。在我的另一台计算机上,此连接工作正常。

我检查了MDB的路径,是正确的。

我使用的参考是: - 适用于应用程序的 Visual Basic - Microsoft Excel 15.0 对象库 - OLE 自动化 - Microsoft Office 15.0 对象库 - Microsoft DAO 3.6 对象库

我正在使用 Excel 2013(在其他计算机上是 Excel 2010),但正如我所说,它在 2013 年之前就可以使用。

请问有谁知道如何解决这个问题?

Private Sub IniciaDB()

Dim rs As Recordset
Dim fld As Variant
Dim DbFile as String

DbFile = "D:\Documentos\PMbox\PPMdatabase2.MDB"

On Error Resume Next
Set OpenConn = DAO.OpenDatabase(DbFile)
If Err.Number = 3024 Then MsgBox "Check connection string in the VBA StaticClass object", vbOKOnly

Set ObjAccess = CreateObject("Access.Application")
ObjAccess.Visible = False
ObjAccess.OpenCurrentDatabase (DbFile)

'runSQL ("INSERT INTO tabela_teste VALUES ('My name', 34)")
Set rs = runCursorSQL("SELECT * FROM tabela_teste")

Do While Not rs.EOF
    For Each fld In rs.Fields
        Debug.Print fld.Value & ";";
    Next
    rs.MoveNext
Loop

closeResources

End Sub

【问题讨论】:

哪一行会抛出这个错误?错误描述是什么? 行是:Set OpenConn = DAO.OpenDatabase(DbFile) 错误描述为:“ActiveX组件无法创建对象” 我可能会建议您使用较低版本的 DAO 库。很可能另一台机器安装了必要的东西才能打开 MDB,而这台机器可能没有。您的机器是否在两台机器上安装了相似版本的 MS-Access? 没有其他 DAO 版本可供选择。我刚刚删除了 DAO 引用,然后我再次添加它,当我添加时出现错误“加载 DLL 时出错(错误 48)”,似乎 DAO DLL 在我的计算机中有问题:/ 【参考方案1】:

我已经为同一个问题苦苦挣扎了很长时间。 原来我的 Office 是 64 位,所以引用的 Microsoft DAO 3.6 Object Library 不起作用。

玩弄参考资料,结果发现使用 Microsoft Office 15.0 Access 数据库引擎对象 (ACEDAO.DLL) 而不是 DAO360 解决了这个问题。

链接到一个类似的答案,如果我早点找到它就会解决我的问题Writing Excel VBA to receive data from Access

【讨论】:

【参考方案2】:

当我遇到错误 429 时,我正在构建 MDB 到 ACCDB 转换器。这是解决我的问题的下载链接。

http://www.microsoft.com/en-ca/download/details.aspx?id=13255

引用: “此下载将安装一组组件,可用于促进 2010 Microsoft Office System 文件和非 Microsoft Office 应用程序之间的数据传输。”

【讨论】:

【参考方案3】:

嗯,找到的解决方案是缺少 DAO 引用,它在我的计算机中,但引用指示 Program Files 并且 DAO 实际上在 Program Files (x86) 上

【讨论】:

【参考方案4】:

我花了一个晚上解决这个问题,直到我最终通过卸载 64 位版本的 MS Office 和 MS Access 2010 Redistributable 然后重新安装它们的 32 位版本来解决它。

在我看来,64 位版本在使用 DAO 时肯定存在兼容性问题。

我描述了我遇到的整个问题in this blog post。

【讨论】:

以上是关于连接 DAO 访问时出现错误 429的主要内容,如果未能解决你的问题,请参考以下文章

从 Google App Engine 调用 Reddit api 时出现错误 429

为啥使用 WMI 连接时出现访问被拒绝错误?

访问 postgres docker 容器时出现连接错误

使用 FindFirst 时出现 DAO RecordSet 错误 3251

请求 gmail-api 时出现 HttpError 429:超出用户速率限制

访问导入时出现 SSIS 错误