Excell den Db ye veri aktarmak !!

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Hocam, bu da çok basit bir veritabanı açık uyarısı... Önce Close etmeniz lazım diyor. With AdoQuery1 do begin'den sonra bir Close; ekleyin kafi...
Resim
Resim ....Resim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Project Project.exe raised exception class EOLeException with message 'Microsoft jel veritabanı alt yapısı 'Sayfa1$' nesnesini bulamadı.Nesnenin varolduğundan ve adını ve yolunu doğru yazdığınızdan emin olun' Process stopped.Use Step or Run to continue

diye bir hata alıyorum.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Bu böyle olmayacak.... Resim

Lütfen aşağıdaki örneği bire bir uygulayın...Resim

- Proje klasöründe GIRESUN.XLS var bir de yine proje klasöründe AKTARMA.DB olduğunu varsayıyorum...

- AKTARMA.DB'deki alan isimleri A, B, C olduğunu ; GIRESUN.XLS'deki sütun başlıklarının da A, B, C olduğunu varsayıyorum...

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
// Jet 4.0 ile Windows altındaki Mspbde40.DLL kullanılır...
Var
  BagXLS,
  BagPDX   : String;
  XLSDosya,
  PDXDosya : String;
begin
  XLSDosya := ExtractFilePath(Application.ExeName)+'GIRESUN.XLS';
  PDXDosya := ExtractFilePath(Application.ExeName)+'AKTARMA.DB';

  BagPDX := 'Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Paradox 5.x;'
          + 'Data Source='+ExtractFilePath(PDXDosya);
  BagXLS := 'Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;'
          + 'Data Source='+XLSDosya;
  AdoConnection1.Close;
  With AdoQuery1 do
  begin
    Active := False;
    Connection := AdoConnection1;
    AdoConnection1.ConnectionString := BagPDX;
    AdoConnection1.LoginPrompt      := False;
    With AdoQuery1 do
    begin
      SQL.Clear;
      SQL.Add('INSERT INTO ' + ExtractFileName(PDXDosya) );
      SQL.Add(' (A, B, C)');
      SQL.Add('SELECT A, B, C from [Sayfa1$] IN "'+XLSDosya+'" "Excel 8.0;"');
      ExecSQL;
    end;
  end;
  ShowMessage('Aktarma İşlemi Sonuçlandı...');
end;
Resim
Resim ....Resim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
// Jet 4.0 ile Windows altındaki Mspbde40.DLL kullanılır...
Var
  BagXLS,
  BagPDX   : String;
  XLSDosya,
  PDXDosya : String;
begin
//  XLSDosya := ExtractFilePath(Application.ExeName)+'GIRESUN.XLS';
//  PDXDosya := ExtractFilePath(Application.ExeName)+'AKTARMA.DB';

  XLSDosya := 'C:\GIRESUN.XLS';
  PDXDosya := 'C:\SIS2003\DATA2004\AKTARMA.DB';

  BagPDX := 'Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Paradox 5.x;'
          + 'Data Source='+ExtractFilePath(PDXDosya);
  BagXLS := 'Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;'
          + 'Data Source='+XLSDosya;
  AdoConnection1.Close;
  With AdoQuery1 do
  begin
    Active := False;
    Connection := AdoConnection1;
    AdoConnection1.ConnectionString := BagPDX;
    AdoConnection1.LoginPrompt      := False;
    With AdoQuery1 do
    begin
      SQL.Clear;
      SQL.Add('INSERT INTO ' + ExtractFileName(PDXDosya) );
      SQL.Add(' (A, B, C)');
      SQL.Add('SELECT A, B, C from [Sayfa1$] IN "'+XLSDosya+'" "Excel 8.0;"');
      ExecSQL;
    end;
  end;
  ShowMessage('Aktarma İşlemi Sonuçlandı...');
end;
Bu şekilde değiştirdim fakat "A parametresinin varsayılan değeri yok" mesajını aldım.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Resim hocam.. Yapabileceğim bişey kalmadı. Geriye gönder veritabanını sana özel bir procedure hazırlayım demek isterdim ama ResimResim

- Sana deneyip gönderiğim test edilmiş hali de sende çalışmadığına göre başka yerde problem arayalım. :idea:

- Bu durum başlığı gören herkese ders olsun. Başlangıçta söylemem gereken ama sona kalmış olan son bir söz. Paradox veritabanını unut. MS_Access veya Firebird veritabanına geç. Resim
Resim
Resim ....Resim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

msn den size göndersem yardım edermisiniz?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- İlk gönderdiğim Procedure haldeki yedek çözümü dene o zaman...
Resim
Resim ....Resim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Acaba SQL demi hata yapıyorum ben AKTARMA.DB içindeki alanları
A olarak ve uzunluğunu 100 olarak ayarladım SQL birşey yapmama gerek varmı?
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Arkadaşım hallettim yardımlarından özürü çok teşekkür ediyorum.

Db ye aktarmayı başardım. DB den DB ye aktarmam gerekiyor.Çünkü AKTARMA.DB yi geçici oluşturdum şimdi esas DB ye aktarmam gerekiyor alanlarım ise şöyle;

Kod: Tümünü seç

AKTARMA.DB    SISTEMFOR.DB
A              =      SISKOD
B              =      SISADI
C              =      SISSOY
D              =      SISISAD
E               =     SISISTF

Bu şekilde yardım edersen sevinirim.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Arkadaşım sen ne zaman program yazmaya başlayacaksın merak ediyorum. Herkes programcı olmak zorunda değil. Parası neyse verirsin yazdırırsın.

Gözlemlediğim kadarıyla bu işi yapamıyorsun, yanlış yapıyorsun. Öğrenme gibi bir isteğin de yok. Sana bu konuda daha önce de yazdım. Eski tas eski tas eski hamam devam ediyorsun.

@mrmcop içimizde en anlayışlı olanlardan biri. Ancak onu bile bezdirdiğini görüyorum. :) Yardım edip etmemek onun bileceği bir iş ancak ben sana yardım etmiyorum. Çünkü uğraştığını düşünmüyorum.

Bu forum program yazdırma yeri değil, uğraşıp didindikten sonra ve yapamadıktan sonra, google vs. den arama yaptıktan da sonra son başvurulacak yer.

Öğrenmek istiyorsan, seminer videolarını indirip izle. Bu forumdaki hemen hemen bütün mesajları oku. Programlama öğrenmenin yolu budur. Başkasına kod yazdırmak değildir.

Sen anı kurtarıyorsun. Geleceğine yatırım yapmıyorsun.

Bu sana tecrübeli birinden son tavsiye bir daha böyle bir mesaj da yazmayacağım sana.

Kolay gelsin.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@Coderlord Resim Resim
Resim
Resim ....Resim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Coderlord sana teşekkür ediyorum.
Cevapla