Попытка подключения к действительной базе данных извне Access (Outlook/Excel) с использованием DAO генерирует 3343 непризнанную ошибку формата базы данных

Спасибо за ваш сайт. Замечательная информация.

Вкратце, я пытаюсь выполнить следующий код из 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:\Users\e574651.GLOBAL\Documents\Northwind 2007.accdb'.

Я могу получить доступ к этой базе данных в течение дня без использования ADO, и я подозреваю, что проблема заключается в следующем ADO-заявлении:

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

Как предоставить эту функцию с помощью DAO?

Я включил ссылку на библиотеку DAO 3.6 в своих предпочтениях VBA. Я включил другие библиотеки библиотек Microsoft 12.0, поэтому я либо скрепил что-то, либо опустил что-то.

Любая помощь будет принята с благодарностью.

Спасибо!

+4
источник поделиться
2 ответа

Самые последние библиотеки 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
+5
источник

Используйте более недавнюю версию или самую последнюю базу данных доступа в своих ссылках.

Например: Внутри окна Visual Basics = Перейдите в раздел "Инструменты" > "Ссылки" > Microsoft Office 14.0. Библиотека объектов ядра базы данных.

Затем для открытия базы данных используйте следующую команду:

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\Проекты\demo1.accdb"

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос