Устранение ошибки "Создание соединения: ADODB.Connection"
Основной вопросы:
1) Какие компоненты microsoft должны быть установлены для 64 битной операционной системы для использования ADO,
для работы с файловой базой данных?
2) Какие компоненты microsoft должны быть установлены для работы с серверной базой данных в MSSQL?
При считывании или создании файла Excel возникает ошибка:
- Ошибка при установке значения атрибута контекста (ActiveConnection)
- Произошла исключительная ситуация (ADOX.Catalog): Не удается найти указанный поставщик.
Вероятно, он установлен неправильно.
Компьютер рабочий с ограничениями доступа из-за политики безопасности. (на домашнем компьютере функционал работает)
Пример кода создания файла, приводящего к ошибке:
----------------------------------------------------------------------------
1) Какие компоненты microsoft должны быть установлены для 64 битной операционной системы для использования ADO,
для работы с файловой базой данных?
2) Какие компоненты microsoft должны быть установлены для работы с серверной базой данных в MSSQL?
При считывании или создании файла Excel возникает ошибка:
- Ошибка при установке значения атрибута контекста (ActiveConnection)
- Произошла исключительная ситуация (ADOX.Catalog): Не удается найти указанный поставщик.
Вероятно, он установлен неправильно.
Компьютер рабочий с ограничениями доступа из-за политики безопасности. (на домашнем компьютере функционал работает)
Пример кода создания файла, приводящего к ошибке:
----------------------------------------------------------------------------
ИмяФайлаЭксель = "D:\Export_" + НомерДок + ".xlsx"; // Имя создаваемого файла
// Собираем строку подключения
СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.12.0;
|Data Source="+ИмяФайлаЭксель+";
|Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1;"";";
// Создаем объект ADOX.Catalog
Catalog = Новый COMОбъект("ADOX.Catalog");
Catalog.ActiveConnection = СтрокаПодключения;
ПоказатьНайденные решения
Если разрядность операционной системы и офиса будут отличаться, то совместимый драйвер из поста (8) - не установится.
- если нет возможности поменять офис, то замените ADO на более простой способ, например:
Excel = Новый COMОбъект("Excel.Application");
--------------------------------------------------------------------
Методы работы:
ОбъектExcel.WorkBooks.Open(ИмяФайла) – Открытие книги MS Excel
ОбъектExcel.ActiveWorkbook.Close() – Закрытие текущей книги
ОбъектExcel.Quit() – Закрытие COM-объекта
ОбъектExcel.Sheets(ИмяЛиста) – Получает лист книги
ЛистExcel.Cells(НачалоСтрока, НачалоСтолбец) – Ячейка таблицы на данном листе
ЛистExcel.Range(Ячейка1, Ячейка2) – Выделенная область
ЯчейкаExcel.Value – Значение ячейки таблицы
ЯчейкаExcel.Text – Текст ячейки таблицы
------------------------------------------------------------------
Пример
https://life1c.ru/post/1949
- если нет возможности поменять офис, то замените ADO на более простой способ, например:
Excel = Новый COMОбъект("Excel.Application");
--------------------------------------------------------------------
Методы работы:
ОбъектExcel.WorkBooks.Open(ИмяФайла) – Открытие книги MS Excel
ОбъектExcel.ActiveWorkbook.Close() – Закрытие текущей книги
ОбъектExcel.Quit() – Закрытие COM-объекта
ОбъектExcel.Sheets(ИмяЛиста) – Получает лист книги
ЛистExcel.Cells(НачалоСтрока, НачалоСтолбец) – Ячейка таблицы на данном листе
ЛистExcel.Range(Ячейка1, Ячейка2) – Выделенная область
ЯчейкаExcel.Value – Значение ячейки таблицы
ЯчейкаExcel.Text – Текст ячейки таблицы
------------------------------------------------------------------
Пример
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
А дальше надо играться с параметрами строки подключения, пример рабочего кода:
То есть, даже для файлов XLS и XLSX строка разная.
И да, работает это на клиенте.
1) Какие компоненты microsoft должны быть установлены для 64 битной операционной системы для использования ADO,
для работы с файловой базой данных?
AccessDatabaseEngine_X64.exe
для работы с файловой базой данных?
А дальше надо играться с параметрами строки подключения, пример рабочего кода:
Если ВРег(Прав(ИмяФайла,4)) = ".XLS" Тогда
СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ИмяФайла+";Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;""";
Иначе
СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ИмяФайла+";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1;""";
КонецЕсли;
И да, работает это на клиенте.
2) Какие компоненты microsoft должны быть установлены для работы с серверной базой данных в MSSQL?
ИМХО, от формата базы это не зависит.
Вроде все просто и на поверхности... а воз и ныне там:
32 битная библиотека устанавливается, 64 валится с ошибкой:
"The installation of this package failed"
- Cоответственно методы ADO попрежнему недоступны, нашел аналогичную ветку форума с такой же проблемой
https://www.programmersforum.ru/showthread.php?p=1778393
32 битная библиотека устанавливается, 64 валится с ошибкой:
"The installation of this package failed"
- Cоответственно методы ADO попрежнему недоступны, нашел аналогичную ветку форума с такой же проблемой
(6) https://www.microsoft.com/en-us/download/details.aspx?id=54920 или более старую?
32 битная библиотека устанавливается, 64 валится с ошибкой:
"The installation of this package failed"
А устанавливаете совместимую с Windows 10 версию? Вот эту: "The installation of this package failed"
Если разрядность операционной системы и офиса будут отличаться, то совместимый драйвер из поста (8) - не установится.
- если нет возможности поменять офис, то замените ADO на более простой способ, например:
Excel = Новый COMОбъект("Excel.Application");
--------------------------------------------------------------------
Методы работы:
ОбъектExcel.WorkBooks.Open(ИмяФайла) – Открытие книги MS Excel
ОбъектExcel.ActiveWorkbook.Close() – Закрытие текущей книги
ОбъектExcel.Quit() – Закрытие COM-объекта
ОбъектExcel.Sheets(ИмяЛиста) – Получает лист книги
ЛистExcel.Cells(НачалоСтрока, НачалоСтолбец) – Ячейка таблицы на данном листе
ЛистExcel.Range(Ячейка1, Ячейка2) – Выделенная область
ЯчейкаExcel.Value – Значение ячейки таблицы
ЯчейкаExcel.Text – Текст ячейки таблицы
------------------------------------------------------------------
Пример
https://life1c.ru/post/1949
- если нет возможности поменять офис, то замените ADO на более простой способ, например:
Excel = Новый COMОбъект("Excel.Application");
--------------------------------------------------------------------
Методы работы:
ОбъектExcel.WorkBooks.Open(ИмяФайла) – Открытие книги MS Excel
ОбъектExcel.ActiveWorkbook.Close() – Закрытие текущей книги
ОбъектExcel.Quit() – Закрытие COM-объекта
ОбъектExcel.Sheets(ИмяЛиста) – Получает лист книги
ЛистExcel.Cells(НачалоСтрока, НачалоСтолбец) – Ячейка таблицы на данном листе
ЛистExcel.Range(Ячейка1, Ячейка2) – Выделенная область
ЯчейкаExcel.Value – Значение ячейки таблицы
ЯчейкаExcel.Text – Текст ячейки таблицы
------------------------------------------------------------------
Пример
чтобы проверить строку соединения
создаешь пустой текстовый файл
меняешь расширение на udl
открываешь, на вкладке Поставщик данных, находишь своего поставщика, на второй вкладке забиваешь параметры, тестируешь, если все верно, открываешь блокнотом, копируешь полученную строку, в большинстве случаев помогает
если нет поставщика, значит он установлен неверно
создаешь пустой текстовый файл
меняешь расширение на udl
открываешь, на вкладке Поставщик данных, находишь своего поставщика, на второй вкладке забиваешь параметры, тестируешь, если все верно, открываешь блокнотом, копируешь полученную строку, в большинстве случаев помогает
если нет поставщика, значит он установлен неверно
Еще бывают такие нюансы:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+СокрЛП(ИмяФайла)+";Extended Properties=""Excel 8.0;IMEX=1;""";
пришлось заменить на -
"Driver={Microsoft Excel Driver (*.xls)};Dbq=" + СокрЛП(ИмяФайла) + ";"
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+СокрЛП(ИмяФайла)+";Extended Properties=""Excel 8.0;IMEX=1;""";
пришлось заменить на -
"Driver={Microsoft Excel Driver (*.xls)};Dbq=" + СокрЛП(ИмяФайла) + ";"
Да, более старый драйвер качал из статьи
https://infostart.ru/public/163640/
ссылка на драйвер (старый):
https://www.microsoft.com/en-us/download/details.aspx?id=13255
(этот коммент, чтобы другие не качали его)
ссылка на драйвер (старый):
(этот коммент, чтобы другие не качали его)
надо добавить такие ключи, и прописать в них значения и Microsoft Access Database Engine 2010 надо 64 битный
ОС: 64bit офис: 64bit) или (ОС: 32bit офис: 32bit)
Ключ: HKCR \ CLSID \ {3BE786A0-0366-9434-4F5C-25CF162E475E} \ InprocServer32 \
Параметр: (По умолчанию)
Данные значения: C: \ Program Files \ Common Files \ Microsoft Shared \ Office14 \ ACEOLEDB.DLL
(ОС: 64bit офис: 32bit)
Ключ: HKCR \ Wow6432Node \ CLSID \ {3BE786A0-0366-9434-4F5C-25CF162E475E} \ InprocServer32 \
Параметр: (По умолчанию)
Данные значения: C: \ Program Files (x86) \ Common Files \ Microsoft Shared \ Office14 \ ACEOLEDB.DLL
ОС: 64bit офис: 64bit) или (ОС: 32bit офис: 32bit)
Ключ: HKCR \ CLSID \ {3BE786A0-0366-9434-4F5C-25CF162E475E} \ InprocServer32 \
Параметр: (По умолчанию)
Данные значения: C: \ Program Files \ Common Files \ Microsoft Shared \ Office14 \ ACEOLEDB.DLL
(ОС: 64bit офис: 32bit)
Ключ: HKCR \ Wow6432Node \ CLSID \ {3BE786A0-0366-9434-4F5C-25CF162E475E} \ InprocServer32 \
Параметр: (По умолчанию)
Данные значения: C: \ Program Files (x86) \ Common Files \ Microsoft Shared \ Office14 \ ACEOLEDB.DLL
Такой нюанс еще бывает:
Проблема в 64bit архитектуре. ОС у меня стоит 64-битная. Но если настройку Источники данных ODBC открывать через
Панель управления - Администрирование - Источники данных ODBC,
- то создается источник данных для 32bit
Чтобы создать для 64bit нужно открыть настройку источника через C:\Windows\SysWOW64\odbcad32.exe, именно эта настройка создаст источник для 64bit
Проблема в 64bit архитектуре. ОС у меня стоит 64-битная. Но если настройку Источники данных ODBC открывать через
Панель управления - Администрирование - Источники данных ODBC,
- то создается источник данных для 32bit
Чтобы создать для 64bit нужно открыть настройку источника через C:\Windows\SysWOW64\odbcad32.exe, именно эта настройка создаст источник для 64bit
Я уже бы и отказался от ADO в пользу универсального драйвера Excel:
Строка соединения = "Driver={Microsoft EXCEL Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=" + ФайлEXCEL + ";ReadOnly=1;"
но и он не работает, валится с ошибкой:
"Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию"
В администраторе источников данных только 32 битные источники для Excel (C:\Windows\SysWOW64\odbcad32.exe)
Строка соединения = "Driver={Microsoft EXCEL Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=" + ФайлEXCEL + ";ReadOnly=1;"
но и он не работает, валится с ошибкой:
"Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию"
В администраторе источников данных только 32 битные источники для Excel (C:\Windows\SysWOW64\odbcad32.exe)
попробуйте посмотреть тут http://1c-pro.ru/threads/podkljuchenie-k-baze-mysql*51834/(поставьте . вместо *)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот