Преобразование DAO в ADO - PullRequest
2 голосов
/ 17 июня 2010

Я работаю с базой данных Access 2003, в которой есть подпрограмма с использованием кода DAO. Этот код перебирает определения таблиц и обновляет строку подключения ODBC. Я хотел бы преобразовать это в ADO, поэтому мне не нужно ссылаться на библиотеку объектов DAO. Вот код ...

Public Sub RefreshODBCLinks(newConnectionString As String)

    Dim db As DAO.Database
    Dim tb As DAO.TableDef
    Set db = CurrentDb
    For Each tb In db.TableDefs
        If Left(tb.Connect, 4) = "ODBC" Then
            tb.Connect = newConnectionString
            tb.RefreshLink
            Debug.Print "Refreshed ODBC table " & tb.Name
        End If
    Next tb
    Set db = Nothing

    MsgBox "New connection string is " & newConnectionString, vbOKOnly, "ODBC Links refreshed"

End Sub

Часть, в которой я не уверен, это как пройтись по таблицам и получить / установить их строки подключения.

Ответы [ 2 ]

4 голосов
/ 17 июня 2010

DAO действительно лучше всего подходит для этого, вы не можете обновить ссылку с помощью ADO, скорее вам нужно будет использовать ADOX (некоторый соответствующий код здесь ).

Вы можете получить доступ к строке подключения через Jet OLEDB:Link Provider String

2 голосов
/ 17 июня 2010

Если ваша цель - избежать ссылки на DAO, вы можете просто изменить существующую процедуру, чтобы использовать позднюю привязку для DAO. Например, этот саб должен работать без набора ссылок для DAO.

Public Sub DAO_without_reference()
    Dim db As Object
    Dim td As Object
    Set db = CurrentDb
    For Each td In db.TableDefs
        Debug.Print td.Name
    Next td
    Set db = Nothing
End Sub

У вас не было бы Intellisense, чтобы помочь вам со свойствами, методами и константами DAO при написании кода, но код все еще может работать с поздним связыванием.

Я думаю, что это будет вашей самой простой альтернативой, если вы полны решимости избежать ссылки на DAO. Однако я никогда не разрабатывал проект Access без ссылки на DAO, и я не понимаю, почему вы против его добавления.

Редактировать : Также, если вы используете позднюю привязку и какие-либо константы DAO, ваш код должен использовать значение константы, а не имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...