![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подключение к Екселю как к БД через ADO
Alexander_K © (2007-01-11 14:40:00)Добрый день!
Пробую подключиться к экселевскому файлу как к бд...
Но вот ничего не получается...
Использую ADO, кидаю на форму компонент ADOConnection, создаю строку подключения:
Выбираю провайдера Microsoft OLE DB Provider for ODBC Drivers
Создаю DSN файл:
Выбираю драйвер Driver do Microsoft Excel(*.xls)
В окне выбора файла источника данных указываю мой файл экселевский C:\test\qqq.xls
В выборе книги так же выбираю мой файл...
После чего создается файл DSN, который я и выбираю далее...
Содержание DSN файла:
[ODBC]
DRIVER=Driver do Microsoft Excel(*.xls)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
ReadOnly=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=excel 8.0
DriverId=790
DefaultDir=C:\test
DBQ=C:\test\qqq.xls
Нажимаю проверка подключения, выдается: проверка подключения выполнена...
Потом ставлю свойство Connected у ADOConnection в true, все успешно...
Строка подключения получается следующая:
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DBQ=C:\test\qqq.xls;DefaultDir=C:\test;Driver={Driver do Microsoft Excel(*.xls)};DriverId=790;FIL=excel 8.0;FILEDSN=C:\test\qqq.xls.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;R eadOnly=0;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"
После чего кидаю на форму ADOQuery, соединяю его с ADOConnection в поле SQL ввожу простейший запрос:
select * from qqq
Делаю Active выдает ошибку:
Объект qqq не найден ядром базы данных Microsoft Jet, проверьте существование объекта и правильность имени и пути.
то же самое выводится и если пишу запрос:
select * from qqq.xls
Народ, подскажите, что я делаю не так?
YurikGL (2007-01-13 12:56:00) [1]http://kladovka.net.ru/index.cgi?pid=board&rid=363
Здесь реализовано подключение к Excel через ADO и выполнение запросов (insert точно помню что был :) )
sniknik (2007-01-11 16:14:00) [2]> говорит: Синтаксическая ошибка в запросе. Неполное предложение запроса.
;о)) логично, у jet " в конце строки это комментарий (как в VB), те. получается ты передаешь не
select * from "first$"
а
select * from
Alexander_K (2007-01-11 16:12:00) [3]Оооо, с квадратными скобками все заработало!!!
Всем большое спасибо!
sniknik (2007-01-11 16:11:00) [4]кавычки "" "отсебятина" odbc, при передаче он немного корректирует запросы (видно по некоторым ошибкам, не вспомню прям счас каким, с датами вроде есть), попробуй "" заменить на [] это чисто "jet-овское".
Anatoly Podgoretsky (2007-01-11 16:11:00) [5]> Alexander_K (11.01.2007 16:06:06) [6]
Проверь с квадратными скобками.
Alexander_K (2007-01-11 16:06:00) [6]Пробую так, Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test\qqq.xls;Extended Properties=Excel 8.0
вроде цепляется... но на запрос
select * from "first$"
говорит: Синтаксическая ошибка в запросе. Неполное предложение запроса.
делаю даже через конструктор для CommandText в ADODataSet
получается запрос:
select * from first$
тоже выдает ошибку: ошибка синтаксиса в предложении FROM
sniknik (2007-01-11 15:49:00) [7]> но если там выбрать екселевский файл,
то надо указать используемый тип (ISAM)
простейшая строка подключения (замена/аналог(для другого провайдера) твоей)
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test\qqq.xls;Extended Properties=Excel 8.0
alex_*** (2007-01-11 15:34:00) [8]можно через именованный диапазон: select * from MyRange
conn_str:
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=Файлы Excel;DBQ=C:\work\test_small.xls;DefaultDir=C:\work;DriverId=790;MaxBufferSize=2 048;PageTimeout=5;"
Alexander_K (2007-01-11 15:25:00) [9]Попробовал select * from "first$"
все вроде бы получилось, спасибо большое!!!
А вот:
> делай лучше прямой коннект, без посредников...
не совсем понял. Ты предлагаешь выбирать поставщика Microsoft Jet 4.0 OLE DB Provider?
но если там выбрать екселевский файл, при проверке подключения выдается ошибка:
Не выполнена проверка подключения из-за ошибки при инициализации поставщика. Нераспознаваемый формат базы данных: C:\test\qqq.xls
Может я просто че-нибудь не понял?
sniknik (2007-01-11 15:04:00) [10]select * from ИмяТаблицы!АНеБазы $
без бакса в конце искать не будет.
кстати, никаких ассоциаций в ошибке не усматриваешь? конкретно
> Объект qqq не найден ядром базы данных Microsoft Jet
хотя подключение к ODBC... (драйвер которого вызывает в свою очередь его), делай лучше прямой коннект, без посредников...
Виталий Панасенко (2007-01-11 14:58:00) [11]Выборка делается из ЛИСТА(Sheet) Select * from [Sheet1]