Имя: Пароль:
1C
1С v8
Запрос к файлу Excel
0 Kasper076
 
14.10.11
14:57
Платформа 8.1.15.14 Win XP SP3

Есть код:

ПодключитьВнешнююКомпоненту("GameWithFire.ADOUtils");
ADOUtils = Новый("AddIn.ADOUtils");
Connection = Новый COMОбъект("ADODB.Connection");
Connection.Open("Driver={SQL Server};Server=MWSS;Database=master;Uid=sa;Pwd=;");
СписокДокументов = "
|SELECT * FROM
|OPENROWSET('Microsoft.Jet.OLEDB.4.0',
|'Excel 8.0;Database=" + ПолноеИмяФайла + "',
|'SELECT * FROM [" + ИмяЛиста + "$]')
|";
Recordset = Connection.Execute(СписокДокументов);
//Выгрузка результата запроса в ТЗ
ТЗ = ADOUtils.ADORecordsetToValueTable(Recordset);

На сервере (Win S 2003 SP2)все работает нормально? а вот на клиентсой машине выдает следующую ошибку:
"Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][SQL Server]Поставщик OLE DB "Microsoft.Jet.OLEDB.4.0" для связанного сервера "(null)" сообщил об ошибке. Поставщик не предоставил данных об ошибке.
   Recordset = Connection.Execute(СписокДокументов);
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][SQL Server]Поставщик OLE DB "Microsoft.Jet.OLEDB.4.0" для связанного сервера "(null)" сообщил об ошибке. Поставщик не предоставил данных об ошибке."

В чем может быть причина?
1 shuhard
 
14.10.11
15:10
(0)  [ПолноеИмяФайла] подозрительное,
может нет на MWSS пути к нему
2 Happy Bear
 
14.10.11
15:15
Ха, хорошо компоненту назвал ;))
Версия екселя везде одинаковая?
3 Kasper076
 
14.10.11
15:17
Компонента не моя. На сервере вообще нет Ехеля.
4 shuhard
 
14.10.11
15:17
(2) гм, вроде тут эксель не участвует,
ADODB работает через линкованныый MS SQL сервер?

видимо чтобы скрыть прямой доступ к xls файлу по сети
5 shuhard
 
14.10.11
15:19
(2) а, ты о Excel 8.0,
ТС - вопрос то верный

xls не может быть 2003 ?
6 aleks-id
 
14.10.11
15:21
я вот так делал
только надо скачать и установить на комп http://www.microsoft.com/download/en/details.aspx?id=23734

   СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = "+Путь;
       СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 12.0"+";HDR=NO;IMEX=1"";";
       
   // Подключаемся
   Об_Конект = Новый COMОбъект("ADODB.Connection");
   Попытка
       Об_Конект.Open(СтрокаПодключения);
   Исключение
       Сообщить ("Невозможно подключится к Microsoft Excel Driver!!!
       |Возможно файл ["+Путь+"] открыт другим пользователем.");
       Возврат;
   КонецПопытки;
       
   СтрЗапроса = "
   |SELECT *
   |FROM [A" + Формат(НачальнаяСтрока,"ЧГ=0") + ":CZ" + Формат(КонечнаяСтрока,"ЧГ=0") + "]
   |";
       
   RecordSet =  Новый COMОбъект("ADODB.Recordset");

   Попытка
       RecordSet = Об_Конект.Execute(СтрЗапроса);
   Исключение
       Сообщить("Не удалось выполнить запрос к файлу Excel
       |"+ ОписаниеОшибки(),СтатусСообщения.Важное);
       Возврат;
   КонецПопытки;
7 aleks-id
 
14.10.11
15:22
+(6) читает и xls и xlsx
8 shuhard
 
14.10.11
15:23
(6) симпатичный провайдер
9 Kasper076
 
14.10.11
15:26
Смысл???
RecordSet =  Новый COMОбъект("ADODB.Recordset");
RecordSet = Об_Конект.Execute(СтрЗапроса);
10 Kasper076
 
14.10.11
15:27
Больше волнует почему на сервере работает, а на компе нет.
11 Kasper076
 
14.10.11
15:28
(5) На серваке любой xls хавает.
12 shuhard
 
14.10.11
15:29
(10) начни с простого
- версии
- права
- пути
13 Kasper076
 
14.10.11
15:30
-версии чего??
-права админские везде
-пути эдентичны
14 Kasper076
 
14.10.11
15:31
*идентичны
15 shuhard
 
14.10.11
15:32
(13) права админские везде  - от какой учетной записи запущен MS SQL и есть ли у ней права на ПолноеИмяФайла ?
16 Kasper076
 
16.10.11
10:10
Если на сервере все работает, значит учетке, от которой запущен SQL прав хватает.