Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 апр 2024, 09:02

ADO и 1С

Автор Дринкинс, 12 июл 2013, 14:10

0 Пользователей и 1 гость просматривают эту тему.

Дринкинс


    Соединение=Новый COMОбъект("ADODB.Connection");
    RecordSet=Новый COMОбъект("ADODB.Recordset");
    //Соединение.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(ИмяФайлаЗагрузки)+";Extended Properties=""Excel 8.0;HDR=No; IMEX=1;""";
    Соединение.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(ИмяФайлаЗагрузки)+";Mode=Share Deny None;Extended Properties=Excel 8.0;Persist Security Info=False";
    Соединение.Open();   
    RecordSet.ActiveConnection = Соединение;
    RecordSet.CursorType = 3;
    RecordSet.LockType = 2;
    cat=Новый COMОбъект("ADOX.Catalog");
    cat.ActiveConnection=Соединение;
    //RecordSet.Source = "Select Лист.* from ["+cat.Tables(0).Name+"]";
   
    ТекстЗапроса =
   "SELECT
   |    *
   |FROM
   |    [" + ИмяФайлаЗагрузки + "$] as Лист";
   
    Попытка
       RecordSet.Open(ТекстЗапроса,Соединение);
    Исключение
       Сообщить(ОписаниеОшибки());
       Возврат;
    КонецПопытки;
   
    ТЗ=Новый ТаблицаЗначений();
    КоличествоКолонок = RecordSet.Fields.Count;
    Для НомерКолонки=0 По КоличествоКолонок - 1 Цикл
        ТЗ.НоваяКолонка(RecordSet.Fields(НомерКолонки).Name);
    КонецЦикла;
    Пока RecordSet.Eof()=0 Цикл
        ТЗ.НоваяСтрока();
        Для НомерКолонки=0 По КоличествоКолонок - 1 Цикл
            ТЗ.УстановитьЗначение(ТЗ.НомерСтроки,НомерКолонки+1,RecordSet.Fields(НомерКолонки).Value);
        КонецЦикла;
        RecordSet.MoveNext();
    КонецЦикла;
    RecordSet.Close();
    Соединение.Close();
    ТЗ.ВыбратьСтроку();


Может кто подскажет почему выдает ошибку:

{Форма.Форма.Форма(22)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft JET Database Engine): Недопустимое имя 'C:\sheet.xls$'.  Проверьте, что оно не содержит недопустимые символы или знаки препинания, а также не является слишком длинным.


Dethmontt

А что в - ИмяФайлаЗагрузки ?
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

Цитата: Дринкинс от 12 июл 2013, 14:10C:\sheet.xls$
есть подозрение что тут что то лишнее
C:\sheet.xls$
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Дринкинс

Цитата: Dethmontt от 12 июл 2013, 14:22
А что в - ИмяФайлаЗагрузки ?
Путь до файла.
Добавлено: 12 июл 2013, 14:25


Цитата: Dethmontt от 12 июл 2013, 14:24
Цитата: Дринкинс от 12 июл 2013, 14:10C:\sheet.xls$
есть подозрение что тут что то лишнее
C:\sheet.xls$

Если из запроса убрать $ то все равно ошибка.

Dethmontt

Из какого запроса?!!!
Добавлено: 12 июл 2013, 14:31


Цитата: Дринкинс от 12 июл 2013, 14:10Соединение=Новый COMОбъект("ADODB.Connection");
    RecordSet=Новый COMОбъект("ADODB.Recordset");
    //Соединение.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(ИмяФайлаЗагрузки)+";Extended Properties=""Excel 8.0;HDR=No; IMEX=1;""";
    Соединение.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(ИмяФайлаЗагрузки)+";Mode=Share Deny None;Extended Properties=Excel 8.0;Persist Security Info=False";
    Соединение.Open();   
У тебя эта часть не работает!

Добавлено: 12 июл 2013, 14:32


Для Microsoft.Jet.OLEDB.4.0 вот правильный синтаксис:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

Добавлено: 12 июл 2013, 14:33


http://www.connectionstrings.com/excel/
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Дринкинс

Цитата: Dethmontt от 12 июл 2013, 14:30
Из какого запроса?!!!
Добавлено: 12 июл 2013, 14:31


Цитата: Дринкинс от 12 июл 2013, 14:10Соединение=Новый COMОбъект("ADODB.Connection");
    RecordSet=Новый COMОбъект("ADODB.Recordset");
    //Соединение.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(ИмяФайлаЗагрузки)+";Extended Properties=""Excel 8.0;HDR=No; IMEX=1;""";
    Соединение.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(ИмяФайлаЗагрузки)+";Mode=Share Deny None;Extended Properties=Excel 8.0;Persist Security Info=False";
    Соединение.Open();   
У тебя эта часть не работает!

Добавлено: 12 июл 2013, 14:32


Для Microsoft.Jet.OLEDB.4.0 вот правильный синтаксис:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

Добавлено: 12 июл 2013, 14:33


http://www.connectionstrings.com/excel/
Если например так
Соединение = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";
то ошибка при контроле кода

Dethmontt

конечно... Кавычки то кто расставлять будет?
СтрокаСоединения = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""";
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Дринкинс

Цитата: Dethmontt от 12 июл 2013, 15:20
конечно... Кавычки то кто расставлять будет?
СтрокаСоединения = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""";
Я расставил кавычки нов се равно:
{Форма.Форма.Форма(22)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft JET Database Engine): Недопустимое имя 'C:\sheet.xls$'.  Проверьте, что оно не содержит недопустимые символы или знаки препинания, а также не является слишком длинным.
Добавлено: 12 июл 2013, 15:27


может чегото в винде не хватает?

Dethmontt

СтрокаСоединения = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""";
С этой строкой у тебя валиться ошибка недопустимое имя C:\sheet.xls$?
Добавлено: 12 июл 2013, 16:04


Файл то на диске С:\ есть такой? sheet.xls

Соединение=Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\sheet.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""";
Попытка
    Соединение.Open();
Исключение
   Сообщить(ОписаниеОшибки());
   Возврат;
КонецПопытки;
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Дринкинс

Вот с этой
RecordSet.Open(ТекстЗапроса,Соединение);
Добавлено: 12 июл 2013, 16:05


Цитата: Dethmontt от 12 июл 2013, 16:01
СтрокаСоединения = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""";
С этой строкой у тебя валиться ошибка недопустимое имя C:\sheet.xls$?
Добавлено: 12 июл 2013, 16:04


Файл то на диске С:\ есть такой? sheet.xls

Соединение=Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\sheet.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""";
Попытка
    Соединение.Open();
Исключение
   Сообщить(ОписаниеОшибки());
   Возврат;
КонецПопытки;

файл конечно есть

Теги:

Похожие темы (2)

Рейтинг@Mail.ru

Поиск