Skip to main content

AccessTr.neT


Userform İle Sql Tablosundan Arama Yapmak

Userform İle Sql Tablosundan Arama Yapmak

Çözüldü #1
Merhaba Arkadaşlar,

Listview'i doldurmak için kullandığım aşağıdaki kodu, doğrudan Sql sorgusu ile yapabilir miyim ?

Kullanılan Kod:

Kod
    Set bul = ThisWorkbook.Sheets("Yedek").Range("C:C").Find(ListView1.ListItems(i), , , 1)
  
    If Not bul Is Nothing Then ListView1.ListItems(i).SubItems(3) = bul.Offset(0, -2).Value
  
    Set bul = Nothing

bu şekilde datayı 20.000 satırlık "Yedek" sayfasından çok kısa sürede buluyor.

Tam olarak yapmak istediğim "Yedek" sayfasını yok ederek bilgileri Sql üzerinden almak.

Bunun için şöyle bir kod denedim.

Kod
sorgu = "select FATIRS_NO,CARI_KODU,ACIKLAMA FROM SUMO_RPR_SIP"

rs.Open sorgu, cn, adOpenStatic

        On Error Resume Next
        If Not rs.EOF Then
        Do While Not rs.EOF

For i = 1 To Me.ListView1.ListItems.Count
If Me.ListView1.ListItems(i) = rs.Fields("ACIKLAMA") Then
Me.ListView1.ListItems(i).SubItems(3) = "FATIRS_NO"
End If
Next i

rs.MoveNext
Refresh.ListView1
    Loop
    End If
    rs.Close: cn.Close
    Set rs = Nothing

evet istediğim veriyi verdi, ama 10 satırlık listview verisi için 10-15 saniye gibi bir gecikme ve kasma yarattı.

Nerde yanlış yapıyorum acaba ??

Şimdiden teşekkür eder , herkese sağlıklı günler dilerim.

Not: Dosyamda Sql bağlantısı olduğu için sizde çalışmayacaktır. Dolayısı ile örnek dosya paylaşamıyorum.
Cevapla
#2
veriler nereden listview'e aktarılıyor?
Cevapla
#3
@berduş hocam Selamlar,

Listview içine
1-AdoDB ile başka bir excelden
2-Excelin Kendi içindeki 2 ayrı sayfadan veri alıyor.

Bu bahsettiğim iki ayrı sayfaya veriler PowerQuery ile Sql den geliyor.

İstediğim bu iki sayfayı yok edip doğrudan Sql den veri alabileyim. Bunu istememin nedeni bu iki sayfayı her defasında yenilemek zorunda kalmam. Yenileme yapmadan veriler sabit kaldığından hataya neden oluyor.
Cevapla
#4
yanılmıyorsam daha önce excelden veri almayla ilgili bir sorunuzda kapalı excelden nasıl veri alınacağını göstermiştik forumda da benzer örnekler var onları kullanarak veri recordset ile anlık olarak alınabilir ama daha anlamlı bir yardım için örnek dosyaya ve daha ayrıntılı bir açıklamaya ihtiyaç var.
Cevapla
#5
(30/06/2021 15:55)berduş Adlı Kullanıcıdan Alıntı: yanılmıyorsam daha önce excelden veri almayla ilgili bir sorunuzda kapalı excelden nasıl veri alınacağını göstermiştik forumda da benzer örnekler var onları kullanarak veri recordset ile anlık olarak alınabilir ama daha anlamlı bir yardım için örnek dosyaya ve daha ayrıntılı bir açıklamaya ihtiyaç var.

Üstad kapalı dosyadan veri alma işini öğrendim ve uyguladım. Onda problem yok.

Benim öğrenmek istediğim aşağıdaki kod neden yavaş çalışır. Dosya eklesemde sizde çalışmayacak hocam. Yine de ekleyin derseniz örnek bir dosya eklerim.


Kod
sorgu = "select FATIRS_NO,CARI_KODU,ACIKLAMA FROM SUMO_RPR_SIP"

rs.Open sorgu, cn, adOpenStatic

        On Error Resume Next
        If Not rs.EOF Then
        Do While Not rs.EOF

For i = 1 To Me.ListView1.ListItems.Count
If Me.ListView1.ListItems(i) = rs.Fields("ACIKLAMA") Then
Me.ListView1.ListItems(i).SubItems(3) = "FATIRS_NO"
End If
Next i

rs.MoveNext
Refresh.ListView1
    Loop
    End If
    rs.Close: cn.Close
    Set rs = Nothing
Cevapla
#6
(30/06/2021 16:01)kanakan52 Adlı Kullanıcıdan Alıntı: Refresh.ListView1
En başta bu kod zaten loop tan sonra olmalı abey.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da