SQL sorguda değer sayısına göre filtreleme

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,027
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
Aşağıdaki kod ile bir alandaki 2 ve 3 değerlerini filtre ederek verileri çekebiliyoruz,
yalnız burada Havuz içinde kalan ilk 10 değeri alıp getirmekte;

burada arama yapılan 2 ve 3 değerleri için;

6 adet 3 değerinden, 4 adet 2 değerinden oalcak şekilde yine toplam 10 adet getirmesi sağlanabilir mi?

teşekkürler,
iyi hafta sonları.....


Kod:
Sub sorguu()
Dim Con As Object
Dim RS As Object
Dim yol As String

Sayfa2.Cells.ClearContents

Set Con = VBA.CreateObject("adodb.Connection")

yol = ThisWorkbook.FullName

Con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
yol & ";extended properties=""Excel 12.0;hdr=yes"""

sorgu = "select Top 10  * from [Data$] where [Alan1] =2 Or [Alan1] = 3"

Set RS = Con.Execute(sorgu)

Sayfa2.Range("A2").CopyFromRecordset RS

Set RS = Nothing
Set Con = Nothing

End Sub
/code]
 

Ekli dosyalar

MusaPEKEL

Altın Üye
Katılım
29 Ağustos 2016
Mesajlar
65
Excel Vers. ve Dili
2013
Altın Üyelik Bitiş Tarihi
16-01-2027
Merhaba,
Aşağıdaki kod ile bir alandaki 2 ve 3 değerlerini filtre ederek verileri çekebiliyoruz,
yalnız burada Havuz içinde kalan ilk 10 değeri alıp getirmekte;

burada arama yapılan 2 ve 3 değerleri için;

6 adet 3 değerinden, 4 adet 2 değerinden oalcak şekilde yine toplam 10 adet getirmesi sağlanabilir mi?

teşekkürler,
iyi hafta sonları.....


Kod:
Sub sorguu()
Dim Con As Object
Dim RS As Object
Dim yol As String

Sayfa2.Cells.ClearContents

Set Con = VBA.CreateObject("adodb.Connection")

yol = ThisWorkbook.FullName

Con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
yol & ";extended properties=""Excel 12.0;hdr=yes"""

sorgu = "select Top 10  * from [Data$] where [Alan1] =2 Or [Alan1] = 3"

Set RS = Con.Execute(sorgu)

Sayfa2.Range("A2").CopyFromRecordset RS

Set RS = Nothing
Set Con = Nothing

End Sub
/code]
Kod:
Sub sorguu()
    Dim Con As Object
    Dim RS As Object
    Dim yol As String
    Dim sorgu As String

    Sayfa2.Cells.ClearContents

    Set Con = VBA.CreateObject("adodb.Connection")

    yol = ThisWorkbook.FullName

    Con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
        yol & ";extended properties=""Excel 12.0;hdr=yes"""

    ' SQL sorgusunu güncelle
    sorgu = "SELECT TOP 10 * FROM [Data$] WHERE [Alan1] = 3 " & _
            "UNION ALL " & _
            "SELECT TOP 4 * FROM [Data$] WHERE [Alan1] = 2"

    Set RS = Con.Execute(sorgu)

    Sayfa2.Range("A2").CopyFromRecordset RS

    Set RS = Nothing
    Set Con = Nothing
End Sub
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,027
Excel Vers. ve Dili
Office 2013 İngilizce
Kod:
Sub sorguu()
    Dim Con As Object
    Dim RS As Object
    Dim yol As String
    Dim sorgu As String

    Sayfa2.Cells.ClearContents

    Set Con = VBA.CreateObject("adodb.Connection")

    yol = ThisWorkbook.FullName

    Con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
        yol & ";extended properties=""Excel 12.0;hdr=yes"""

    ' SQL sorgusunu güncelle
    sorgu = "SELECT TOP 10 * FROM [Data$] WHERE [Alan1] = 3 " & _
            "UNION ALL " & _
            "SELECT TOP 4 * FROM [Data$] WHERE [Alan1] = 2"

    Set RS = Con.Execute(sorgu)

    Sayfa2.Range("A2").CopyFromRecordset RS

    Set RS = Nothing
    Set Con = Nothing
End Sub
Musa Hocam desteğiniz için teşekkürler,
yukarıdaki kodlar tek bir alan [Alan1] içinde filtreleme yapmakta;
buradaki kritere ilavaten 2. bir alanı [Alan2] daha koşul olarak eklemek istersek;
kod üzerinde nasıl bir düzenleme yapılabilir?

Alan1 deki koşula ilavaten aynı şekilde;
Alan2 içerisinde de 6 adet 3 değerinden, 4 adet 2 değerinden olacak şekilde toplam 10 adet getirmesi sağlanabilir mi?
Özetle aynı koşulu hem [Alan1] de hemde [Alan2] de sağlayacak..

tekrar teşekkürler,
iyi akşmalar.
 
Üst