• DİKKAT

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

Sql'den Excel'deki Userform üzerindeki Combobox ile sorgu

  • Konbuyu başlatan Konbuyu başlatan quesh
  • Başlangıç tarihi Başlangıç tarihi
Katılım
25 Mart 2010
Mesajlar
340
Excel Vers. ve Dili
2007,2010
Arkadaşlar tekrar merhaba.

Sql'de Excel'deki hücre içeriğine göre veri çeken makroyla sizlerin de yardımlarınızla bir süredir haşır neşirim.
Bir UserForm hazırladım ve ComboBoxlar içeriyor. comboboxtan değerleri seçip "Sorgula" command Buttonuna tıkladığımda Sql'den comboboxtaki kriterlere uyan verileri çekmesini istiyorum.
Userformumda 4 adet combobox mevcut. Bunlar; Yıl, Ay, Yakıt Türü ve Bölge Kodu seçmeye yarıyor ve içerikleri tanımlı. Ve bir de sorguyu başlatmak için koyduğum Command Button mevcut Userform üzerinde.

Userform1 üzerinde;
ComboBox1 - Yıl, ComboBox2- Ay, ComboBox3-Yakıt türü (sayı değil söz dizisi içeriyor). ComboBox4-Bölge Kodu ve bir de Sorgulamayı başlatmak üzere; CommandButton mevcut.

Hücre değerine göre sorgu yapan eski kod aşağıdadır. Şimdi bunu Comboboxtaki değerlere göre sorgu yapması için değiştirmek üzere yardımlarınızı bekliyorum.
Saygılar sunarım.

Kod:
Sub SORGU()
'
' SORGU Makro
' Makro MURAT tarafından 08.01.2011 tarihinde kaydedildi.
'

'

    Dim alan As Range
Set alan = ActiveWorkbook.Sheets("Sayfa3").Range("a1:z20000")
Sheets("Sayfa3").Select
alan.ClearContents
    With ActiveSheet.QueryTables.Add(Connection:= _
        "ODBC;DSN=OTOSRV;Description=OTOSRV;UID=sa;;APP=Microsoft Office 2003;WSID=MURAT-PC;DATABASE=TRIGONDATAMERKEZ;Network=DBMSSOCN" _
        , Destination:=Range("A1"))
        .CommandText = Array( _
        "SELECT Cari.Miktari, Cari.YakitStr, Cari.Satis, Cari.ay, Cari.yil, Cari.BolgeId" & Chr(13) & "" & Chr(10) & "FROM TRIGONDATAMERKEZ.dbo.Cari Cari" & Chr(13) & "" & Chr(10) & "WHERE (Cari.ay=" & Sheets("Sayfa1").Range("M2").Value & ") AND (Cari.yil=" & Sheets("Sayfa1").Range("L2").Value & ") AND (Cari.YakitStr=" & "'" & Sheets("Sayfa1").Range("O2").Value & "'" & ") AND (Cari.BolgeId=" & Sheets("Sayfa1").Range("n2").Value & " )" _
        )
        .Name = "OTOSRV kaynağından sorgula"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
        MsgBox "Tamamdır", vbInformation, "M U R A T H."
    End With
End Sub
 
Sorun çözüldü.

Koddaki ilgili kısım

"WHERE (Cari.ay=" & ComboBox2.Text & ") AND (Cari.yil=" & ComboBox1.Text & ") AND (Cari.YakitStr=" & "'" & ComboBox3.Text & "'" & ") AND (Cari.BolgeId=" & ComboBox4.Text & " )" _
)

ile değiştirildi.
 
Tekrar merhaba.
Arkadaşlar , kod sorguyu tüm comboboxlardan veri seçilirse yapıyor tamam. Ancak sorun şu ki örneğin ben Yılı 2010 seçtim, ayı 9 , Yakıt türünü de Euro Dizel seçtiğimde ANCAK Bölge Kodu'nu boş bıraktığımda kod hata veriyor. Ama ben bölge Kodunu girmediğim zaman comboboxta tanımlı tüm bölge kodlarını da kapsayan sorgulama yapmasını istiyorum.
Bilmem anlatabildim mi?

Saygılar.
 
Geri
Üst