Неправильная строка подключения к базе данных MS Access

#vba #connection #ms-access-2010

#vba #подключение #ms-access-2010

Вопрос:

Я пытаюсь экстраполировать данные из базы данных MS Access 2007/2010.

У меня есть следующий код в VBA, но строка подключения неверна. Я добавил соответствующие библиотеки ССЫЛОК

  Private Sub btnGetMsAccessData_Click()

Dim sConn As String
Dim oConn As ADODB.Connection
Dim oRs As ADODB.Recordset
Dim sSQL As String

sConn = "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=\MyNetworkPathBP-MasterDashboard SourceBP_Planning_by_PT_dept_be.accdb;Mode=Read"

Set oConn = New ADODB.Connection        ' Open a connection.
oConn.Open


sSQL = "SELECT * FROM Tbl_Start_Leaver"        ' Make a query over the connection.
Set oRs = New ADODB.Recordset
oRs.Open sSQL, , adOpenStatic, adLockBatchOptimistic, adCmdText

MsgBox oRs.RecordCount

oConn.Close ' Close the connection.
Set oConn = Nothing

End Sub
  

Сбой с сообщением об ошибке неизвестного приложения в oConn.Открытая строка.

Я попытался связать рабочую книгу с одной из таблиц, и это работает нормально. Затем я посмотрел на «Соединение» и скопировал его в свой код, но все равно без радости.

Продолжает говорить: ошибка автоматизации Неожиданная ошибка

Любые идеи будут оценены.

Заранее спасибо.

Ответ №1:

Хотя строка подключения была неверной, были и другие проблемы. Например, не присваивание строки подключения объекту подключения ADODB, а также другим. Вот обновленный код, который, я надеюсь, поможет вам работать

 Private Sub btnGetMsAccessData_Click()
    'Ensure you add a reference to Microsoft ADO Objects
    Dim oConn As New ADODB.Connection
    Dim oRs   As New ADODB.Recordset
    Dim sSQL  As String: sSQL = "SELECT * FROM Tbl_Start_Leaver"
    'Corrected Connection String from Thomas Inzina
    Dim sConn As String: sConn = "Provider=Microsoft.ACE.OLEDB.12.0;UID=Admin;Data Source=" amp; _
                                 "\MyNetworkPathBP-MasterDashboard SourceBP_Planning_by_PT_dept_be.accdb;Mode=Read"

    With oConn
        .ConnectionString = sConn ' You need to assign the connection string to the ADODB.Connection Object
        .Open
    End With

    'Make sure the connection isn't open before opening the recordset
    'You also need to specify which connection you want to use as the second parameter (this was missed)
    If oRs.State <> adStateOpen Then oRs.Open sSQL, oConn, adOpenStatic, adLockBatchOptimistic, adCmdText

    'Close Connection and RS
    If oConn.State = adStateOpen Then oConn.Close
    If oRs.State = adStateOpen Then oRs.Close

    'Clean Up
    Set oRs = Nothing
    Set oConn = Nothing
End Sub
  

Комментарии:

1. Это не сработало. Я думаю, может быть, это ссылка на библиотеку, которая мне нужна.

2. Смотрите мой комментарий к строке 2 кода. Вам нужна ссылка на ADO. В частности Microsoft ActiveX Data Objects 2.X Library , или у вас может быть доступна версия 6.x. Либо должно работать.

3. У меня есть библиотека Microsoft ActiveX Data Objects 6.1, так что, похоже, это не проблема.

4. Было бы полезно узнать конкретную ошибку, которую вы получаете, и в какой строке.

5. Я даже пытался подключиться к Northwind.mdb, и это тоже не работает. Самое странное. 🙁