![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Доброго всем дня.
Для облегчения работы потребовалось сделать импорт данных из Excel в базу данных Access (.mdb). И практически сразу возник вопрос, при открытии файла Excel выдает ошибку Невозможно найти устанавливаемый ISAM. Файл для импорта открываю так Код:
var
OpenDialog : TOpenDialog;
FName1, FName2: string;
fullFileName : string;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ADOConnection1.Connected:=False;
Windows.MessageBeep(MB_ICONINFORMATION);
OpenDialog:= TOpenDialog.Create(self);
OpenDialog.InitialDir := '';
OpenDialog.Filter := 'Microsoft Excel 2003 (*.xls)|*.xls';
if OpenDialog.Execute then
begin
FName1 := OpenDialog.FileName;
LabeledEdit1.Text:=ExtractFileName(FName1);
ADOConnection1.ConnectionString:=
'Provider=Microsoft.ACE.OLEDB.12.0;' +
'Data Source='+LabeledEdit1.Text +';' +
'Extended Properties=Excel Files;'+
'DriverId=1046;'+
'MaxBufferSize=2048;'+
'PageTimeout=5';
ADOConnection1.Connected:=True;
end;
end; |
|
#2
|
||||
|
||||
|
Ну и правильно ругается.
Код:
Extended Properties=Excel Files Замените на: Код:
Extended Properties=Excel 12.0 Последний раз редактировалось Страдалецъ, 27.06.2014 в 19:09. |
|
#3
|
||||
|
||||
|
Страдалецъ, нет разницы. Указал
Код:
Extended Properties=Excel 12.0 Вот строка подключения ADOConnection1.Connected выбрана непосредственно в Delphi Код:
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=Excel Files;DBQ=d:\Мои документы\Delphi программы\Работа с ADO\Импорт с Excel\Мой проект\2.xls;DefaultDir=d:d:\Мои документы\Delphi программы\Работа с ADO\Импорт с Excel\Мой проект;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;" |
|
#4
|
||||
|
||||
|
В провайдере разница.
|
|
#5
|
||||
|
||||
|
Код:
Const Excel2007Connection = 'Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=%s'; Var AdoConnection: TAdoConnection; begin AdoConnection := TAdoConnection.Create(nil); AdoConnection.ConnectionString := Format(Excel2007Connection, ['d:\Мои документы\Delphi программы\Работа с ADO\Импорт с Excel\Мой проект\2.xls']); AdoConnection.Open; |
| Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
fofka (28.06.2014)
| ||
|
#6
|
||||
|
||||
|
Страдалецъ, Благодарю за помощь. Все заработало. Сделал как Вы подсказали и все пошло. Импорт данных работает. Для подключения Excel взял Ваш код, а импорт из примера.
Код:
implementation
Const
Excel2007Connection = 'Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=%s';
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ADOConnection1.Connected:=False;
Windows.MessageBeep(MB_ICONINFORMATION);
OpenDialog:= TOpenDialog.Create(self);
OpenDialog.InitialDir := '';
OpenDialog.Filter := 'Microsoft Excel 2003 (*.xls)|*.xls';
if OpenDialog.Execute then
begin
FName1 := OpenDialog.FileName;
LabeledEdit1.Text:=ExtractFileName(FName1);
ADOConnection1.ConnectionString := Format(Excel2007Connection, [''+LabeledEdit1.Text +'']);
ADOConnection1.Connected:=True;
try
AdoVer:=ADOConnection1.Provider;
AdoConnection1.Connected:=true;
except
ADOConnection1.Connected:=false;
showmessage('ООшибка подключения.'+ #13 +
'Ожидаемая версия"' + AdoVer + '"провайдера отличается от текущей');
Application.Terminate;
end;
end;
end; |