Skip to main content

AccessTr.neT


Userform İle Sql Tablosundan Arama Yapmak

Userform İle Sql Tablosundan Arama Yapmak

#7
Zafer abey selamlar, kodu hep kaldırdım yinede kasma devam ediyor. Farkli bir şey var gibi.
Cevapla
#8
Bir örnek hazırladım abey.
Test sayfasını power query den gelen sorgu gibi düşünebilirsiniz.
Önemli olan Match ve dizilerin çalışma maktası sorgudan geline göre.
Yani hem sorgu için döngü hemde listview için döngüye gerek yok.Sadece listview için gerek var.

sub view()
    Dim i As Long, sorgu As String, sorgu2 As String
    Dim dizi, dizi2, kac As Long
   
    Set rs = CreateObject("adodb.recordset")
   
    sorgu = "select yyy from [Test$] where yyy is not null"
    sorgu2 = "select * from [Test$] where yyy is not null"
    Call listvieww
   
    rs.Open sorgu, con, 1, 3
    If rs.RecordCount > 0 Then
        dizi = rs.getrows
       
        rs.Close
        rs.Open sorgu2, con, 1, 3
        dizi2 = rs.getrows
       
        With Me.ListView1
            For i = 1 To .ListItems.Count
                kac = 0
                On Error Resume Next
                kac = WorksheetFunction.Match(.ListItems(i), dizi, 0)
                If kac > 0 Then .ListItems(i).SubItems(1) = dizi2(1, kac - 1)
                If kac = 0 Then .ListItems(i).SubItems(1) = "Yok"
            Next
        End With
    End If
    On Error Resume Next
    Erase dizi: Erase dizi2
End Sub
.rar Listview arama.rar (Dosya Boyutu: 25 KB | İndirme Sayısı: 3)
Cevapla
#9
(01/07/2021, 01:13)feraz yazdı: Bir örnek hazırladım abey.
Test sayfasını power query den gelen sorgu gibi düşünebilirsiniz.
Önemli olan Match ve dizilerin çalışma maktası sorgudan geline göre.
Yani hem sorgu için döngü hemde listview için döngüye gerek yok.Sadece listview için gerek var.

sub view()
    Dim i As Long, sorgu As String, sorgu2 As String
    Dim dizi, dizi2, kac As Long
   
    Set rs = CreateObject("adodb.recordset")
   
    sorgu = "select yyy from [Test$] where yyy is not null"
    sorgu2 = "select * from [Test$] where yyy is not null"
    Call listvieww
   
    rs.Open sorgu, con, 1, 3
    If rs.RecordCount > 0 Then
        dizi = rs.getrows
       
        rs.Close
        rs.Open sorgu2, con, 1, 3
        dizi2 = rs.getrows
       
        With Me.ListView1
            For i = 1 To .ListItems.Count
                kac = 0
                On Error Resume Next
                kac = WorksheetFunction.Match(.ListItems(i), dizi, 0)
                If kac > 0 Then .ListItems(i).SubItems(1) = dizi2(1, kac - 1)
                If kac = 0 Then .ListItems(i).SubItems(1) = "Yok"
            Next
        End With
    End If
    On Error Resume Next
    Erase dizi: Erase dizi2
End Sub

@feraz abim merhaba. Yine emek verip uğraşmışsın eline sağlık.

If rs.RecordCount > 0 Then satırı aktifken tabloyu dizi içine almadı. dizi2 'ye hiçbir şekilde veri almadı. Muhtemelen ben bir şeyleri atlıyorum. Denemeye devam ediyorum.

Sevgiler selamlar.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task