Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2014, 16:35   #1
le0nard_
 
Регистрация: 16.06.2014
Сообщений: 5
Сообщение Подключение ADO к Excel ничего не выходит

Рассказываю. Мне нужно создать приложение которое будет работать на любом компе на кот. установлен офис и ничего сверхмудрого, и недомудрого!
Решил что excel есть везде, можно воспользоваться в delphi adoconnection и все будет хорошо. ХРЕН!
И так все по порядку!
1) На форму кидаю конекшн и создаю строку соединения! Все отлично, проверку проходит (кстати выбираю ODBC драйвер). Включаю актив, соединяется, великолепно! Отключаю! И ОП! Нет строки соединения! Заново вводи!
Чего за хрень?!
2) Кидаю на форму Adotable, указываю на конекшн, раскрываю строку с таблицами, а там ОП! Нет НИФИГА! Ни одной таблицы. При чем иногда есть иногда нет, перепробывал всё что можно (создавал заного файл, xlsx and xls, вбивал ручками, единственную книгу которую он видит и та с фильтром!!! Настройки везде одинаковые) !
Чего за хрень?!
3) Попробовал подключиться через apllication, всё подлючилось всё получилось.
а) Долго читает построчно!
б) Не понятно как быть с сортировкой например и так далее. Можно ли через excel.apllication sql запросы получать и в какой форме их в массив принять?!

Стоит Delphi 6 и ничего больше не доставлял
le0nard_ вне форума Ответить с цитированием
Старый 16.06.2014, 16:49   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Хрени ни какой нет. Есть отсутствие умения.
ODBC не надо - на каждой из машин настраивать придется.
ADO и провайдер JET OLE DB, не встречал еще WIN без него, строку соединения и соединяться программно, все равно пути разные будут на разных машинах. Синтаксис http://support.microsoft.com/kb/257819/ru
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.06.2014, 17:34   #3
le0nard_
 
Регистрация: 16.06.2014
Сообщений: 5
По умолчанию

jet пишет что не знает такого формата!!! Знает только access
le0nard_ вне форума Ответить с цитированием
Старый 16.06.2014, 18:04   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

изучить, сделать, доложить - http://www.connectionstrings.com/excel/
eval вне форума Ответить с цитированием
Старый 17.06.2014, 09:16   #5
le0nard_
 
Регистрация: 16.06.2014
Сообщений: 5
По умолчанию

Код:
AdresBase := ExtractFilePath(Application.ExeName) + 'print.xlsx'; //путь к базе print.xlsx

ADOConnection1.Connected := false;

ADOConnection1.ConnectionString := 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=' + AdresBase + '; Extended Properties="Excel 12.0 Xml;HDR=YES";';

ADOConnection1.Connected := true;
Вот так работает! А вот если я составляю строку вручную то пишет, что не знает формат! Требует Access. Ну хоть так работает!
Большое спасибо. Помогли кривым ручкам!!!

Последний раз редактировалось Stilet; 17.06.2014 в 09:25.
le0nard_ вне форума Ответить с цитированием
Старый 17.06.2014, 09:24   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

Цитата:
А вот если я составляю строку вручную то пишет, что не знает формат!
это означает что криво составляете, да и собственно, а код выше это не в ручную?
eval вне форума Ответить с цитированием
Старый 17.06.2014, 09:35   #7
le0nard_
 
Регистрация: 16.06.2014
Сообщений: 5
По умолчанию

Я имею в виду с помощью конструктора строки... Во всяком случае большое спасибо за помощь!

Попутно есть еще один вопрос.
Есть функция
ADOConnection1.GetTableNames (Strings, Boolean);

Как мне взять имена таблиц в динамический массив например?!
Комбо бокс получился, но не особо хочется его использовать
le0nard_ вне форума Ответить с цитированием
Старый 17.06.2014, 09:41   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Уверены, что Microsoft.ACE.OLEDB.12.0 есть на каждой машине? Microsoft.Jet.OLEDB.4.0 есть и работает, даже если екселя нет. Но xls, с xlsx проблема
Цитата:
Как мне взять имена таблиц в динамический массив например?!
TStringList чем не динамический массив строк? Для этого и придуман
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 17.06.2014 в 09:48.
Аватар вне форума Ответить с цитированием
Старый 17.06.2014, 10:04   #9
le0nard_
 
Регистрация: 16.06.2014
Сообщений: 5
По умолчанию

Не шарю потому что! Спасибо за подсказки. очень благодарен
le0nard_ вне форума Ответить с цитированием
Старый 17.06.2014, 10:20   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

Цитата:
Уверены, что Microsoft.ACE.OLEDB.12.0 есть на каждой машине?
установить не проблема http://www.microsoft.com/en-us/downl....aspx?id=23734
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С#. не выходит ничего yankel Помощь студентам 6 13.03.2014 22:40
Подключение Access через ADO Godj БД в Delphi 2 07.03.2010 22:47
ADO.Подключение во время работы программы Jene4ka БД в Delphi 4 13.11.2009 15:04
Программное подключение через ADO serjo БД в Delphi 2 09.01.2008 09:23