Имя: Пароль:
1C
 
Запрос к xls
0 Олеся999
 
19.07.17
11:24
подскажите пожалуйста как запросом прочитать из эксель все колонки
от A до H ?
Запрос = "SELECT * FROM [Лист1$A:B:C:D:E:F:G:H]";
так почему то не работает ((
и как сделать допустим что бы колонка "A" грузилась в колонку тз которая называется "Номер", а колонка "B" грузилась в колонку тз которая называется "ФИО" итд.
что то в роде: A AS Номер
               B AS ФИО
1 END
 
19.07.17
11:25
А зачем запросом? Просто через OLE нельзя?
2 Олеся999
 
19.07.17
11:32
(1) Неа через ADODB.Connection делаю )
3 END
 
19.07.17
11:34
(2) Т.е. принципиально надо запросом? Вы же можете любую технологию использовать для общения с экселем - разве нет?
4 Олеся999
 
19.07.17
11:37
(3) Могу, но дело в  том что на устройстве нет эксель. поэтому делаю так.
5 xaozai
 
19.07.17
11:37
Чисто предположение: )

SELECT A as Nmber, B as FIO FROM [Sheet1$]
6 PuhUfa
 
19.07.17
11:38
7 Олеся999
 
19.07.17
11:45
(5) Так не будет работать:)
8 VS-1976
 
19.07.17
11:58
SELECT F1 as Nmber, F2 as FIO FROM [Sheet1$]

Так будет
9 xaozai
 
19.07.17
12:05
(8) Да, так работает )

Накидал вот ради интереса:

Процедура КнопкаВыполнитьНажатие(Кнопка)
    СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = C:\Users\USER\Desktop\Книга1.xlsx; Extended Properties = ""Excel 12.0;HDR=NO;IMEX=1"";";
    
    ADODB_Connection = Новый COMОбъект("ADODB.Connection");
    
    Попытка
        ADODB_Connection.Open(СтрокаПодключения);
    Исключение
        Сообщить (ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    
    СтрЗапроса = "SELECT F1 as Nmber, F2 as FIO FROM [Лист1$]";

    Попытка
        RecordSet = ADODB_Connection.Execute(СтрЗапроса);
    Исключение
        Сообщить (ОписаниеОшибки());
        Возврат;
    КонецПопытки;

    Пока НЕ RecordSet.EOF() Цикл    
        Сообщить("" + RecordSet.Fields(0).value + " | "  +  RecordSet.Fields(1).value);
        RecordSet.MoveNext();    
    КонецЦикла;
    
КонецПроцедуры
10 xaozai
 
19.07.17
12:07
+(9) Или так строку можно заменить:

Сообщить("" + RecordSet.Fields("Nmber").value + " | "  +  RecordSet.Fields("FIO").value);
11 Олеся999
 
19.07.17
12:15
Странно у меня пишет ошибка запроса

ТекстЗапроса = "SELECT
           | F1 as Номер,
               | F2 as ФИО  
               | FROM [Лист1$]";
12 Олеся999
 
19.07.17
12:16
Так работает но добавляет только одну строку
ТекстЗапроса = "SELECT * FROM [Лист1$A:B]";
13 xaozai
 
19.07.17
12:18
(11) SELECT F1 as [Номер], F2 as [ФИО] FROM [Лист1$]
Ежели по-русски.
14 VS-1976
 
19.07.17
12:23
(13) Вообще скобки нужны если в наименовании есть пробел, вроде как
15 xaozai
 
19.07.17
12:26
(14) Квадратные скобки обязательны, если имя не соответствует требованиям к идентификаторам, вроде как...
16 VS-1976
 
19.07.17
12:30
(15) С русским наименованием прокатывает. Системе побоку если это одно слово
17 Олеся999
 
19.07.17
12:32
(13) я что то попробовала, серавно ошибку запроса пишет
18 xaozai
 
19.07.17
12:34
(17) Ну, а что в описании ошибки?
19 Олеся999
 
19.07.17
12:38
(18) Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Access Database Engine): Отсутствует значение для одного или нескольких требуемых параметров.
20 xaozai
 
19.07.17
12:40
(19) Так это не для запроса.
Это в строке подключения ошибка.
21 Олеся999
 
19.07.17
12:46
(20) Нет по отладке посмотрела

полкл проходит, а валится на

Выборка = Новый COMОбъект("ADODB.Recordset");

Попытка
        Выборка.Open(ТекстЗапроса, Connection);
Исключение

    Сообщить ("Проблемы с выполнением запроса");
        
    Сообщить (ОписаниеОшибки());
    Возврат;
    
КонецПопытки;
22 xaozai
 
19.07.17
12:49
(12) Попробуйте как в (9).
23 Олеся999
 
19.07.17
12:54
(22) а так :  Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft Access Database Engine): Отсутствует значение для одного или нескольких требуемых параметров.
24 VS-1976
 
19.07.17
12:59
(23)
пЗаголовок = ?( пЗаголовок, "Yes", "No" );
пConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""" + пПутьКФайлу + """;Extended Properties=""Excel 12.0 Xml;HDR=" + пЗаголовок + """;";

Попытка
  пКоннектор = Новый COMОбъект( "ADODB.Connection" );
  пКоннектор.ConnectionString = пConnectionString;

  Попытка
    пКоннектор.Open();

  Исключение
    пКоннектор = Неопределено;
    Сообщить( "Не удалось подключиться к источнику." + Символы.ПС + ОписаниеОшибки() );

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

Исключение
  Сообщить( "Нет драйвера ADODB." + Символы.ПС + ОписаниеОшибки() );

КонецПопытки;
25 xaozai
 
19.07.17
13:09
(23) Можт, это установить нужно: http://www.microsoft.com/download/en/details.aspx?id=23734
Это драйвер для работы с excel ч/з ADODB.
26 Олеся999
 
19.07.17
14:33
(25) Установлено, так как выполняя этот запрос: ТекстЗапроса = "SELECT * FROM [Лист1$]";
добавляет строку, но почему то только  одну
27 Олеся999
 
19.07.17
14:39
(24) так она подключается :)
28 Олеся999
 
19.07.17
15:08
в предопределенные колонки записывает все как надо