尝试使用 DAO 从外部 Access (Outlook/Excel) 连接到有效数据库会生成 3343 无法识别的数据库格式错误
Posted
技术标签:
【中文标题】尝试使用 DAO 从外部 Access (Outlook/Excel) 连接到有效数据库会生成 3343 无法识别的数据库格式错误【英文标题】:Attempt to connect to a valid database from outside Access (Outlook/Excel) using DAO generates a 3343 unrecognized database format error 【发布时间】:2013-03-05 02:35:32 【问题描述】:感谢您的网站。很棒的信息。
简而言之,我正在尝试从 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 库引用,所以我要么破坏了一些东西,要么省略了一些东西。
我们将不胜感激。
谢谢!
【问题讨论】:
【参考方案1】:最新的 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
【讨论】:
从Microsoft Office 3.6 Access Database Engine Object Library
更改为Microsoft Office 12.0 Access database engine Object
为我修复了它。谢谢!【参考方案2】:
在您的参考文献中使用更新的最新版本或最新的访问数据库。
例如:在 Visual Basics 窗口中 = 转到工具 > 参考 > Microsoft Office 14.0 Access 数据库引擎对象库。
然后使用以下命令打开您的数据库:
Dim database_data As DAO.Database
Dim rsData As DAO.Recordset
Dim field_index As Integer
Set database_data = DAO.OpenDatabase("demo1.accdb")
有时,可能还需要输入数据库文件的完整路径,例如"C:\User\Documents\projects\demo1.accdb"
【讨论】:
以上是关于尝试使用 DAO 从外部 Access (Outlook/Excel) 连接到有效数据库会生成 3343 无法识别的数据库格式错误的主要内容,如果未能解决你的问题,请参考以下文章
Access SQL:从插入语句或从 DAO.QueryDef 获取受影响记录的标识值
Excel 工作表名称不允许使用 VBA 将数据导入 Access - DAO
访问:使用从另一个查询中选择的 DAO.recordset 运行查询