Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
serj
1

Как выполнить запрос к источнику данных MS Excel

16.12.2007, 09:15. Просмотров 2918. Ответов 20
Метки нет (Все метки)

Известно, что с помощью компонента ADO можно обращаться к любым базам данных через ODBC. Но когда я попытался выполнить SQL запрос к данным находящимся в книге Excel, выдается ошибка. При выполнении запроса я в качестве имени таблицы использовал имя листа (SELECT * FROM Sheet1). Подскажите, что я делал неправильно.
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2007, 09:15
Ответы с готовыми решениями:

Как выполнить SQL запрос к базе данных
Доброго времени суток. Первый раз в жизни разрабатываю приложение на WPF. Содержимое таблички...

Как выполнить AR Запрос в Yii на выборку записей по значению связанных данных?
Добрый день, Есть 2 таблицы: m_bids ------------ id mc_points ------------

Как отменить привязку DGV к источнику данных
OrdersDataGridView.DataSource = null ' "отвязать" grid от источника error BC30822: Нет объявления...

Как выполнить свой sql запрос после добавления данных в БД через админку?
Всем привет. Такой вопрос: Есть админка django suit, есть модель с полями, как выполнить свой sql...

Как подключиться к источнику данных программно (без мастеров)
Как обойтись без перетаскивания? Среда Visual Basic STUDIO’2010 Professional В приложении...

20
t1k
3 / 3 / 5
Регистрация: 10.05.2007
Сообщений: 1,617
16.12.2007, 13:32 2
Set oConnection = CreateObject('ADODB.Connection')
oConnection.Open 'Provider=Microsoft.Jet.OLEDB.4.0ata Source=excel.xls;Extended Properties=''Excel 8.0;HDR=NO'''
Set oRS = oConnection.Execute('SELECT F1 FROM [Sheet1$]')
0
Sergik
16.12.2007, 13:34 3
я всегда работаю с .xls через ADO с помощью 'именованных областей' (может это как-то по-другому называется), выделяется нужный диапазон ячеек в Excel, вставка-имя-присвоить, потом в SQL запросе идет 'select * from имя_диапазона'
t1k
3 / 3 / 5
Регистрация: 10.05.2007
Сообщений: 1,617
16.12.2007, 13:50 4
Плохо подходит для INSERT
0
16.12.2007, 13:50
Sergik
16.12.2007, 13:56 5
я этим для select пользуюсь
serj
17.12.2007, 08:06 6
to t1k
В синтаксисе SQL запроса 'SELECT F1 FROM [Sheet1$]'
мне непонятно назначение скобок [] и знака $.
Если не в лом, растолкуй.
Заранее благодарен.
t1k
3 / 3 / 5
Регистрация: 10.05.2007
Сообщений: 1,617
17.12.2007, 10:25 7
Sheet1 - имя листа Excel, $ - так надо. [] так возможно надо, а возможно и нет
0
alexfive
0 / 0 / 0
Регистрация: 29.06.2007
Сообщений: 53
17.12.2007, 12:00 8
И квадратные скобки нужно и знак доллара тоже.
Приведенный пример как раз из MSDN Knowledge Base.
На самом деле, строка коннекта к базе может быть проще
connStr='Driver=Microsoft Excel Driver (*.xls)BQ='&Server.Mappath('/')&'file.xls'
этого достаточно.
0
t1k
3 / 3 / 5
Регистрация: 10.05.2007
Сообщений: 1,617
17.12.2007, 12:06 9
Проще не значит лучше, насколько я знаю OLEDB строка соединения быстрее DSN
0
alexfive
0 / 0 / 0
Регистрация: 29.06.2007
Сообщений: 53
17.12.2007, 12:29 10
Это примерно одно и тоже.
Просто если ты создаешь DSN, то в система за тебя сама создает такую же строку соединения где-то у себя.
0
Sergik
17.12.2007, 12:32 11
здесь речь идет не о DSN и не-DSN, а о драйвере, при помощи которого соединяешься с Excel: ODBC или OLEDB, OLEDB лучше
alexfive
0 / 0 / 0
Регистрация: 29.06.2007
Сообщений: 53
17.12.2007, 12:51 12
Ты хочешь сказать, что подсоединение с помощью провайдера Microsoft.Jet.OLEDB.4.0 будет быстреет ?
Возможно, не проверял.
Но при таком соединении работают далеко не все методы и свойства полученного объекта recordset.
0
Sergik
17.12.2007, 12:59 13
точно не знаю насчет быстрее-нет, но слышал от знающих людей, что лучше
насчет поддерживаемости свойств и методов - я в 99% случаях использую только: .eof, movenext(), .execute() и получение значения поля
t1k
3 / 3 / 5
Регистрация: 10.05.2007
Сообщений: 1,617
17.12.2007, 13:08 14
Тестирование OLEDB и DSN

http://www.4guysfromrolla.com/webtech/063099-1.shtml

Насчет плохой поддержки свойств и методов - первый раз слышу, по-моему скорее наоборот.
0
serj
17.12.2007, 13:39 15
Господа, я так и не получил ответа насчет присутствия в синтаксисе квадратных скобок и бакса. По стандарту SQL они вроде бы не нужны. Может быть они нужны для запроса именно к листу Excel, тогда каково их назначение. А по поводу подключения к источнику данных и использованию разных драйверов меня грузить не надо, я это все и сам знаю ;o)
t1k
3 / 3 / 5
Регистрация: 10.05.2007
Сообщений: 1,617
17.12.2007, 13:48 16
Чем тебя не устраивает мой ответ от 09.10.2001 10:48?

А по поводу подключения к источнику данных и использованию
разных драйверов мы тебя не грузим, а обсуждаем между собой.
0
Sergik
17.12.2007, 14:26 17
насчет [], то если их не указывать, то драйвер будет думать, что Sheet1 - название именованного диапазона (см. мой ответ выше), насчет знака $, как мне кажется это разделитель между указанием листа и указанием ячейки(ячеек)
t1k
3 / 3 / 5
Регистрация: 10.05.2007
Сообщений: 1,617
17.12.2007, 14:34 18
[] нужны для того чтобы обработать $(и : в случае диапазона ячеек), тут та же аналогия что и пробел в имени таблицы, [Table Name], и именно $ дает отличие sheet от named range, никто ведь не мешает и имя named range заключить в [].
0
serj
24.12.2007, 06:51 19
Все понял, спасибо!
ketoff
0 / 0 / 0
Регистрация: 24.12.2007
Сообщений: 12
24.12.2007, 17:40 20
В квадратные скобки заключаются имена таблиц или листов. В SQL имена таблиц не могут содержать пробелы и не латинских символов.
Для того чтобы обеспечить большую наглядность это ограничение было 'смягчено' вводом квадратных скобок.
Первы раз я столкнулся с этим когда работал с MS Access
Прочитать о использовании квадратных скобкак можно в книге Access97 от Microsoft Press.
0
24.12.2007, 17:40
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2007, 17:40

Как программным путём привязать элемент управления типа Вложение к источнику данных?
Здравствуйте! Необходимо программным путём привязать элемент управления типа Вложение к...

Сохранение данных в программе без создания/подключения к внешнему источнику данных
Насколько я знаю сделать это можно. Хочу чтобы данные в определенных TextBox, СomboBox а так же в...

Не удаётся подключиться к базе данных и выполнить запрос
Доброго времени суток всем участникам форума. Надо подключиться к базе данных и достать из неё...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.