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

Вниз

Работа с MS Excel как с БД через ODBS   Найти похожие ветки 

 
Nikolai_S   (2002-12-23 15:38) [0]

В ODBS есть драйвер "Microsoft Excel Driver (*.xls)". Через этот драйвер можно в TADOConnection подключиться к файлу Excel. Но можно ли с этим файлом работать как с БД с помощью запросов SQL? Я запрашиваю список таблиц - выдается пустой список. Кто-ниуюдь знает как работать с Excel через ADO?


 
stone   (2002-12-23 15:56) [1]

В Excel должны быть созданы именованные диапазоны ячеек, которые будут доступны как таблицы


 
sniknik   (2002-12-23 15:58) [2]

Без проблем, именно как с базой (без форматирования и т.д.) в кладовке есть пример.


 
Anatoly Podgoretsky   (2002-12-23 16:15) [3]

Базой является книга, а таблицами листы


 
Nikolai_S   (2002-12-23 16:19) [4]

2 Anatoly Podgoretsky

Тогда почему когда в файле есть 3 листа и я вызываю функцию TADOConnection.GetTableNames, то мне выдается пустой список?


 
Nikolai_S   (2002-12-23 16:28) [5]

2 Anatoly Podgoretsky
Извиняюсь. Уже разобрался. Нужно было еще системные таблицы запросить. Excel"ские листы понимаются как системные таблицы.


 
Nikolai_S   (2002-12-23 16:39) [6]

Теперь появился другой вопрос. Можно ли в обход ODBC подключиться к файлу Excel. Например к MS Access можно подключиться через UDL-файл без ODBC, используя драйвер MS Jet. Но для Excel там нет драйвера... :-(


 
sniknik   (2002-12-23 17:58) [7]

Уже говорил в кладовке пример (с подключением к Excel - Jet в том числе), сделай поиск по TestMdb. Включить UDL вместо строки подключения там надо строку расcкоментарить ;EnableUdl=1 в секции Common Ini файла.


 
Nikolai_S   (2002-12-23 18:36) [8]

2 sniknik
Спасибо. Разобрался. Даже в исходники лазить не пришлось. Там в ini-файле все видно. Нужно было лишь добавить Extended Properies=Excel 5.0 и все заработало через Jet.
Да, мощная это штука. А то люди работают с самыми разными СУБД. И мне требуется делать возможность импорта в свою базу данных. А когда с Excel можно данные с помощью SQL читать/записывать, то это супер. Можно еще и прямыми SQL-запросами данные из одной СУБД в другую кидать. Вообще быстро работает. Я например из Access в SQL-Server и обратно пробовал. Сильная штука. Насколько я понимаю все это называется OLE DB


 
sniknik   (2002-12-23 18:55) [9]

Да хорошо когда все хорошо. :-)) а исходники все же посмотри может полезное для себя найдеш. Типа (часто спрашивают) как формировать строку коннекта, узнать какие таблици в базе, узнать свойства полей без открытия таблицы.
А если придумаеш полезное чего там не хватает пиши вставлю. Только тебе придется меня убедить что это полезно. :о))


 
Nikolai_S   (2002-12-24 11:42) [10]

ОК, гляну обязательно. Хотя как все это делается я знаю. Но все равно посмотреть интересно. А вот насчет того как узнать какие таблицы в базе есть вопрос: у меня был конкретный случай, когда в MS SQL Server имелось более 1000 таблиц и когда вызываешь метод TADOConnection.GetTableNames, то это метод слишком долго работал, просто конкретно все тормозил. В чем тут может быть дело? Я подозреваю, что параметр List: TStrings, в который записываются имена таблиц, очень медленно заполняется... Или я не прав?


 
sniknik   (2002-12-24 11:59) [11]

Наверное не прав. Но разбирать нужно тот конкретный случай конечно.
GetTableNames всегда отрабатывал моментально, хотя до такого количества таблиц никогда не дотягивал. Можно попробовать сколько будет работать аналог
SELECT Name FROM sysobjects WHERE xtype="U" OR xtype="S"
(List: TStrings исключается, вместо него датасет) и если есть большая разница по времени (или нет) то делать выводы.



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

Форум: "Базы";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
1-62525
patrol
2003-01-10 14:11
2003.01.20
версия exe-шника


3-62403
viper
2002-12-24 12:07
2003.01.20
DBGrid


6-62698
Grigor
2002-11-13 19:48
2003.01.20
Как получить в строковой переменной день недели


14-62724
Хмырь
2002-12-30 20:04
2003.01.20
Люди!!! Спасайте!!! Провокация!!!


1-62514
Приколист
2003-01-10 17:09
2003.01.20
Использование Uses





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский