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

Помогите разобраться с ADO и Excel

Автор beztrud, 19 июн 2014, 23:26

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

beztrud

cska-fanat-kz  в Вашем файле эксель как я понял обязателен знак "#" как признак окончания. А если его нет - то тогда?

cska-fanat-kz

Если ПроверочнаяЯчейка = "" Тогда
     
         Прервать;
     
      КонецЕсли;

т.е. еще и на пустую ячейку проверяется
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

beztrud

Странно, у меня в бесконечность загрузка уходит.

счСтроки = 1;
    НомСтр = 0;
   Пока ИСТИНА Цикл       
      НомСтр = НомСтр + 1;     
      ОбработкаПрерыванияПользователя();     
      ПроверочнаяЯчейка = Эксель.Sheets(1).Cells(СчСтроки,1).Value;   
      Если ПроверочнаяЯчейка = "#" Тогда
         Прервать;
      КонецЕсли; 
      Если ПроверочнаяЯчейка = "" Тогда   
         Прервать;   
      КонецЕсли;   
      Состояние("Загрузка: строка №"+счСтроки);     
  НоваяСтрока = Объект.Вычисления.Добавить();
  НоваяСтрока.ЧастьИзделия = НомСтр;
  Для Ш=1 По Объект.Вычисления.Количество()-1 Цикл
     мКолонка = Объект.Вычисления.Получить(Ш);
     ЗначениеЯчейки = Эксель.Sheets(1).Cells(СчСтроки,Ш).Value;   
КонецЦикла;       
  счСтроки = счСтроки + 1;     
   КонецЦикла; 
   Эксель.Application.Quit();

cska-fanat-kz

проверяй, чему равна ПроверочнаяЯчейка...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

beztrud

Проверочная ячейка как раз пустая, т.е не содержит никаких данных
Добавлено: 22 июн 2014, 10:11


Вот файл Excel
Добавлено: 22 июн 2014, 20:21


Вопрос к Dethmontt. Вы писали
Цитировать1. Создаем реквизит формы Таблица
2. Заполняем ее на клиенте (отключаемся от ADO)
Но насколько я понимаю загрузка через ADO предполагает ЗАПРОС, а он доступен только на сервере.
Совсем запарился. Все данные считывает, но вот на клиент передать не может! Как же все-таки таблицу на клиент запихнуть?

Dethmontt

Цитата: beztrud от 21 июн 2014, 18:31Но насколько я понимаю загрузка через ADO предполагает ЗАПРОС, а он доступен только на сервере.

Запрос к БАЗЕ - ДА
Запрос к файлу - НЕТ
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

beztrud

Если тащу запрос на клиенте возникает ошибка при Выборка.Open(ТекстЗапроса, Connection);

Dethmontt

beztrud, Бр....

А Connection ты на сервере что ли создаешь? (база файловая)?

Цитата: beztrud от 23 июн 2014, 08:43Если тащу запрос на клиенте возникает ошибка при
А какая ошибка?
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

beztrud

База файловая (без сжатия). Ошибка Ошибка при вызове метода контекста (EOF)
Пока НЕ Выборка.EOF() Цикл
по причине:
Произошла исключительная ситуация (ADODB.Recordset): Операция не допускается, если объект закрыт.
Вот код:

Процедура ФайлНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
...
Connection=Новый COMОбъект("ADODB.Connection");
СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Строка(Объект.Файл)+";Extended Properties=""Excel 8.0;HDR=YES;IMEX=1""";
Попытка
Connection.Open(СтрокаПодключения);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
ТекстЗапроса =
"SELECT
|*
|FROM
|    [Лист1$] as Лист";
Выборка = Новый COMОбъект("ADODB.Recordset");
Попытка
Выборка.Open(ТекстЗапроса, Connection);
Исключение
Сообщить ("Проблемы с выполнением запроса");
КонецПопытки;
Пока НЕ Выборка.EOF() Цикл ....

Dethmontt

В серверном варианте работать не будет если на сервере не установлен ЭКСЕЛЬ (даже если и установлен, то работать будет медленно!)
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

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

Рейтинг@Mail.ru

Поиск