• DİKKAT

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

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

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,201
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,201
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