Имя: Пароль:
1C
 
Как получить колонку по ее номеру в Excel (ADODB+SQL)
0 bask
 
28.06.07
18:28
Имеется файл xls, с 2-мя колонками, например Товар и Цена.
с помощью ADODB+SQL можно получить запросом значения всех записей в этом xls:

SELECT
 [Товар], [Цена]
FROM
 [Sheet1$]

Вопрос: Как обратиться в запросе к колонкам не по имени, а по номеру колнки или ее имени???
1 bask
 
28.06.07
18:31
+ (0)

что-то вроде (написаное ниже не работает, уже проверял :))

SELECT
 [A$], [B$]
FROM
 [Sheet1$]

где A, B номера первых 2-ух колонок
2 bask
 
28.06.07
18:55
up
3 asady
 
28.06.07
19:02
(0)
вот пример:

http://vladweb.narod.ru/help/excel.htm
4 asady
 
28.06.07
19:12
5 bask
 
28.06.07
19:17
(3) спасибо за ссылку, но в этих примерах ответа нет, запрос написанный там обращается ко всем полям "sQuery = "SELECT * FROM [" & sSheet(n) & "$]"
", а мне надо к отдельным и по номерам столбцов(не по именам, которые, в принципе могут быть какими угодно), или каким-либо другим представлениям, которые однозначно будут идентифицировать столбцы.
6 asady
 
28.06.07
19:18
(0)
Specify an Unnamed Range

To specify an unnamed range of cells as your recordsource, append standard Excel row/column notation to the end of the sheet name in the square brackets. For example:    

strQuery = "SELECT * FROM [Sheet1$A1:B10]"
               
http://support.microsoft.com/default.aspx?scid=kb;EN-US;257819#Connect
7 bask
 
28.06.07
19:18
(4) - эту сейчас посмотрю
8 bask
 
28.06.07
19:25
(4) - там тоже по именам - не подходит :(
(6) - а вот это сейчас опробую. Еще раз огромное спасибо
9 bask
 
28.06.07
19:35
(6) Еще раз огромное СПАСИБО!!!

"SELECT * FROM [Sheet1$A1:B10]" для выборки из диапазона ячеек

"SELECT * FROM [Sheet1$A:B]" для выборки из первых 2-ух колонок
10 bask
 
28.06.07
19:57
:)))

появилась еще одна проблема:

если в листе EXCEL есть несколько колонок, а выборку в этом случае необходимо сделать по колонкам, не следующим друг за другом, как в этом случае будет выглядеть запрос?

Например, колонки A, B, C, D, E.
Сделать выборку по колонкам  B, C и E
11 vde69
 
28.06.07
20:02
смотри именованные поля

как вариант сделай вложенный со * и к его результатам обращайся как хочешь
12 bask
 
28.06.07
20:09
в силу ряда причин именованные поля не подходят.
вложенный запрос посему также не подходит, т.к. после селект возможно в моем случае только *
13 Neco
 
28.06.07
20:10
(10) Несколько запросов к разным диапазонам соединенных через UNION
14 bask
 
28.06.07
20:28
(13) тоже вариант, но тогда придется для каждого столбца отдельно писать свой селект, в результате получу 1 столбец со всеми данными из B, C и E. Хотелось бы все-таки в результате запроса получить 3 столбца, вместо одного.
15 Kalambur
 
28.06.07
20:38
(14) может на sql.ru скажут?
16 bask
 
29.06.07
01:09
(15) уже поднял там такую же тему, но пока молчат
17 774816
 
29.06.07
07:41
так можно обращаться к колонкам
SELECT F1, F3, F2
FROM table
но только в том случае если колонка не присвоены имена
18 bask
 
29.06.07
10:27
(17) колонкам имена не присвоены,

запрос:
SELECT F1, F3, F2
FROM [Sheet1$]

не работает!
19 bask
 
29.06.07
11:04
Все еще не сдаюсь :)
еще один ап
20 774816
 
29.06.07
12:07
Вот две строки экс.дока к которым обращаюсь через F, и все работает
|   |            |         |              |       |      |
|156|01.01.2007|    1 |    Авто масло        |150,20р.|    45|
самая первая строка без значений т.е. наименований колонок нет и типы колонок второй строки разные, если тип значений второй строки  будет текстовой то наименования колонок унаследуют значение этой строки
21 вщдеук
 
29.06.07
16:35
открываем файл ёкселя через оле, добавляем одну строку вначале типа F1,F2,F3,..,Fn
закрываем с записью, открываем через адо и обращаемся к полям по номерам в любом порядке
22 bask
 
02.07.07
10:34
(20), (21) спасибо за идею.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.