• 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ü SQL hızlı veri çekmek

Bu sorun verilen destek sayesinde çözüme ulaştırılmıştır.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

dogan.importexport

Yeni Üye
Kullanıcı Bilgileri
Katılım
9 Eyl 2021
Mesajlar
206
Çözümler
2
Aldığı beğeni
17
Excel Versiyonu
Office 365 TR
Konuyu Başlatan
Arkadaşlar excele sql den veri çekiyorum ama o kadar çok veri oldu ki artık çok yavaş çekmeye başladı. Tabi buda hızlansın diye yapılan iş daha da yavaş hal aldı. Hızlı aktarım yapmanın bir yolu yokmudur. Ben genel de tüm tablolarda aşağıdaki kodları kullanıyorum.

C++:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Çözüm
aşağıdaki dosyayı dener misiniz bende sorunsuz çalışıyor sadece
ServerName = "HALIL\SQLEXPRESS"
DatabaseName = "MikroDB_V16_FIRATOZEL" alanları sizdeki tanımlara göre değişmeli başka bir şey değişmeyecek
eğer bu da çalışmazsa aklıma başka bir şey gelmiyor
dediğim gibi sadece
ServerName ve DatabaseName değişecek başka bir şey değil
dediğim gibi siz orijinal tablo adı ve alanlarıyla excel dosyanızı ekleyin, excele nasıl alması gerektiğini açıklayın biz de çalışmaya bir an önce başlayalım.
 
Örnek olarak alttaki gibi redim yönetmiyle hızlanabilir.

CSS:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Üstad sıralı gitmiyor. SQL de çok fazla kolon var. Aslında yavaşlatan olay bakiye ve B - A kısmını sayfa içinde yaptığım manuel formul yapıyor. Ve çok seri evrak girdiği için 25 000 satır veri var ise ben mecbur 27-28 000 formül yapmak zorunda kalıyorum. Çünki her seferinde formül ekleyemem. Bakiye ve B A olayını makrolu yapabilirseniz daha da hızlanır
Sheet21 de ve frmrcekstre formunda işlem yapıldı.
Diğerlerinide böyle yapabilirsiniz.

Alttaki gibi kod yazdım formülden kurtulmak için.

CSS:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 

Ekli dosyalar

  • SQL VERİ HIZLANDIRMA 1.7z
    1.3 MB · Gösterim: 4
Kendi dosyanıza sadece yazdığım forumdaki kodları ekleyin
 
Birde veritabanı adı kodda var const ile olanda.global alanda olduğju için altçizgi(_) bunu boşluk olarak gösteriyor eğer vt adı yazacksanız abey.
 
Bu döngü neredeyse 40 satır arasından seçildi ama. sizin kodlarınızı koyarsam bu sefer diğerleride mecburen sayfaya gelecek bu sefer çok farklı düzenlemeler yapmış olacağım yanılıyormuyum. Kolonları seçtim çünki çok fazla olduğu için
Ne değişecek orasını pek anlayamadım. Copyfromrecordset de aynı şeyi yapmış olmayacak mı?
 
Ne değişecek orasını pek anlayamadım. Copyfromrecordset de aynı şeyi yapmış olmayacak mı?
Abey bizde diyoruz ama 40 kolon oldoğu için uğraşmak istemiyor abey :)
Select *
Bununla tümünü aldırıyor copy ile yaparsa tümü alınır ama istenilen bu tümünden bazılarını almak.Bunun içinde ya dögü yada select içine [alan adları] yazıp copy ile çekmek benim bildiğim
 
Abey bizde diyoruz ama 40 kolon oldoğu için uğraşmak istemiyor abey :)
Select *
Bununla tümünü aldırıyor copy ile yaparsa tümü alınır ama istenilen bu tümünden bazılarını almak.Bunun içinde ya dögü yada select içine [alan adları] yazıp copy ile çekmek benim bildiğim
Döngü içinde 40 satır kod yazmak mı? Select ile 40 tane alan adı yazmak mı daha pratik sizce?

Fikirlere saygı duyarım ama böyle bir yöntem ile sadece select sorgusuna alan adlarını yazmak dururken değişken tanımlamak değişkeni döngüye almak, döngü içinde satır satır her bir sütunun veri kopyalama kodunu yazmak çok daha zor geliyor bana. Copy + Paste bile yapsak yine de tek tek o kolon numaraları değişecek.

dogan.importexport
Sorgu yaptığınız sql veritabanı express mi yoksa lisanslı bir sürüm mü kullanıyorsunuz? Express ise bildiğim kadarıyla belli kısıtlamalar söz konusu. Lisanslı bir program kullanıyorsanız böyle bir şey olmaması gerek.
 
Üstad sıralı gitmiyor. SQL de çok fazla kolon var. Aslında yavaşlatan olay bakiye ve B - A kısmını sayfa içinde yaptığım manuel formul yapıyor. Ve çok seri evrak girdiği için 25 000 satır veri var ise ben mecbur 27-28 000 formül yapmak zorunda kalıyorum. Çünki her seferinde formül ekleyemem. Bakiye ve B A olayını makrolu yapabilirseniz daha da hızlanır
SQL deki kolon sıranız ile excel üzerindeki kolon sıranız aynı olmak zorunda değil.

Örnek olarak 5 alan adı olduğunu varsayalım
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
gibi bir örnekte seçiminize göre alacaklar kolonları recordset nesnesinin içine yani sırasıyla 5.alan, 3.alan, 4.alan, 1.alan şeklinde gelecektir.
Yine de her durumda Alan adlarını seçmek en mantıklısı. Sizi döngüden kurtaracak yöntem bu.

Ayrıca hangi mesajınızdı hatırlamıyorum, "excel tarafında sorun yok SQL de çok fazla veri olduğu için SQL üzerinden veriyi alırken çok yavaş alıyor" dediğinizi hatırlıyorum. Fakat bu mesajınızda 27.000-28.000 formül olduğundan bahsediyorsunuz.
Sayfanızda o kadar formül varken yavaşlama için başka sebep aramaya gerek yok. Yine de sizin takdiriniz tabi.

Bakiye hesaplatmak için örnek bir tablonuz var mı peki?
 
Döngü içinde 40 satır kod yazmak mı? Select ile 40 tane alan adı yazmak mı daha pratik sizce?

Fikirlere saygı duyarım ama böyle bir yöntem ile sadece select sorgusuna alan adlarını yazmak dururken değişken tanımlamak değişkeni döngüye almak, döngü içinde satır satır her bir sütunun veri kopyalama kodunu yazmak çok daha zor geliyor bana. Copy + Paste bile yapsak yine de tek tek o kolon numaraları değişecek.

dogan.importexport
Sorgu yaptığınız sql veritabanı express mi yoksa lisanslı bir sürüm mü kullanıyorsunuz? Express ise bildiğim kadarıyla belli kısıtlamalar söz konusu. Lisanslı bir program kullanıyorsanız böyle bir şey olmaması gerek.
Konu koptu gitti zaten abey.Neyin ne olduğuda karıştı,biz kendi kendimize gelin güvey oluyoruz.Tek tek değişken eklemeyede gerek yok esasen döngü için.
Fieldsname gibi olaylarlada döngü yapılabilir eğer sql server içinde kullanılabiliyorsa.
 
aeGNoR hocam ben express kullanıyorum onda da istediğimiz sütunları çekip koşul ekleyip iif gibi fonksiyonları kullanabiliyoruz, yani o açıdan sıkıntı yok, yani en mantıklısı sizin belirttiğiniz gibi copyfromrecordset ama maalesef ekli dosyada neyin serverdan alınıp neyin alınmadığı, hangi işlemlerin neye göre yapıldığı belli değil
mesela sayfa26da B / A alanı, sayfa26 sunucudaki bir tablodan mı alınacak yoksa yerel excel dosyası mı belli değil.
 
SQL deki kolon sıranız ile excel üzerindeki kolon sıranız aynı olmak zorunda değil.

Örnek olarak 5 alan adı olduğunu varsayalım
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
gibi bir örnekte seçiminize göre alacaklar kolonları recordset nesnesinin içine yani sırasıyla 5.alan, 3.alan, 4.alan, 1.alan şeklinde gelecektir.
Yine de her durumda Alan adlarını seçmek en mantıklısı. Sizi döngüden kurtaracak yöntem bu.

Ayrıca hangi mesajınızdı hatırlamıyorum, "excel tarafında sorun yok SQL de çok fazla veri olduğu için SQL üzerinden veriyi alırken çok yavaş alıyor" dediğinizi hatırlıyorum. Fakat bu mesajınızda 27.000-28.000 formül olduğundan bahsediyorsunuz.
Sayfanızda o kadar formül varken yavaşlama için başka sebep aramaya gerek yok. Yine de sizin takdiriniz tabi.

Bakiye hesaplatmak için örnek bir tablonuz var mı peki?
Üstad lisanslı SQL. Ayrıca alan adı yazmak daha mantıklı ilk etapta anlayamamıştım. ama sonradan fark ettim. Formül kısmını Refaz arkadaş çözdü şimdi biraz daha rahatladı. sıra sizin dediğinize geldi veri dediğim alanıda geçti şuan 37 binlerde ve bu her saat artıyor. Access den bağlanabilsem accesse çekecem veriyi daha seri olması için ama başa dönmüş olacağım karar veremedim. Ve access çok fazla bilmiyorum
 
RCekstre sayfasına veri alma yordamı
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
userformdaki Listbox2 için veri alma fonksiyonu
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
UserForm_Initialize olayı
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 

Ekli dosyalar

  • Proje Son_hy2.xlsm
    47.8 KB · Gösterim: 1
Son düzenleme:
son hali bu dener misiniz?
bende trimde hata vermiyor
 

Ekli dosyalar

  • Proje Son_hy3.xlsm
    1.2 MB · Gösterim: 2
bende koşul alanı olmadığından koşulsuz alırken sorun çıkmadı ama siz koşullu kullanıyorsanız belki hata ondan kaynaklanıyordur. isterseniz trim kısmını silin, sıralarken bazı değerlerin başında boşluk olduğundan veriler düzgün sıralanmıyordu o nedenle eklemiştim
FROM CHFO order by trim([msg_S_0134]) yerine FROM CHFO order by [msg_S_0134]
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Konuyu okuyanlar

Geri
Üst