Если я компилирую приложение VB6 на win7, ADODB.Connection выдает ошибку «Класс не поддерживает автоматизацию или не поддерживает ожидаемый интерфейс» - PullRequest
20 голосов
/ 28 апреля 2011

Class does not support Automation or does not support expected interface

Я скомпилировал некоторый код VB6 на моей машине с Win7 x64, и результат .exe не будет корректно работать на любой другой машине.

Код VB6 - это просто новый шаблон.exe-файл с одной кнопкой, ссылкой на «Microsoft ActiveX Data Objects 2.6 Library» и следующим кодом в событии нажатия кнопки:

Dim db
Set db = New ADODB.Connection

Он работает правильно на моем компьютере, но не на других (даже на других Win7x64 машины) (Обновление: я обнаружил ДВА других пользователя, где он работает, и одним из них является Джефф Этвуд !, но у большинства машин такая же проблема)

Я проверил экран ссылок на обеих машинах, чтобы увидеть, есть ли ссылкане удалось (хотя он не будет компилироваться тогда, и он компилируется нормально).Все выглядит законно.На 64-битных машинах ссылки идут на SysWow64 вместо system32.

Я даже успешно скомпилировал это на 64-битной машине Vista, и он работал правильно.Это только компиляция на Windows 7, а затем запуск на любом другом компьютере, где происходит ошибка.

Вот результаты запуска CompChecker на моем компьютере:

comp checker results on box

Информация о реестре: ADODB.Connection имеет GUID HKEY_CLASSES_ROOT \ CLSID {00000514-0000-0010-8000-00AA006D2EA4}

InprocServer32 имеет значение% CommonProgramFiles% \ System \ ado \ msado15.dll

Ответы [ 2 ]

19 голосов
/ 11 мая 2011

Это проблема Windows 7 SP1. См. http://support.microsoft.com/kb/2517589 для обходных путей.

Есть и другие способы обойти это:

  1. Используйте ADO 2.8 вместо (из Win 7 RTM диск)
  2. Использовать позднее связывание (возможно, простой)
  3. Есть миллион вещей, которые люди пытаются это очень долго и злой поток: Прерывание изменений в компонентах MDAC ADODB COM в Windows 7 с пакетом обновления 1

Кроме того, msado15.dll не поддерживается в 64-разрядной версии Win 7, как указано здесь: http://support.microsoft.com/kb/983246. Это большая страница, просто поиск по msado15.dll .

1 голос
/ 09 мая 2011

Проверьте версию компонентов MDAC на обеих машинах, используя этот инструмент

Также убедитесь, что вы используете одну и ту же базу данных версий SQL Server (предположительно), поскольку я заметил, что SQL Server 2008 x64 работает иначе, чем предыдущие версии, обрабатывая соединения (при использовании VB6)

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