Ошибка adodb connection

Доброго времени суток!
  • Remove From My Forums
  • Вопрос

  • Доброго времени суток!

    Ситуация следующая. Имеем MS Server 2008 Standart x64 SP1, MS SQL 2008 Standart x64 SP3, 1С предприятие 8.2.14.540 x64 (клиент серверный вариант). Сервер в домен не входит.

    Соответственно в 1с идет загрузка накладных из файла xls. На сервере установлен MS Office 2010 x64. Ошибка идет при загрузке excel файла «Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанного
    поставщика. Вероятно, он установлен неправильно.»

    В логах винды ошибок нет. Делал настройку dcomcnfg, чтобы пользователь usr1cv82, под которым запускается «Агент сервера 1с», имел доступ к com объектам. Также его добавил в группу Пользователи DCOM. Причем для тестирования то же самое делал на Server 2008 Standart
    R2 SP1 — там все работало.

    • Перемещено

      20 апреля 2012 г. 9:34
      merge forums (От:Windows Server 2008)

Ответы

    • Помечено в качестве ответа
      Yuriy Lenchenkov
      27 февраля 2012 г. 12:54
  • Спасибо за ответ, но самое интересное, что у меня получилась загрузка на windows 2008 r2 (и sql 2008r2). И еще я заметил, что в dcomcnfg
    на 
    2008 Standart x64 в Настройках DCOM нет пункта Приложение Excel, а в R2 есть….

    • Помечено в качестве ответа
      Yuriy Lenchenkov
      27 февраля 2012 г. 12:54

mov68
26.10.2010 10:25 Прочитано: 15274

Есть файл для загрузки Excel 2007:
1.Работают ли описанные на сервере методы работы с Exсel в 2007? Если есть отличия, дайте пример плиз…
2.На компе стоят и Excel 2003 и Excel 2007, как в таком случае при запуске COMобъекта указать какой запускать?

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
26.10.2010 11:16 Ответ № 1

1. Не совсем понятен вопрос!? что значит — описанные на сервере методы работы с Exсel?
2. объект всегда один:
Код 1C v 8.х

 Попытка
Excel=Новый ComОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
mov68
26.10.2010 12:29 Ответ № 2

Да, именно так Exсel и открывают, если на компе 2 версии Exсel, какая откроется? как задать чтобы открылась нужная?

mov68
26.10.2010 12:31 Ответ № 3

Например работа через ADO DB, взятая с этого сервера прекрасно работает с 2003 версией и не работает с 2007, сейчас разбираюсь…

E_Migachev
26.10.2010 13:43 Ответ № 4

(2) никак, объект Excel.Application — одни, от последней устатовки
(3) давай код и какую ошибку выводит, посмотрим )

mov68
26.10.2010 14:18 Ответ № 5

Код 1C v 8.х

 еБаза=Новый COMОбъект("ADODB.Connection");
//Если необходимо в дальнейшем оперировать цифровыми значениями колонок,то ставим признак HDR = NO
//если необходимо производить загрузку с учетом псевдонимов в 1й строке,то ставим HDR = YES
СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = "+ИмяФайла;
СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 8.0"+";HDR=NO;IMEX=1"";";

Попытка
еБаза.Open(СтрокаПодключения);
Исключение
Сообщить(ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;

влетает с 2007 в исключение с ошибкой:
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft JET Database Engine): Внешняя таблица не имеет предполагаемый формат

С форматом 2003-го все нормально грузится

mov68
26.10.2010 14:20 Ответ № 6

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

E_Migachev
26.10.2010 14:57 Ответ № 7

(5) При использовании Office 2007 необходимо заменить в примере следующую строку кода:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
Замените эту строку кода следующей строкой:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=

mov68
26.10.2010 15:01 Ответ № 8

А Extended Properties оставляем Excel 8.0?

E_Migachev
26.10.2010 15:05 Ответ № 9

(8) тоже меняется на:
Extended Properties=Excel 12.0

E_Migachev
26.10.2010 15:08 Ответ № 10

Код 1C v 8.х

  // читаем данные
оЕксел = Новый COMОбъект("Excel.Application");
Version = оЕксел.Version;

Версия = Число(Сред(Version,1,Найти(Version,".")-1));
оЕксел.Quit();
Для Каждого Лист ИЗ СписокЛистов Цикл
ОбработкаПрерыванияПользователя();
Попытка
conn = NEW COMObject("ADODB.Connection");
conn.Provider = "Microsoft." + ?(Версия = 12,"ACE.OLEDB.12.0","Jet.OLEDB.4.0");
conn.Properties("Extended Properties").Value = "Excel " + ?(Версия = 12,"12.0","8.0") + ";HDR=NO;IMEX=1;MAXSCANROWS=200;FIRSTROWHASNAMES=1";
rs = NEW COMObject("ADODB.RecordSet");
conn.Open(ПолноеИмяФайла);
rs.ActiveConnection = conn;
rs.CursorType = 3;
rs.LockType = 2;
rs.Open("S_elect TOP 2000 * FROM `" + Лист.Значение + "$A:AX` ");

СчСтрок = 0;
КолКолонок = rs.Fields.Count;

Пока НЕ rs.EOF Цикл
rs.MoveNext();

КонецЦикла;

//................................

// Записываем
conn = NEW COMObject("ADODB.Connection");
strConn = "Provider=Microsoft." + ?(Версия = 12,"ACE.OLEDB.12.0","Jet.OLEDB.4.0") + ";"
+ "Data Source=" + FileName + ";Extended Properties=Excel " + ?(Версия = 12,"12.0","8.0");
conn.ConnectionString = strConn;

Попытка
conn.Open();
cmd = NEW COMObject("ADODB.Command");
cmd.ActiveConnection = conn;
Попытка
cmd.CommandText = "CREATE TABLE `MyList` (Value_1 char(255), Value_2 char(255))";
cmd.Execute();
Исключение
КонецПопытки;
cmd.CommandText = "I_nsert INTO `MyList` (Value_1, Value_2) values ('AAA', 'Andrew')";
cmd.Execute();
conn.Close();
Исключение
Сообщить(ОписаниеОшибки());
Попытка
conn.Close();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;

КонецПопытки;

mov68
26.10.2010 15:08 Ответ № 11

СПАСИБО, сработало, и как ни странно даже при Extended Properties=Excel 8.0

Вопрос закрыт. Еще раз спасибо.

E_Migachev
26.10.2010 15:49 Ответ № 12

)

andogskiy
12.11.2012 16:19 Ответ № 13

А для серверного варианта базы на управляемых формах не подскажете код?
Приведенный пример выдает ошибку: «Ошибка при вызове метода контекста (Properties): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.»

DJ_Serega
12.11.2012 18:30 Ответ № 14

а я подключаю Excel вот таким образом:Код 1C v 8.х

 
Попытка
Эксель = Неопределено;
Книга = Неопределено;
Лист = Неопределено;

Состояние("Выполняется подключение к Excel");
Попытка
Книга = ПолучитьCOMОбъект(Файл, "Excel.Application");
Эксель = Книга.Application;
Исключение
Эксель = Новый COMОбъект("Excel.Application");
Книга = Эксель.WorkBooks.Open(Файл);
КонецПопытки;
Лист = Книга.WorkSheets(1);
Эксель.Visible = Истина;
Исключение
Сообщить("Не удалось подключить Excel." + Символы.ПС + ОписаниеОшибки());
Возврат;
КонецПопытки;

Подсказка: Для быстрого поиска ответов — используйте ‘Поиск’

System Requirements:

  • Windows NT 4.0
  • Windows 2000
  • Windows XP (x86)
  • Windows Server 2003 (x86)
  • Windows Server 2008 (x86)
  • Windows 7 (x86)
  • Windows Server 2003 (x64)
  • Windows Vista (x64)
  • Windows 7 (x64)
  • Windows Server 2008 (x64)
  • Windows Server 2008 R2 (x64)
  • Windows Server 2012 (x64)

The Problem:

When you attempt to connect to a Microsoft Access database using the ODBC provider Microsoft.Jet.OLEDB.4.0 you receive the error message:

ADODB.Connection error ‘800a0e7a’
Provider cannot be found. It may not be properly installed./path/file.asp, line ##

More Information:

For x64 Systems:

The Microsoft.Jet.OLEDB.4.0 is only available as a 32-bit (x86) module. In order to use it via IIS you must change the web site to run in a 32-bit application pool.

Under IIS 7.0, 7.5 or 8.0:

  • Assuming that you will not want to use ASP .net, in the IIS console in the Application Pools section, create a no managed code, integrated application pool. If you do want to maintain access to ASP .net, select the framework version you require.
  • Once created, in its advanced settings set “Enable 32-bit Applications” to true
  • In the Basic Settings… for the web site entry you are experiencing the error on, change the Application Pool to the newly created 32-bit pool.
  • Restart the web site

In most cases where the system is running under an x64 architecture, this should fix the problem.

For x86 and x64 Systems:

We had a server down for an entire day because of this one. It was either an attempt to fix a security database fault, or an update from Microsoft Update delivered in the April 2008 patch cycle, but after the reboot for the patches, none of the JET (Access) databases on the particular server, in any IIS web would operate.

I will simply cut to the fix for you in the beginning, to expedite your likely finding of a resolution to this problem. Something had caused the service provider for the Microsoft.Jet.OLEDB.4.0 provider to become unregistered. To fix the problem issue the following command from a Command Prompt or Run:

regsvr32.exe msjetoledb40.dll

You shouldn’t need to reboot to solve the problem, it didn’t in my case. However, if nothing happens do restart before progressing to the next step.

Additional Steps: Step 1

Reregister the components from MDAC, JET and ADO in their entirety. Simply copy the below into a BAT file and run it.

:: ADODB.Connection error '800a0e7a'

:: Provider cannot be found. It may not be properly installed.regsvr32.exe cfgmgr32.dll -s

regsvr32.exe cliconfg.dll -s

regsvr32.exe dasetupr.dll -s

regsvr32.exe dbmsgnet.dll -s

regsvr32.exe dbmsrpcn.dll -s

regsvr32.exe dbnetlib.dll -s

regsvr32.exe dbnmpntw.dll -s

regsvr32.exe expsrv.dll -s

regsvr32.exe msadce.dll -s

regsvr32.exe msadcer.dll -s

regsvr32.exe msadcf.dll -s

regsvr32.exe msadcfr.dll -s

regsvr32.exe msadco.dll -s

regsvr32.exe msadcor.dll -s

regsvr32.exe msadcs.dll -s

regsvr32.exe msadds.dll -s

regsvr32.exe msaddsr.dll -s

regsvr32.exe msader15.dll -s

regsvr32.exe msado15.dll -s

regsvr32.exe msadomd.dll -s

regsvr32.exe msador15.dll -s

regsvr32.exe msADOX.dll -s

regsvr32.exe msadrh15.dll -s

regsvr32.exe mscpxl32.dll -s

regsvr32.exe msdadc.dll -s

regsvr32.exe msdadiag.dll -s

regsvr32.exe msdaenum.dll -s

regsvr32.exe msdaer.dll -s

regsvr32.exe msdaora.dll -s

regsvr32.exe msdaorar.dll -s

regsvr32.exe MSDAOSP.dll -s

regsvr32.exe msdaprsr.dll -s

regsvr32.exe msdaprst.dll -s

regsvr32.exe msdaps.dll -s

regsvr32.exe msdarem.dll -s

regsvr32.exe msdaremr.dll -s

regsvr32.exe msdart.dll -s

regsvr32.exe msdasc.dll -s

regsvr32.exe msdasql.dll -s

regsvr32.exe msdasqlr.dll -s

regsvr32.exe msdatl3.dll -s

regsvr32.exe msdatt.dll -s

regsvr32.exe msdaurl.dll -s

regsvr32.exe msdfmap.dll -s

regsvr32.exe msjro.dll -s

regsvr32.exe msjtes40.dll -s

regsvr32.exe msorc32r.dll -s

regsvr32.exe msorcl32.dll -s

regsvr32.exe msvcirt.dll -s

regsvr32.exe msvcrt.dll -s

regsvr32.exe mswdat10.dll -s

regsvr32.exe mswstr10.dll -s

regsvr32.exe msxactps.dll -s

regsvr32.exe msxml3.dll -s

regsvr32.exe msxml3a.dll -s

regsvr32.exe msxml3r.dll -s

regsvr32.exe mtxdm.dll -s

regsvr32.exe mtxoci.dll -s

regsvr32.exe odbc16gt.dll -s

regsvr32.exe ODBC32.dll -s

regsvr32.exe ODBC32GT.dll -s

regsvr32.exe odbcbcp.dll -s

regsvr32.exe odbcconf.dll -s

regsvr32.exe ODBCCP32.dll -s

regsvr32.exe ODBCCR32.dll -s

regsvr32.exe ODBCCU32.dll -s

regsvr32.exe ODBCINT.dll -s

regsvr32.exe ODBCTRAC.dll -s

regsvr32.exe oledb32.dll -s

regsvr32.exe oledb32a.dll -s

regsvr32.exe oledb32r.dll -s

regsvr32.exe setupapi.dll -s

regsvr32.exe sqloledb.dll -s

regsvr32.exe sqlsrv32.dll -s

regsvr32.exe sqlunirl.dll -s

regsvr32.exe sqlxmlx.dll -s

regsvr32.exe vbajet32.dll -s:: OLEdB

regsvr32.exe %SystemRoot%System32msjetoledb40.dll:: Jet

regsvr32.exe %SystemDrive%Program FilesCommon FilesMicrosoft SharedDAOdao360.dll -s

regsvr32.exe %SystemRoot%System32expsrv.dll -s

regsvr32.exe %SystemRoot%System32msexch40.dll -s

regsvr32.exe %SystemRoot%System32msexcl40.dll -s

regsvr32.exe %SystemRoot%System32jet500.dll -s

regsvr32.exe %SystemRoot%System32msjet35.dll -s

regsvr32.exe %SystemRoot%System32msjet40.dll -s

regsvr32.exe %SystemRoot%System32msjetol1.dll -s

regsvr32.exe %SystemRoot%System32msjint40.dll -s

regsvr32.exe %SystemRoot%System32msjter40.dll -s

regsvr32.exe %SystemRoot%System32msjtes40.dll -s

regsvr32.exe %SystemRoot%System32msltus40.dll -s

regsvr32.exe %SystemRoot%System32mspbde40.dll -s

regsvr32.exe %SystemRoot%System32msrd2x40.dll -s

regsvr32.exe %SystemRoot%System32msrd3x40.dll -s

regsvr32.exe %SystemRoot%System32msrepl40.dll -s

regsvr32.exe %SystemRoot%System32mstext40.dll -s

regsvr32.exe %SystemRoot%System32mswdat10.dll -s

regsvr32.exe %SystemRoot%System32mswstr10.dll -s

regsvr32.exe %SystemRoot%System32msxbde40.dll -s

regsvr32.exe %SystemRoot%System32spmsg.dll -s

regsvr32.exe %SystemRoot%System32vbajet32.dll -s

:: ADO
regsvr32.exe %SystemDrive%Program FilesCommon FilesSystemadomsader15.dll -s
regsvr32.exe %SystemDrive%Program FilesCommon FilesSystemadomsado15.dll -s
regsvr32.exe %SystemDrive%Program FilesCommon FilesSystemadomsadomd.dll -s
regsvr32.exe %SystemDrive%Program FilesCommon FilesSystemadomsador15.dll -s
regsvr32.exe %SystemDrive%Program FilesCommon FilesSystemadomsadox.dll -s
regsvr32.exe %SystemDrive%Program FilesCommon FilesSystemadomsadrh15.dll -s
regsvr32.exe %SystemDrive%Program FilesCommon FilesSystemadomsjro.dll -s

Additional Steps: Step 2

Reinstall MDAC 2.8 SP1 (Windows XP SP1 or below only). You will need to perform some registry modifications before you can reinstall MDAC as it is a protected system module.

  1. Open Regedit
  2. Navigate to:
    HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionSetupExceptionComponents
  3. Look through each class ID for the following friendly name values. Delete the Class ID containing the matching friendly names:
    Microsoft MDAC Response Files
    Microsoft MDAC Setup Files
    Microsoft SQL Server ODBC Drivers
    Microsoft SQL Server Net Libs
    Microsoft SQL Server OLEDB Provider
    WebData Setup Exception Package
    Mdac 2.8 Exception Package
  4. Download and reinstall MDAC 2.8 SP1 from Microsoft which should reinstall in full.


Понравилась статья? Поделить с друзьями:
  • Ошибка a problem has been detected and windows has
  • Ошибка api ms win core libraryloader l1 2 0 dll как исправить windows 7
  • Ошибка adobe premiere a low level exception occurred in
  • Ошибка android recovery
  • Ошибка a java exception has occurred