Do Until Sorgusu Kullanımı Hakkında

1 2
30/09/2022, 12:52

angelos

Daha önce excelle aktarma ile ilgili sorum olmuştur, yardımlarınız ile hallettim teşekkür ederim. Access te olan verilerimi altta yazılı kod ile aktarmaya çalışıyorum fakat her satıra 1 numaradaki kaydı ekleyip sonsuz bir döngü içerisine giriyor, kayıtlarımı sırası ile alması ve bitince döngünün sonlanması için kodda ne gibi değişiklik yapmalıyım.

Kod:
   
Dim i
Do Until rs2.EOF

        excl.Range("A" & i).Value = DLookup("id", "tblpersonel")
        excl.Range("B" & i).Value = DLookup("sicil", "tblpersonel")
        excl.Range("C" & i).Value = DLookup("ad_soyad", "tblpersonel")
        excl.Range("D" & i).Value = DLookup("rutbe", "tblpersonel")
        excl.Range("E" & i).Value = DLookup("birim", "tblpersonel")
               
   
  rs2.MoveNext
        i = i + 1


    Loop
 
rs2.Close
30/09/2022, 13:35

orhantanriverdi

SELAMLAR,

O Sekilde olmasi sartmidir. buton tiklama olayina asagidaki sekilde bir kod ekleyip denermisiniz.



Function buton1()

DoCmd.OutputTo acOutputTable, "DOSYA ADI", "Excel97-Excel2003Workbook(*.xls)", "", False, "", , acExportQualityPrint


End Function
30/09/2022, 13:50

angelos

Forum içerisinden benzeyen konulara baktığımda sorgu oluşturmam gerektiğini anladım
Kod:
Set rs1 = CurrentDb.OpenRecordset("Select tblpersonel.id,tblpersonel.sicil,tblpersonel.ad_soyad,tblpersonel.rutbe,tblpersonel.birim from tblpersonel")

bu şekilde bir sorgu oluşturdum. Kod bloğunu da
Kod:
Dim i
       i = 3


        Do Until rs1.EOF

        excl.Range("A4") = excl.Range("A" & i).Value = rs1(0)
        excl.Range("B4") = excl.Range("B" & i).Value = rs1(1)
        excl.Range("C4") = excl.Range("C" & i).Value = rs1(2)
        excl.Range("D4") = excl.Range("D" & i).Value = rs1(3)
       ' excl.Range("E").value = DLookup("birim", "tblpersonel")
                
      i = i + 1
      
  rs1.MoveNext
      


    Loop
  
rs1.Close
bu şekilde düzenledim F8 ile kontrol ettiğimde kayıtlarda gezdiğini görüyorum ama excellde ilk satırda bulunan yerlere YANLIŞ ibaresi koyuyor daha sonraki satırlara inmiyor
30/09/2022, 13:56

berduş

recordsetin tamamı aktarılacaksa döngüye gerek yok copyfromrecordset ile aktarabiliyor zaten
Do Until rs2.EOF satırından önce If rs2.RecordCount > 0 Then rs2.MoveFirst satırı ekleyerek dener misiniz?
Not: her defasında biz belirtmeyelim; dosyanızı ekleyin
dosyanızı en baştan eklediğinizde çözüme daha çabuk ulaşılır
30/09/2022, 14:19

orhantanriverdi

Forum içerisinden benzeyen konulara baktığımda sorgu oluşturmam gerektiğini anladım
Set rs1 = CurrentDb.OpenRecordset("Select tblpersonel.id,tblpersonel.sicil,tblpersonel.ad_soyad,tblpersonel.rutbe,tblpersonel.birim from tblpersonel")

Bu sekilde kulanimlar genelde sablonu hazir olan excellere gonderme konusunda basarili. Eger bir sablon yani hazir bir excele gondermek istiyorsan bu yontem uygulanabilir

Sayin Berdus un dedigi ornek eklerseniz daha hizli cozum bulunabilir.
30/09/2022, 14:25

angelos

Evet şablon üzerinde ekleme yapıyorum çalışma içerisinde bilgiler olduğu için ekleyemedim ama yedek alıp bilgileri sildim ekte var çalışmam şu anda bakabilirseniz sevinirim direk aktar yaparsanız sonsuz döngüye giriyor bilginiz olsun
1 2