Открытый метод для объекта AdoDB.Connection не поддерживается в Access 2010

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

Я следил за учебниками по объектам ADODB.Connection и их открытию. Я изменил этот код на следующий простой код, используя объект ADODB.Connection.

Теперь я получаю новое сообщение об ошибке «(-2147467259) операция не поддерживается для этого типа объекта».

Я обнаружил, что место, где я использовал функцию Open объекта ADODB.Connection, вызывает новое сообщение об ошибке:

Global conWork As ADODB.Connection
...
Set conWork = New ADODB.Connection
...
conWork.ConnectionString = "ODBC;DRIVER={SQL Server};SERVER=someServer.x.y.z;Provider=Microsoft.ACE.OLEDB.12.0;UserID=user;Password=pw;Data Source=someServer.x.y.z; Trusted_Connection=yes;"
...

conWork.Open  //...causes the error msg "OPERATION IS NOT SUPPORTED FOR THIS TYPE OF OBJECT"

В редакторе vba у меня есть библиотека Microsoft ADO 2.8 и библиотека Microsoft ADO 2.8 RecordSet, выбранные в настройках ссылок.


person McRaven    schedule 16.07.2015    source источник


Ответы (1)


Я не уверен, почему ваша попытка не удалась, но есть несколько проблем, которые мне кажутся подозрительными.

  1. Не включайте ODBC; в строку подключения ADO. Включение этой части вызывает ошибку времени выполнения в моих тестах.
  2. Я не считаю, что вам следует включать в строку подключения и DRIVER = {SQL Server}, и Provider = Microsoft.ACE.OLEDB.12.0.
  3. Включение обоих UserID = user; Password = pw и Trusted_Connection = yes кажется неправильным. Выберите одно или другое, а не оба сразу.
  4. Вы должны сделать Set conWork = New ADODB.Connection перед тем, как установить его ConnectionString и вызвать Open. Я не могу сказать, делает ли это ваш полный код; должно.
  5. Я не думаю, что вам нужна ссылка на библиотеку набора записей, но не знаю, способствует ли ее включение в проблему.

Возможно, вам лучше начать с известного рабочего кода подключения ADO. Этот код работает в Access 2010 со ссылкой на библиотеку объектов данных Microsoft ActiveX 2.8 и успешно подключается к моему локальному серверу SQL Server.

Dim conWork As ADODB.Connection
Dim strConnect As String
strConnect = "DRIVER={SQL Server};SERVER=HP64\SQLEXPRESS;Trusted_Connection=Yes;DATABASE=testbed"
Set conWork = New ADODB.Connection
conWork.ConnectionString = strConnect
conWork.Open

Дополнительную информацию о строках подключения для SQL Server можно найти на ConnectionStrings.com.

person HansUp    schedule 16.07.2015
comment
Спасибо за ответ! К сожалению, я забыл написать Set conWork = New ADODB.Connection в своем вопросе .. Я обновил его сейчас. - person McRaven; 17.07.2015
comment
Я изменил свою строку подключения на: conWork.ConnectionString = DRIVER = {Драйвер Microsoft Access (* .mdb)}; SERVER = server.xyz; Provider = Microsoft.ACE.OLEDB.12.0; UserID = something; Password = password; Data Source = server.xyz; теперь я получаю сообщение об ошибке Не удалось найти устанавливаемый ISAM - person McRaven; 17.07.2015
comment
Вы пытаетесь подключиться к базе данных. Это база данных SQL Server или MS Access? Я запутался. - person HansUp; 17.07.2015
comment
Спасибо за помощь. Теперь я использую connectionString Driver = {Драйвер Microsoft Access (* .mdb)}; Dbq = \\ folder1 \ folder2 \ User1 \ Database.mdb; Uid = Admin; Pwd = пароль; . У меня сейчас нет ошибок подключения, но есть проблемы с доступом к хранимым процедурам (которые хранятся на сервере) через объект ADODB.Command. Я разместил соответствующий вопрос прямо здесь - ›stackoverflow.com/questions/31540879/ - person McRaven; 21.07.2015