Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка при подключении к *.xls [D6, XP]


Страницы:   1 2

DimonS ©   (2009-06-19 03:15:00) 

Добрый день всем.
Вот объясните кто-нибудь, что за глюк такой странный?
Подключаю ADOConnection к Екселевскому файлу *.xls. Таким способом (при нажатии кнопки):
ADOConnection1.Close;
 ADOConnection1.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=файлы Excel;';
 ADOConnection1.ConnectionString:=ADOConnection1.ConnectionString+'DBQ=C:\brain.xls;DefaultDir=C:\;DriverId=790;MaxBufferSize=2048;PageTimeout=5;" ';
 ADOConnection1.Open;


При подключении выбрасывает ошибку: Аргументы имеют неверный тип, выходят за пределы... и т. д.
Причем ошибка выскакивает при отладке во второй строке.
Но самое интересное - при повторном подключении подключается отлично, делаются выборки и т. д.  Т. е. такая конструкция

try
 ADOConnection1.Close;
 ADOConnection1.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=файлы Excel;';
 ADOConnection1.ConnectionString:=ADOConnection1.ConnectionString+'DBQ=C:\brain.xls;DefaultDir=C:\;DriverId=790;MaxBufferSize=2048;PageTimeout=5;" ';
 ADOConnection1.Open;
except
 ADOConnection1.Close;
 ADOConnection1.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=файлы Excel;';
 ADOConnection1.ConnectionString:=ADOConnection1.ConnectionString+'DBQ=C:\brain.xls;DefaultDir=C:\;DriverId=790;MaxBufferSize=2048;PageTimeout=5;" ';
 ADOConnection1.Open;
end;

срабатывает. Но это же не выход, хочется понять откуда ноги растут у этого бага.

PS. Семнадцатую строку проверил.
PSPS. Ни разу при подключениях к другим провайдерам/базам не встречал такого бага.


Плохиш   (2009-06-24 10:54:00) [21]


> DimonS   (24.06.09 02:46) [10]


> Может я что-то делаю не так. Пошел по такому пути.
> Создаю UDL-файл.

Хм, я не хожу такими далёкими путями, я использую мастер создания строки подключения в делфи.

PS. Строка подключения

   ConnectionString =
     'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Meine Dokumente\' +
     'xxx.xls;Mode=Read;Extended Properties=Excel 8.0;Persist Sec' +
     'urity Info=False'


DimonS   (2009-06-24 02:46:00) [22]


> Плохиш ©   (23.06.09 18:39) [9]


> просто изменить фильтр выбора файлов.


Может я что-то делаю не так. Пошел по такому пути.
Создаю UDL-файл.
Выбираю поставщика данных Microsoft Jet 4.0 OLE DB Provider.
На вкладке Подключение нажимаю на выбор файлов. В фильтрах есть только *.mdb и Все файлы. Выбираю Все файлы. Нахожу свой *.xls.
Жму Проверить подключение.
"Не выполнена проверка подключения из-за ошибки инициализации поставщика. Нераспознаваемый формат базы данных..."

Что я сделал неправильно? :)
Если использовать Microsoft OLE DB Provider for ODBC rivers, то подключение нормально происходит.


Плохиш   (2009-06-23 18:39:00) [23]


> DimonS   (23.06.09 18:28) [7]

надо

> При выборе файла при настройке

просто изменить фильтр выбора файлов.


  (2009-06-23 18:34:00) [24]

Удалено модератором


DimonS   (2009-06-23 18:28:00) [25]


> Плохиш ©   (22.06.09 11:54) [6]
>
> > DimonS   (22.06.09 10:50) [4]
> >
> >
> > > Почему бы не использовать Microsoft.Jet.OLEDB
> >
> > А им можно к Excel подключиться?
>
> - no comment -


И это все? А пример можно? А то на других форумах ответ такой же. Но вот примеров нету почему-то. Нигде.
Ссылка подойдет, дайте ее пожалуста.


Плохиш   (2009-06-22 11:54:00) [26]


> DimonS   (22.06.09 10:50) [4]
>
>
> > Почему бы не использовать Microsoft.Jet.OLEDB
>
> А им можно к Excel подключиться?

- no comment -


Медвежонок Пятачок   (2009-06-22 10:51:00) [27]

тогда придется не сравнивать два прайса по ключевому полю


DimonS   (2009-06-22 10:50:00) [28]


> Почему бы не использовать Microsoft.Jet.OLEDB

А им можно к Excel подключиться? При выборе файла при настройке подключения просит Акцессовский.


> Управление Excel с использованием OLE

Это я знаю, не один десяток отчетов делал через Ексель. Но тут нужно сравнить два прайса по ключевому полю. Знаю, что можно это как-то реализовать средствами самого екселя, но как - влом копаться, да и времени нет.


blackman   (2009-06-19 17:23:00) [29]

Управление Excel с использованием OLE
http://articles.org.ru/cn/showdetail.php?cid=7582
И другие на тему Delphi/Pascal » MsOffice
http://articles.org.ru/cn/?c=92


Anatoly Podgoretsky   (2009-06-19 15:49:00) [30]

Он и будет использовать Jet.OLEDB, только с сильными извращениями.


Плохиш   (2009-06-19 15:23:00) [31]

Почему бы не использовать Microsoft.Jet.OLEDB


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо