gpt4 book ai didi

vba - 尝试使用 DAO 从外部 Access (Outlook/Excel) 连接到有效数据库会生成 3343 无法识别的数据库格式错误

转载 作者:行者123 更新时间:2023-12-01 19:56:51 25 4
gpt4 key购买 nike

感谢您的网站。精彩的信息。

简而言之,我尝试从 Outlook (2007) 执行以下代码,但在 Excel 中也失败。内部访问效果很好!

Sub Test

Dim db As DAO.Database
Dim rs As DAO.Recordset

Const dbPath As String = "C:\Users\e574651.GLOBAL\Documents\Northwind 2007.accdb"
On Error Resume Next
Set db = DAO.OpenDatabase(dbPath)
'Set rs = db.OpenRecordset("customers")

Debug.Print Err.Number, Err.Description

End Sub

3343 无法识别的数据库格式“C:\Users\e574651.GLOBAL\Documents\Northwind 2007.accdb”。

我可以整天使用 ADO 访问(没有双关语)这个数据库,我怀疑问题出在以下 ADO 语句上:

ADOConn.Provider = "Microsoft.ACE.OLEDB.12.0"

如何使用 DAO 提供此功能?

我在我的 VBA 首选项中包含了对 DAO 3.6 库的引用。我已经包含了其他 Microsoft 12.0 库引用,因此我要么破坏了某些内容,要么遗漏了某些内容。

任何帮助将不胜感激。

谢谢!

最佳答案

最新的 DAO 库采用以下格式:

Microsoft Office x.x Access Database Engine Object Library

因此,摆脱 3.6 引用并使用更新的库。然后,举个例子:

Sub XLAccess()
Dim ws As DAO.Workspace
Dim db As DAO.Database
Dim sDb As String
Dim sSQL As String
Dim qdf As QueryDef

sDb = "Z:\Docs\Test.accdb"

Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(sDb)

''A stored query would be better
sSQL = "Parameters p1 Text, p2 Datetime; " _
& "INSERT INTO Table1 (AText,ADate) Values ([p1],[p2])"

Set qdf = db.CreateQueryDef("", sSQL)

qdf.Parameters!p1 = "ABC"
qdf.Parameters!p2 = #1/17/2013#
qdf.Execute dbFailOnError
Debug.Print qdf.RecordsAffected
End Sub

关于vba - 尝试使用 DAO 从外部 Access (Outlook/Excel) 连接到有效数据库会生成 3343 无法识别的数据库格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15448338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com