Excell den Db ye veri aktarmak !!
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
dediklerinizi yaptım fakat
Sayfa1$] burda hata verdi? Ne yapabilirim?
Kod: Tümünü seç
Var
ExcelDosya : String;
begin
ExcelDosya := 'D:\DOC\Kitap1.xls';
DataSource1.DataSet := AdoQuery1;
DBGrid1.DataSource := DataSource1;
AdoConnection1.LoginPrompt := False;
AdoConnection1.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ ExcelDosya + ';Extended properties=Excel 8.0';
AdoQuery1.Connection := AdoConnection1;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add( 'Select * from [Sayfa1$]');
AdoQuery1.Active := True;
end;
Merhaba...
- Bahsettiğim tek SQL komutunda birbirine aktarma olayı şu şekilde.
- Buna rağmen her seferinde ISAM hatası alıyorum...Halbu ki Jet 4.0 ile BDE için kullanılan Windows altındaki Mspbde40.DLL yerli yerinde duruyor ODBC sürücülerimi güncelleyince hata ortadan kalktı..
- Alternatif bir tane daha hazırladım. İşin görülsün... Açıklayıcı olsun diye açık ifadeler kullanmaya çalıştım... PDX'ler paradox, XLS'ler Excel için tanımlı nesnelerdir.
Kullanımı basit
- Başarılar...
- Bahsettiğim tek SQL komutunda birbirine aktarma olayı şu şekilde.
Kod: Tümünü seç
With AdoQuery1 do
begin
SQL.Clear;
SQL.Add('INSERT INTO ' + PDXDosya );
SQL.Add(' (A, B, C)');
SQL.Add('SELECT XA, XB, XC from [Sayfa1$] IN "'+XLSDosya+'" "Excel 8.0;"');
ExecSQL;
end;
- Alternatif bir tane daha hazırladım. İşin görülsün... Açıklayıcı olsun diye açık ifadeler kullanmaya çalıştım... PDX'ler paradox, XLS'ler Excel için tanımlı nesnelerdir.
Kod: Tümünü seç
Procedure ExcelToParadox_ADO(XLSKaynak, PDXHedef:TFileName);
Var
ADOQueryPDX,
ADOQueryXLS : TAdoQuery;
ADOConnPDX,
ADOConnXLS : TAdoConnection;
BagXLS,
BagPDX : String;
begin
BagXLS := 'Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;'
+ 'Data Source='+XLSKaynak;
BagPDX := 'Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Paradox 5.x;'
+ 'Data Source=' + ExtractFilePath(PDXHedef);
ADOConnPDX := TADOConnection.Create(Nil);
ADOConnPDX.LoginPrompt := False;
ADOConnPDX.ConnectionString := BagPDX;
ADOConnXLS := TADOConnection.Create(Nil);
ADOConnXLS.LoginPrompt := False;
ADOConnXLS.ConnectionString := BagXLS;
ADOQueryPDX := TADOQuery.Create(Nil);
ADOQueryPDX.Connection := ADOConnPDX;
ADOQueryXLS := TADOQuery.Create(Nil);
ADOQueryXLS.Connection := ADOConnXLS;
ADOQueryXLS.SQL.Text := 'SELECT XA, XB, XC FROM [Sayfa1$]';
ADOQueryXLS.Active := True;
While NOT ADOQueryXLS.Eof do
begin
With ADOQueryPDX do
begin
SQL.Clear;
SQL.Add('INSERT INTO '+ExtractFileName(PDXHedef) );
SQL.Add(' ( A, B, C) ');
SQL.Add(' VALUES ( :d1, :d2, :d3) ');
Parameters.ParamByName('d1').Value := ADOQueryXLS.FieldByName('XA').AsString;
Parameters.ParamByName('d2').Value := ADOQueryXLS.FieldByName('XB').AsString;
Parameters.ParamByName('d3').Value := ADOQueryXLS.FieldByName('XC').AsString;
ExecSQL;
end;
ADOQueryXLS.Next;
end;
ADOQueryXLS.Active := False;
ADOQueryXLS.Free;
ADOQueryPDX.Free;
ADOConnPDX.Close;
ADOConnXLS.Close;
Application.ProcessMessages;
ADOConnPDX.Free;
ADOConnXLS.Free;
ShowMessage('Aktarma Bitti');
end;
Kod: Tümünü seç
ExcelToParadox_ADO('D:\DOC\Kitap1.xls', 'D:\DOC\pdx.DB');
En son mrmarman tarafından 24 Ara 2005 11:16 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Yazmış olduğunuz kod için çok teşekkür ediyorum. Allah Razı olsun kodu denedikten sonra cevabı yazarım birde Query1 "d1" , "d2" ,"d3" ve ADOQuery de "XA","XB","XC" tanımlamalımıyım?
Parameters.ParamByName('d1').Value := ADOQueryXLS.FieldByName('XA').AsString;
Parameters.ParamByName('d2').Value := ADOQueryXLS.FieldByName('XB').AsString;
Parameters.ParamByName('d3').Value := ADOQueryXLS.FieldByName('XC').AsString
Parameters.ParamByName('d1').Value := ADOQueryXLS.FieldByName('XA').AsString;
Parameters.ParamByName('d2').Value := ADOQueryXLS.FieldByName('XB').AsString;
Parameters.ParamByName('d3').Value := ADOQueryXLS.FieldByName('XC').AsString
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
@ozcank
Burada verilen örnekler, senin projenle aynı olmayacaktır genellikle.Mühim olan mantığını kavramaktır ve kendi projene monte edebilmen için de gereklidir.Her zaman önceliği olayın mantığını kavramaya vermen ezbere iş yapmandan iyi olacaktır.Bugün ezbere yapılan bir işlem, yarın sorun çıktığında daha çok eziyet verir.Bu nedenle kod ya da mantık önerildiğinde olayın mantığını ön plana almanı salık veririm.
Kolay gele...
Burada verilen örnekler, senin projenle aynı olmayacaktır genellikle.Mühim olan mantığını kavramaktır ve kendi projene monte edebilmen için de gereklidir.Her zaman önceliği olayın mantığını kavramaya vermen ezbere iş yapmandan iyi olacaktır.Bugün ezbere yapılan bir işlem, yarın sorun çıktığında daha çok eziyet verir.Bu nedenle kod ya da mantık önerildiğinde olayın mantığını ön plana almanı salık veririm.
Kolay gele...
DB ve Excel İsimlerini yerleştiriyorum fakat hata alıyorum ;
[Error] Unit1.pas(69): Undeclared identifier: 'AKTARMA'
[Error] Unit1.pas(69): Undeclared identifier: 'AKTARMA'
Kod: Tümünü seç
With AdoQuery1 do
begin
SQL.Clear;
SQL.Add('INSERT INTO ' + AKTARMA.DB );
SQL.Add(' (A, B, C)');
SQL.Add('SELECT XA, XB, XC from [Sayfa1$] IN "'+GIRESUN.XLS+'" "Excel 8.0;"');
ExecSQL;
end;
Bu şekilde çalıştı fakat başka bir hata alıyorum ;
ADOQuery1:Cannot perform this operation on an open dataset
ADOQuery1:Cannot perform this operation on an open dataset
Kod: Tümünü seç
procedure TForm1.Button2Click(Sender: TObject);
begin
With AdoQuery1 do
begin
SQL.Clear;
SQL.Add('INSERT INTO ' + 'AKTARMA.DB');
SQL.Add(' (A, B, C, D, E, F, G)');
SQL.Add('SELECT A, B, C, D, E, F, G from [Sayfa1$] IN " '+'GIRESUN.XLS'+'" "Excel 8.0;"');
ExecSQL;
end
end;