Устранение ошибки "Создание соединения: ADODB.Connection"

1. Светлый ум 407 29.04.19 06:52 Сейчас в теме
Основной вопросы:

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 = СтрокаПодключения;

Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
19. ivan453 16.05.19 19:57 Сейчас в теме +50 $m
Если разрядность операционной системы и офиса будут отличаться, то совместимый драйвер из поста (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
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. user856012 14 29.04.19 09:47 Сейчас в теме
(1)
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;""";
	КонецЕсли;
 
То есть, даже для файлов XLS и XLSX строка разная.

И да, работает это на клиенте.
2) Какие компоненты microsoft должны быть установлены для работы с серверной базой данных в MSSQL?
ИМХО, от формата базы это не зависит.
Светлый ум; +1 Ответить
4. iksanow1988 2 29.04.19 07:39 Сейчас в теме
Я перевел процедуру загрузки на клиент, все заработало.
6. Светлый ум 407 30.04.19 11:54 Сейчас в теме
Вроде все просто и на поверхности... а воз и ныне там:

32 битная библиотека устанавливается, 64 валится с ошибкой:
"The installation of this package failed"

- Cоответственно методы ADO попрежнему недоступны, нашел аналогичную ветку форума с такой же проблемой

https://www.programmersforum.ru/showthread.php?p=1778393
8. user856012 14 30.04.19 12:32 Сейчас в теме
(6)
32 битная библиотека устанавливается, 64 валится с ошибкой:
"The installation of this package failed"
А устанавливаете совместимую с Windows 10 версию? Вот эту: https://www.microsoft.com/en-us/download/details.aspx?id=54920 или более старую?
15. Светлый ум 407 06.05.19 05:57 Сейчас в теме
Совместимый с Windows 10 драйвер не устанавливается не в какую.
- установился только 32 битный "Microsoft Access Database Engine 2010"
19. ivan453 16.05.19 19:57 Сейчас в теме +50 $m
Если разрядность операционной системы и офиса будут отличаться, то совместимый драйвер из поста (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
7. Светлый ум 407 30.04.19 11:57 Сейчас в теме
Уточню Windows 10, офис 16... хотя офис судя по всему тут не причем
9. Team leader 12 02.05.19 19:20 Сейчас в теме
чтобы проверить строку соединения

создаешь пустой текстовый файл
меняешь расширение на udl
открываешь, на вкладке Поставщик данных, находишь своего поставщика, на второй вкладке забиваешь параметры, тестируешь, если все верно, открываешь блокнотом, копируешь полученную строку, в большинстве случаев помогает

если нет поставщика, значит он установлен неверно
10. Team leader 12 02.05.19 19:21 Сейчас в теме
Еще бывают такие нюансы:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+СокрЛП(ИмяФайла)+";Extended Properties=""Excel 8.0;IMEX=1;""";

пришлось заменить на -
"Driver={Microsoft Excel Driver (*.xls)};Dbq=" + СокрЛП(ИмяФайла) + ";"
11. Светлый ум 407 02.05.19 19:31 Сейчас в теме
Да, более старый драйвер качал из статьи
https://infostart.ru/public/163640/

ссылка на драйвер (старый):
https://www.microsoft.com/en-us/download/details.aspx?id=13255

(этот коммент, чтобы другие не качали его)
12. Team leader 12 03.05.19 21:53 Сейчас в теме
надо добавить такие ключи, и прописать в них значения и 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
daho; BarsukM; +2 Ответить
13. Team leader 12 03.05.19 22:09 Сейчас в теме
Загрузка из XLSXB возможна черз ADODB.
Строка соединения = "Driver={Microsoft EXCEL Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=" + ФайлEXCEL + ";ReadOnly=1;"
14. Светлый ум 407 06.05.19 05:50 Сейчас в теме
Такой нюанс еще бывает:

Проблема в 64bit архитектуре. ОС у меня стоит 64-битная. Но если настройку Источники данных ODBC открывать через
Панель управления - Администрирование - Источники данных ODBC,
- то создается источник данных для 32bit

Чтобы создать для 64bit нужно открыть настройку источника через C:\Windows\SysWOW64\odbcad32.exe, именно эта настройка создаст источник для 64bit
16. Светлый ум 407 06.05.19 06:02 Сейчас в теме
Я уже бы и отказался от 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)
17. user1218675 14.05.19 17:56 Сейчас в теме
18. user1218675 14.05.19 17:57 Сейчас в теме
20. ivan453 16.05.19 20:01 Сейчас в теме +50 $m
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот