Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];

Вниз

Подключение к Екселю как к БД через 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.04 c
8-1153670177
Степан
2006-07-23 19:56
2007.04.01
OpenGL.pas и памятники :)


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


3-1167911522
r9000
2007-01-04 14:52
2007.04.01
Использование подключения к базе в dll -ке


3-1168326050
parasolka
2007-01-09 10:00
2007.04.01
Объединение TQuery


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский