Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.01;
Скачать: CL | DM;

Вниз

Подключение к Екселю как к БД через ADO   Найти похожие ветки 

 
Alexander_K ©   (2007-01-11 14:40) [0]

Добрый день!

Пробую подключиться к экселевскому файлу как к бд...
Но вот ничего не получается...

Использую 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

Народ, подскажите, что я делаю не так?


 
Виталий Панасенко ©   (2007-01-11 14:58) [1]

Выборка делается из ЛИСТА(Sheet) Select * from [Sheet1]


 
sniknik ©   (2007-01-11 15:04) [2]

select * from ИмяТаблицы!АНеБазы$
без бакса в конце искать не будет.

кстати, никаких ассоциаций в ошибке не усматриваешь? конкретно
> Объект qqq не найден ядром базы данных Microsoft Jet
хотя подключение к ODBC... (драйвер которого вызывает в свою очередь его), делай лучше прямой коннект, без посредников...


 
Alexander_K ©   (2007-01-11 15:25) [3]

Попробовал select * from "first$"
все вроде бы получилось, спасибо большое!!!

А вот:

> делай лучше прямой коннект, без посредников...

не совсем понял. Ты предлагаешь выбирать поставщика Microsoft Jet 4.0 OLE DB Provider?
но если там выбрать екселевский файл, при проверке подключения выдается ошибка:

Не выполнена проверка подключения из-за ошибки при инициализации поставщика. Нераспознаваемый формат базы данных: C:\test\qqq.xls

Может я просто че-нибудь не понял?


 
alex_*** ©   (2007-01-11 15:34) [4]

можно через именованный диапазон: 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;"


 
sniknik ©   (2007-01-11 15:49) [5]

> но если там выбрать екселевский файл,
то надо указать используемый тип (ISAM)
простейшая строка подключения (замена/аналог(для другого провайдера) твоей)
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test\qqq.xls;Extended Properties=Excel 8.0


 
Alexander_K ©   (2007-01-11 16:06) [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 16:11) [7]

кавычки "" "отсебятина" odbc, при передаче он немного корректирует запросы (видно по некоторым ошибкам, не вспомню прям счас каким, с датами вроде есть), попробуй "" заменить на [] это чисто "jet-овское".


 
Anatoly Podgoretsky ©   (2007-01-11 16:11) [8]

> Alexander_K  (11.01.2007 16:06:06)  [6]

Проверь с квадратными скобками.


 
Alexander_K ©   (2007-01-11 16:12) [9]

Оооо, с квадратными скобками все заработало!!!

Всем большое спасибо!


 
sniknik ©   (2007-01-11 16:14) [10]

> говорит: Синтаксическая ошибка в запросе. Неполное предложение запроса.
;о)) логично, у jet " в конце строки это комментарий (как в VB), те. получается ты передаешь не
select * from "first$"
а
select * from


 
YurikGL ©   (2007-01-13 12:56) [11]

http://kladovka.net.ru/index.cgi?pid=board&rid=363
Здесь реализовано подключение к Excel через ADO и выполнение запросов (insert точно помню что был :) )



Страницы: 1 вся ветка

Текущий архив: 2007.04.01;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.062 c
3-1168348619
novill
2007-01-09 16:16
2007.04.01
IB 7.5 Как хр. процедуре в переменнной типа date обнулить время?


15-1173071399
leonidus
2007-03-05 08:09
2007.04.01
Подскажите удобную программу для создания хелпов


2-1173773830
Nec
2007-03-13 11:17
2007.04.01
Алгоритм поиска


15-1173254741
homm
2007-03-07 11:05
2007.04.01
Сплин - скажи


2-1173102470
Чайник
2007-03-05 16:47
2007.04.01
Максимальный размер статического массива