Класс ACCESS не зарегистрирован

Я уже публиковал вопрос по этой проблеме, и, поскольку в Интернете есть все больше и больше ссылок на нее, я хотел узнать, сталкивался ли кто-нибудь здесь с подобной проблемой. У меня есть два компьютера под управлением Windows 10 и Office 365. Я получаю сообщение об ошибке на рабочем столе, когда запускаю следующий код:

Dim Colcon As ADODB.Connection
Set Colcon = CurrentProject.Connection
Dim ColRs As New ADODB.Recordset
ColRs.ActiveConnection = Colcon

Dim ColSQL As String
ColSQL = "SELECT ColTbl.LastDate, ColTbl.ColCode"
ColSQL = ColSQL + " FROM ColTbl"
ColRs.Open ColSQL, Colcon, adOpenStatic, adLockReadOnly

Последняя строка выдает «Класс не зарегистрирован», но тот же код отлично работает на моем Surface, используя ту же среду. Пробовали разные решения, полученные в Интернете, ни одно из которых не работает. Просто интересно, есть ли у кого-нибудь еще такая проблема в ACCESS. (Согласно информации из Интернета, эта ошибка может быть связана с чем угодно, когда вы читаете сообщения от людей, у которых возникла проблема)

Спасибо

Mitch' вот debug.print Colcon. Не вижу, какое это имеет отношение к проблеме, но вот оно. Кстати, я не знаю, что это значит.

Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=U:\SSP Supervisor_Log\SSp_LogBook -Ver 11.accdb;
Mode=Share Deny None;Extended Properties="";
Jet OLEDB:System database=C:\Users\admin\AppData\Roaming\Microsoft\Access\System1.mdw;
Jet OLEDB:Registry Path=Software\Microsoft\Office\16.0\Access\Access Connectivity Engine;
Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=1;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don't Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;
Jet OLEDB:Support Complex Data=True;Jet OLEDB:Bypass UserInfo Validation=False;
Jet OLEDB:Limited DB Caching=False;Jet OLEDB:Bypass ChoiceField Validation=False

person jpl458    schedule 17.08.2016    source источник
comment
У вас установлена ​​другая версия или рабочая версия MS-Access? Являются ли эти компьютеры 64-битными системами Windows 10?   -  person dbmitch    schedule 17.08.2016
comment
Оба являются 64-разрядными версиями Windows 10 и Office 365. К вашему сведению, одно и то же приложение работает в 32-разрядной системе Windows 7. Другой версии ACCESS нет ни на одной из машин. Надеюсь, это не означает переустановку на неисправной машине. Кроме того, все драйверы обновлены, а также установлены последние обновления для Windows и Office.   -  person jpl458    schedule 18.08.2016
comment
Ваш код выше работает в одной функции или в двух? Кажется странным, что вы установили соединение набора записей, а затем открыли его с тем же соединением, предполагая, что переменная colCon все еще действительна. Можете ли вы debug.print colCon скопировать/вставить его в свой вопрос?   -  person dbmitch    schedule 19.08.2016
comment
Митч, я вставил Colcon в вопрос после «Спасибо».   -  person jpl458    schedule 19.08.2016
comment
Просто интересует поставщик OLEDB и механизм базы данных Access в Office 365. Можете ли вы попробовать простой тест открытия того же набора записей с помощью DAO? Dim daoRS as DAO.Recordset SET daoRS = Currentdb.OpenRecordset(ColSQL)   -  person dbmitch    schedule 19.08.2016
comment
Ран Дао, и это сработало просто отлично. Что это говорит нам о проблеме ADO?   -  person jpl458    schedule 19.08.2016
comment
Я предполагаю, что редко использую ADO, если только не подключаюсь к SQL Server или MySQL, но я верю, что это как-то связано с провайдером Microsoft.ACE.OLEDB.12.0 и с 64-битной системой. Если вы действительно хотите сохранить ADODB, вы можете попробовать установить распространяемый компонент среды выполнения Access 2013 и посмотреть, установлены ли правильные драйверы. Я склонен держаться подальше от ADO, если только меня не подталкивают к этому.   -  person dbmitch    schedule 19.08.2016
comment
Почему вы избегаете ADO, у меня сложилось впечатление, что это было последним и лучшим? ADO работает при подключении к SQL Server, но не к изящной таблице ACCESS. Может, нам стоит пойти поболтать. Я хотел бы узнать больше. Но спасибо за помощь   -  person jpl458    schedule 19.08.2016
comment
Давайте продолжим обсуждение в чате.   -  person jpl458    schedule 20.08.2016
comment
Извините - не буду вдаваться в какие-то пространные дискуссии об ADO и DAO - там много информации и дискуссий. Я программирую в Access уже 20 лет, и это просто личное предпочтение, основанное на реальном опыте работы с обоими. Серверные базы данных используют совсем другие механизмы, чем JET DAO Engine, используемый в таблицах Access. ADO предназначался для беспрепятственной работы с SQL Server и базами данных Oracle по всему миру. Microsoft перестала продвигать (и по умолчанию) ADO — и фактически по умолчанию использует DAO в более поздних версиях. Кстати, размер ваших изящных баз данных Access может достигать 2 ГБ.   -  person dbmitch    schedule 20.08.2016
comment
а в разделе tools-›references какую ссылку вы установили для ADO?   -  person Albert D. Kallal    schedule 21.08.2016
comment
Урок выучен. Если я обращаюсь к SQL Server, используйте ADO. Если вы собираетесь использовать таблицы ACCESS, используйте DAO. Кстати, я только что попытался получить доступ к другой таблице ACCESS с помощью ADO и получил ту же ошибку на машине, на которой я пишу код. ТАКЖЕ я не имею в виду, что таблицы ACCESS в целом неуклюжи, просто я пытаюсь открыть их. Всего одна запись.   -  person jpl458    schedule 22.08.2016
comment
И большое спасибо. Действительно чему-то научился. JPL458   -  person jpl458    schedule 22.08.2016


Ответы (2)


Можете ли вы подтвердить, что это ваша установка или база данных: Создайте новую базу данных и запустите ее в окне немедленного запуска:

? CurrentProject.Connection

Если вы получите здесь ошибку, это исключает проблему, связанную именно с вашей базой данных.

Если это возвращает ошибку, попробуйте восстановить установку Office365

  • Начните с открытия «Программы и компоненты» на панели управления.
    В Windows 10 вы можете попасть туда, вытащив скрытое меню быстрого доступа (чтобы получить к нему доступ в Windows 10, просто щелкните правой кнопкой мыши кнопку «Пуск», и вы вы увидите меню многих знакомых встроенных утилит, которые вы использовали в Windows 7, включая панель управления.
  • Выберите Microsoft Office 365 в списке программ и нажмите Change/Repair на панели команд.
  • Попробуйте первый вариант, Quick Repair, который намного быстрее и пытается решить проблему без подключения к данным.
  • Если это не решит проблему, вернитесь и попробуйте вариант Online Repair.

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

Справочные ссылки
Статья FMS< br> Восстановление Office 365

person dbmitch    schedule 17.08.2016
comment
Он не возвращал ошибку, и я несколько раз ремонтировал Office онлайн, а также быстро ремонтировал. Из моего чтения я подозреваю проблему с dll, но я понятия не имею, что это будет и как ее найти. Я только что попробовал пару решений, которые были на ютубе, но пока ничего не работает. - person jpl458; 18.08.2016

У меня была эта проблема с ADODB. Класс, требующий регистрации, был поставщиком данных в строке подключения. В моем случае это был собственный клиент SQL Server, который требовал установки. Восстановление Office абсолютно ничего не дало. Но это может помочь кому-то с другим поставщиком данных.

person Simon Van Duffelen    schedule 24.01.2018