尝试连接到从外部访问(展望/ Excel)中一个有效的数据库使用DAO产生3343无法识别的数据库格

2019-07-21 18:16发布

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

概括地说,我试图执行从Outlook(2007)下面的代码,虽然它在Excel中失败也是如此。 伟大的作品INSIDE访问!

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:\用户\ e574651.GLOBAL \文件\罗斯文2007.accdb'。

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

ADOConn.Provider = “Microsoft.ACE.OLEDB.12.0”

如何使用DAO提供此功能?

我已经包含在我的VBA的喜好来DAO 3.6库的引用。 我已经包含其他Microsoft 12.0库引用,所以我无论是惨败的东西或省略的东西。

任何援助将不胜感激。

谢谢!

Answer 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


Answer 2:

使用您引用一个较新版本还是最新的Access数据库

例如:您的内部基础可视化窗口= 转到工具>参考> 的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:\用户\文档\项目\ demo1.accdb”



文章来源: Attempt to connect to a valid database from outside Access (Outlook/Excel) using DAO generates a 3343 unrecognized database format error
标签: vba dao