• Bir süredir maillerde yaşanan sorunlar giderilmiştir. Şifremi unuttum yaparak şifrelerinizi mailinizden alabilirsiniz.

  • Foruma hoş geldin 👋 Ziyaretçi

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Çözüldü ADO rs.GetRows yöntemi

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

ERDAL

Bronz Üye
Kullanıcı Bilgileri
Aktiflik
Çevrimdışı
Katılım
3 Nis 2021
Mesajlar
258
Çözümler
1
Aldığı beğeni
43
Excel V
Office 2013 TR
Konuyu Başlatan
ADO ile kurum bilgilerini güncelliyorum. Fakat çok yavaş çalışıyor. Bu verileri daha hızlı çekmek için ne yapılabilir. rs.GetRows yöntemini uygulamaya çalıştım ama yapamadım.
Bu konuda uzman hocalarımızın yardımlarını bekliyorum.

Yardımlarınız için şimdiden teşekkür ederim.

Verileri çektiğim kod;
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Kodda getrows kullanmamışsınız.
Örneğin bir diziye arr=rs.getrows(transposede kullanılabilinir) şeklinde alıp do until yapmaktan kurtulursunuz.Yada dediğim gibi diziye alıp verileride dictinonarye alıpta daha hızlanabilinir.
Ama herzamanki gibi dosya ekleme alışkanlığı olmadığı için hayali işlerle uğraşıyoruz.
Dosya eklerseniz yarın akşama bakarım tabii başka üstadlarda ilgilenir.

Artık dosya ekleyin kelimesini bize tekrar ettirmeyin abey(genel olarak)
 
Hocam, örnek dosyaları ekledim
Gerçek veriler en az 30 bin satır
 

Ekli dosyalar

  • Kurum Bilgileri (Kayanak).xlsx
    11.5 KB · Gösterim: 8
  • Öğrenci Sayıları (Hedef).xlsb
    24.2 KB · Gösterim: 7
Kodda getrows kullanmamışsınız.
Örneğin bir diziye arr=rs.getrows(transposede kullanılabilinir) şeklinde alıp do until yapmaktan kurtulursunuz.Yada dediğim gibi diziye alıp verileride dictinonarye alıpta daha hızlanabilinir.
Ama herzamanki gibi dosya ekleme alışkanlığı olmadığı için hayali işlerle uğraşıyoruz.
Dosya eklerseniz yarın akşama bakarım tabii başka üstadlarda ilgilenir.

Artık dosya ekleyin kelimesini bize tekrar ettirmeyin abey(genel olarak)
Hocam, dosyaları her sorumda eklemişimdir. Bu soruda unutmuşum.
 
Sayın Erdal çok daha hızlı kod yazımı gelecektir.
Benimkisi girizgah olsun.
Öğrenci Sayıları (Hedef) dosyasında listele butonuna tıklayın.
Ben yol değişkenini kendime uyarladım.
Siz de kendi dosyanıza uyarlayın.
Dener misiniz.
Kolay gelsin.
 

Ekli dosyalar

  • Kurum Bilgileri (Kayanak).xlsm
    16.9 KB · Gösterim: 8
  • Öğrenci Sayıları (Hedef).xlsm
    54.5 KB · Gösterim: 9
Hocam, teşekkür ederim,
Gerçek dosya üzerinde denedim. Fakat olmayan kurumları da ekliyor. Ayrıca İlçe bilgilerini Tipi ve İlçe başlığına olmak üzere ikisinede getiriyor.
Yapmak istediğim; Eğer Kurum Kodu her iki dosya dada eşit ise belirtilen verilerin ilgili Kurum Kodunun karşısına getirmek.
 
Sayın Erdal
O zaman sizin sql sorgu cümlesinde
başvurduğunuz sütunlarda bir sıkıntı var.
Ben sizin sql sorgu tümcesini aynen kullandım.
Benim yaptığım
veri = Application.Transpose(rs.GetRows(rs.RecordCount)) ile
bu verileri diziye almak oldu.

Sonra da Öğrenci_Sayıları sayfasıyla karşılaştırmak.
O da basit bir kurgu. Sayfadaki kurum kodu veri dizisinde varsa
diğer şıkları al. Sayfada epeyce tekrarlı bilgi vardı ama
bunu örnek dosya diye sıkıntı olarak görmedim.
Mesela 8 tane 1235 kurum kodu var.
Zaten Kurum Kodu ve Tipi sütunlarını da silme koduna almamışsınız.
Ben de dokunmadım. Ya ben soruyu tam anlayamadım yada siz net ifade edemediniz.
 
Hocam, tekrarlı veriler var, çünkü kurumun ne kadar sınıf/ şubesi varsa korum kodu ve adı o kadar tekrar ediyor. Bu raporun aslı böyle.
 
aşağıdaki kodu dener misiniz?
kodda dosya adı/ adresi, sayfa ve alan adları eklediğiniz dosyaya göreydi
kendi çalışmanıza uyarlamanız gerek
mesela kendi çalışmamda kaynak dosya hedef dosya ile aynı dizinde olduğundan kaynak dosya yolu
xKaynakDosya = ThisWorkbook.Path & "\Kayanak_Dosya.xlsx" şeklinde tanımlanmıştır
siz o adresi
yol = "C:\Users\ErdalOZDEMIR\Desktop\Kayanak_Dosya.xlsx" olarak düzenleyebilirsiniz yada kaynak dosya adı/adresi neyse ona göre
SQL:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
sağolsun Refaz hocam belirttikten sonra fark ettim group by'ı eklemeyi unutmuşum. kodu ona göre yeniden düzenledim
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Son düzenleme:
Not : mobilden incelerken silmeyi unuttuğum gereksiz kodları görüp onları sildim. Dilerim kazara gerekli yerleri de silmemişimdir.
Not2 :koddaki vbnewline komutları aslında gereksiz, onları sorgunun ekran çıktısı daha anlaşılabilir olsun diye eklemiştim.
 
Son düzenleme:
Alternatif dictionary kullanıldı.
Kodları kopyala yapıştır yapınca belki Tr harfleri düzenlemeniz gerekecek.

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Çözüm
aşağıdaki kodu dener misiniz?
kodda dosya adı/ adresi, sayfa ve alan adları eklediğiniz dosyaya göreydi
kendi çalışmanıza uyarlamanız gerek
mesela kendi çalışmamda kaynak dosya hedef dosya ile aynı dizinde olduğundan kaynak dosya yolu
xKaynakDosya = ThisWorkbook.Path & "\Kayanak_Dosya.xlsx" şeklinde tanımlanmıştır
siz o adresi
yol = "C:\Users\ErdalOZDEMIR\Desktop\Kayanak_Dosya.xlsx" olarak düzenleyebilirsiniz yada kaynak dosya adı/adresi neyse ona göre
SQL:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
halily hocam excelde left joini böyle kullanmak başa belaydı bu yüzden hatırlarsanız beraberinde first kullanmıştık bir konuda bana yardım etmiştiniz :)
Benimde ilk aklıma sizinki gibi kullanmak gelmişti ama fazla sql bilmediğim için kapalı ve açık dosyada beraber aynı sorguda kullanmayı unutmuştum kodu görünce hatırladım :)
 
Hocam, tekrarlı veriler var, çünkü kurumun ne kadar sınıf/ şubesi varsa korum kodu ve adı o kadar tekrar ediyor. Bu raporun aslı böyle.
Alternatif dictionary kullanıldı.
Kodları kopyala yapıştır yapınca belki Tr harfleri düzenlemeniz gerekecek.

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Rafez Hocam, teşekkür ederim. Elinize emeğinize sağlık.
Tam istediğim gibi olmuş. Hızıda çok iyi.
Halil Hocam ve diğer yardımcı olmaya çalışan tüm arakadaşlara çok teşekkür ederim.

Rafez Hocam, Kapalı dosyadan ADO ile veri alırken her defasında dosyayı açıp sayfa adlarını değiştirmek zorundayım.
bu konuda ne yapabilirim.

Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Konuyu Access de açtığınızı sonradan fark ettim. Eğer her iki dosyadaki tablolarınızı Access'e aktarabilirseniz, hiç kod yazmadan tabloyu güncelleye bilir, Excel olarak dışa aktarabilirsiniz.
 
Konuyu Access de açtığınızı sonradan fark ettim. Eğer her iki dosyadaki tablolarınızı Access'e aktarabilirseniz, hiç kod yazmadan tabloyu güncelleye bilir, Excel olarak dışa aktarabilirsiniz.
Teşekkür ederim.
 
Kapalı dosyadan ADO ile veri alırken her defasında dosyayı açıp sayfa adlarını değiştirmek zorundayım.
bu konuda ne yapabilirim.
Rica ederim.
Bunun için yeni konu açmanız gerek çünkü anlamadım.
Doğru anladıysam kapalı exceli hiç açmadan Ado ile sayfa adları alınıyor bunu uygularız.
Yada kapalı dosyadaki excelin sayfa adını exceli açmadan değiştirmek istiyorsanız bilmiyorum hiç uğraşmadım.
Kolay gelsin.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst