• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

ado çoklu where şartı

bunyaming

Altın Üye
Katılım
13 Ocak 2017
Mesajlar
158
Excel Vers. ve Dili
2010 türkçe
Merhaba,
iki gündür araştırıp bulamadığım bir konuda sayın hocalarımdan bir ricam olacak.
öncellikle tam kurgu yapamadığım için örnek dosya eklemedim, sadece yol gösterilmesini bekliyorum
databaseden listboxa benzersiz veri getireceğim ve buradan çoklu seçim yapacağım. Bu seçimleriminde sorgu da sql where şartı olarak tanımlamam lazım
bu şartlara göre databaseden filtreleyerek getirmesini hedefliyorum.(Power query gibi)
bunu nasıl yapabilirim veya nasıl yapabileceğimi gösteren bildiğiniz bir kaynak varmıdır?
yardımcı olursanız sevinirim
teşekkürler
 
Listbox üzerindeki tekil veriler sanırım tek bir alana ait ve belli başlı değerlerin kısıtlaması isteniyor. Bu durumda listbox üzerinde seçili olanları bir diziye aktarıp join fonksiyonunu da kullanrak "," virgül ile birleştirin. Örneğin;

PHP:
sql = "select .... where field in (" & join(dizi, ",") & ")"
 
Listbox üzerindeki tekil veriler sanırım tek bir alana ait ve belli başlı değerlerin kısıtlaması isteniyor. Bu durumda listbox üzerinde seçili olanları bir diziye aktarıp join fonksiyonunu da kullanrak "," virgül ile birleştirin. Örneğin;

PHP:
sql = "select .... where field in (" & join(dizi, ",") & ")"
çok teşekkürler Zeki Hocam
evet dediğiniz gibi tek başlık altında belli kriterleri sorgulatmak için istemiştim
en kısa sürede dosyayı oluşturup tekrar dönüş yapacağım
tekrar teşekkürler
 
çok teşekkürler Zeki Hocam
evet dediğiniz gibi tek başlık altında belli kriterleri sorgulatmak için istemiştim
en kısa sürede dosyayı oluşturup tekrar dönüş yapacağım
tekrar teşekkürler

merhaba,

listbox da yapılan çoklu seçimleri diziye alıp in operatörü ile sonuç elde etmeye çalışıyorum Zeki Hocamızın dediği gibi.
sanırım bir yerlerde yanlış yapıyorum (muhtemelen dizi de)
bu konuda siz değerleri üstadlarımın yardımlarını rica ediyorum
teşekkürler
 

Ekli dosyalar

merhaba,

listbox da yapılan çoklu seçimleri diziye alıp in operatörü ile sonuç elde etmeye çalışıyorum Zeki Hocamızın dediği gibi.
sanırım bir yerlerde yanlış yapıyorum (muhtemelen dizi de)
bu konuda siz değerleri üstadlarımın yardımlarını rica ediyorum
teşekkürler

dizi kısmını düzelttim sanırım sadece sgl içinde where IN den sonrası için yardım lütfen sayfa2 de listboxda seçilen veriler "P" sütununda gösteriliyor
sütunda ki değerlere göre sayfa2 de "A" sütunu içinde ki belirtilen değerler sayfa1 e gelmeli
bunu where il in('Adana','Ankara','Çanakkale') yazınca geliyor ama benim listbox il çoklu seçerek doldurma yolunu siz değerli üstadlarımdan öğrenmem lazım.


güncel dosya bu mesajda

teşekkürler
 

Ekli dosyalar

Zeki Beyin önerisine göre revize edilmiş kodunuz;

Kod:
Private Sub coklu()
    Dim i As Integer, j As Integer
    Dim dizi() As String, query As String
    Dim con As New ADODB.Connection, RS As New ADODB.Recordset
    
    Sayfa1.Range("A1").CurrentRegion.ClearContents
    
    For i = 0 To Sayfa2.ListBox1.ListCount - 1
        If Sayfa2.ListBox1.Selected(i) Then
            ReDim Preserve dizi(j)
            dizi(j) = "'" & Sayfa2.ListBox1.List(i) & "'"
            j = j + 1
        End If
    Next
   
    con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & _
             ";Extended Properties=""Excel 12.0;HDR=YES;"""
    
    query = "Select * from [Sayfa2$] where İL IN(" & Join(dizi, ",") & ")"
    
    RS.Open query, con
    
    Sayfa1.Range("A1").CopyFromRecordset RS
    RS.Close
    con.Close
End Sub

.
 
Zeki Beyin önerisine göre revize edilmiş kodunuz;

Kod:
Private Sub coklu()
    Dim i As Integer, j As Integer
    Dim dizi() As String, query As String
    Dim con As New ADODB.Connection, RS As New ADODB.Recordset
   
    Sayfa1.Range("A1").CurrentRegion.ClearContents
   
    For i = 0 To Sayfa2.ListBox1.ListCount - 1
        If Sayfa2.ListBox1.Selected(i) Then
            ReDim Preserve dizi(j)
            dizi(j) = "'" & Sayfa2.ListBox1.List(i) & "'"
            j = j + 1
        End If
    Next
  
    con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & _
             ";Extended Properties=""Excel 12.0;HDR=YES;"""
   
    query = "Select * from [Sayfa2$] where İL IN(" & Join(dizi, ",") & ")"
   
    RS.Open query, con
   
    Sayfa1.Range("A1").CopyFromRecordset RS
    RS.Close
    con.Close
End Sub

.
Teşekkürler Hocam
süper oldu şimdi
hemde uzun süredir aradığım cevabı bulmuş oldum
tekrar teşekkürler
 
Geri
Üst