![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при подключении к *.xls [D6, XP]
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