İç içe döngü ile excelden veri tabanına kayıt sorunu? SORUN ÇÖZÜLDÜ

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
baloglurecep
Üye
Mesajlar: 261
Kayıt: 21 Tem 2006 04:59
İletişim:

İç içe döngü ile excelden veri tabanına kayıt sorunu? SORUN ÇÖZÜLDÜ

Mesaj gönderen baloglurecep »

Arkadaşlar selamlar saygılar. Yazdığım okul programında bir güncelleme yapacağım. Kullanıcının seçtiği excel dosyasının başlıklarını tabloda alan adı olarak oluşturuyorum. Akabinde bu alan adlarına excel dosyasındaki satırları aktarmam gerekiyor. bunun için iç içe döngü kurdum.

Kod: Tümünü seç

VAR
 EXCELDEKISATIR,EXCELDEKISUTUN:Integer;
 SAYFA: Variant;
 cs : STRING;
begin
  IF OpenDialog1.Execute THEN BEGIN                        
        EXCELDOSYASI:=CreateOleObject('excel.application');     
        EXCELDOSYASI.Visible:=false;                             
          EXCELDOSYASI.workbooks.open[OpenDialog1.FileName];    
          exceldebilgisayisi;
          
     FOR EXCELDEKISUTUN:=1 to KACSUTUN DO  // exceldeki sütun sayısı 
         BEGIN
         FOR EXCELDEKISATIR:=2 to KACSATIR DO  // exceldeki satır sayısı 
         BEGIN
         ADOTable1.Open;
         ADOTable1.Append;
         ADOTable1.FieldByName(exceldosyasi.ActiveSheet.Cells[1,EXCELDEKISUTUN].Value).AsVariant:= exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,1].Value;
      END;
    END;
   END;
END;
ancak excelde 30 satır olmasına karşın 300 üzerinde kayıt atıyor. Sanıyorum ki döngü mantığını kuramadım. Bu işlemi nasıl gerçekleştirebilirim. Yapılan işlem ile kullanıcı önce excel dosyasını seçiyor bu seçilen dosyaya göre alan adları oluşturuluyor. Sonra bu alan adlarına denk gelecek şekilde exceldeki satırları aktaracağım. Yardımcı olacak arkadaşlara teşekkür ederim. Saygıyla kalınız..

BELKİ BAŞKA ARAYAN ARKADAŞLARA DA ÇÖZÜM OLMASI AÇISINDAN


// alanlara excelden veri aktarılıyor
ADOTable1.Open;
for EXCELDEKISATIR:=2 to KACSATIR do // exceldeki satır sayısı
begin //her satır bir kayıt demektir...
ADOTable1.Append; //kayıt eklenir
for EXCELDEKISUTUN:=1 to KACSUTUN do // exceldeki sütun sayısı
begin //tüm satırlara değerler yazılır
ADOTable1.FieldByName(exceldosyasi.ActiveSheet.Cells[1,EXCELDEKISUTUN].Value).AsVariant:= exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,EXCELDEKISUTUN].Value;
end;
ADOTable1.Post;//satırlar yazıldıktan sonra tüm sütunların değerleri tabloya kayıt edilir...
end;
ShowMessage('veriler eklendi');
// veri aktarma son
En son baloglurecep tarafından 20 Oca 2019 01:28 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: İç içe döngü ile excelden veri tabanına kayıt sorunu?

Mesaj gönderen freeman35 »

ADOTable1.Append; (KACSUTUN * KACSATIR) kez çalışıyor.
Önce satır sonra sütün olacak.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
baloglurecep
Üye
Mesajlar: 261
Kayıt: 21 Tem 2006 04:59
İletişim:

Re: İç içe döngü ile excelden veri tabanına kayıt sorunu?

Mesaj gönderen baloglurecep »

freeman35 yazdı: 20 Oca 2019 08:37 ADOTable1.Append; (KACSUTUN * KACSATIR) kez çalışıyor.
Önce satır sonra sütün olacak.
Dediğinizi tam anlayamamakla beraber ilk döngüye satır sonrakine sütun döngüsünü koydum yine olmadı. kayıtlar tam doğru yere gitmiyor. Bir yerde bir eksiklik ya da yanlışlık yapıyorum.
ADOTable1.Append; (KACSUTUN * KACSATIR) kez çalışıyor. ifadesini tam anlayamadım. For döngüsünde önce ilk döngü 1 defa çalışıyor, sonra iç döngü satır sayısı kadar çalışıyor. Bu işlem sütun sayısı bitene tekrar ediyor. sorun zannediyorum ki append kısmında çünkü append ederek sürekli her sütunu yeni kayıt gibi gönderiyorum. Oysa ilk sütun yeni kayıt oluyorken sonrakiler edit modunda eklenmesi gerekiyor. tek döngü sadece satır ile yapsam olmuyor çünkü tablodaki fileld alanları excelden alınarak oluşuyor. fielleri bilmiyorum. Buna göre bir mantık kurmak gerekiyor.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: İç içe döngü ile excelden veri tabanına kayıt sorunu? SORUN ÇÖZÜLDÜ

Mesaj gönderen freeman35 »

Anlamışsın, ama anladığını anlamamışsın :) "append ederek sürekli her sütunu yeni kayıt gibi gönderiyorum. "
kodun her komutunu, kendin bilgisayarmışsın gibi tek tek anlayarak çalıştır, detaylı şekilde. Bir kâğıda yazarak kendin bilgisayarmışsın gibi.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Cevapla