ado çoklu where şartı

bunyaming

Altın Üye
Katılım
13 Ocak 2017
Mesajlar
158
Excel Vers. ve Dili
2010 türkçe
Altın Üyelik Bitiş Tarihi
11-02-2030
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
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,389
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
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, ",") & ")"
 

bunyaming

Altın Üye
Katılım
13 Ocak 2017
Mesajlar
158
Excel Vers. ve Dili
2010 türkçe
Altın Üyelik Bitiş Tarihi
11-02-2030
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
 

bunyaming

Altın Üye
Katılım
13 Ocak 2017
Mesajlar
158
Excel Vers. ve Dili
2010 türkçe
Altın Üyelik Bitiş Tarihi
11-02-2030
ç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

bunyaming

Altın Üye
Katılım
13 Ocak 2017
Mesajlar
158
Excel Vers. ve Dili
2010 türkçe
Altın Üyelik Bitiş Tarihi
11-02-2030
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

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,398
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
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
.
 

bunyaming

Altın Üye
Katılım
13 Ocak 2017
Mesajlar
158
Excel Vers. ve Dili
2010 türkçe
Altın Üyelik Bitiş Tarihi
11-02-2030
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
 
Üst