ADODB.Recordset ile Combobox a 3 sütun getirmek

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kod:
......................
SQLStr = "SELECT DISTINCT TCK_NO FROM [DATA$]"    'kynMHBRM dosyada ilgili satırlarda sorgu yap
Set RecTcNo = New ADODB.Recordset
RecTcNo.Open SQLStr, bagTCKMLK, adOpenKeyset, adLockOptimistic
        RecTcNo.MoveFirst:        ComboBox85.Clear
            For i = 1 To RecTcNo.RecordCount
               ComboBox85.AddItem RecTcNo.Fields("TCK_NO")
               RecTcNo.MoveNext
            Next i
        RecTcNo.MoveFirst:        ComboBox85.ListIndex = 0
If CBool(RecTcNo.State And adStateOpen) = True Then RecTcNo.Close: Set RecTcNo = Nothing
'___________________________
................
yukarıdaki kodlar ,le Kapalı dosyadaki TCK_NO sütunundaki verileri ComboBox85 nesnesine ekleyebiliyoruz. Ancak aynı nesnede görünümün TCK_NO, adı, soyadı olarak olması ancak combobox85.value sonucunun yine tck_no olması mümkün olur mu?


tıpkı aynı kitaptaki sayfalardan veri alındığı gbi.

'ComboBox6.ColumnCount = 3
'ComboBox6.ColumnWidths = "75;40;50"
'ComboBox6.ListRows = "5"
'ComboBox6.RowSource = "Bilgi_Girisi!b3: D" & Cells(65536, 2).End(xlUp).Row
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Set RecTcNo = New ADODB.Recordset bağlantısında comboboxa açıldığında görünütünün aşağıdaki gibi olaması imkansızmıdır.

36427275785 ahmet kara gibi.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kod:
.....................
'***************************
    SQLStr = "SELECT DISTINCT TCK_NO FROM [DATA$]"    'kynMHBRM dosyada ilgili satırlarda sorgu yap
    Dim RecTcNo As ADODB.Recordset:      Set RecTcNo = New ADODB.Recordset
    With RecTcNo
        .Open SQLStr, bagTCKMLK, adOpenKeyset, adLockOptimistic
        .MoveFirst:        ComboBox85.Clear
            For i = 1 To .RecordCount
               ComboBox85.AddItem .Fields("TCK_NO")
               .MoveNext
            Next i
        .MoveFirst:        ComboBox85.ListIndex = 0
        If CBool(.State And adStateOpen) = True Then .Close
    End With
    Set RecTcNo = Nothing
'___________________________
...................
çalışan kodlar bu ise

Kod:
.....................
'***************************
    SQLStr = "SELECT DISTINCT TCK_NO FROM [DATA$]"    'kynMHBRM dosyada ilgili satırlarda sorgu yap
    Dim RecTcNo As ADODB.Recordset:      Set RecTcNo = New ADODB.Recordset
    With RecTcNo
        .Open SQLStr, bagTCKMLK, adOpenKeyset, adLockOptimistic
        .MoveFirst:        ComboBox85.Clear
            For i = 1 To .RecordCount
[color="red"]               
combobox 85, 3 kolonlu olsun 

ComboBox85.1kolonu.AddItem .Fields("TCK_NO")  
ComboBox85.2kolonu.AddItem .Fields("ad")  
ComboBox85.3kolonu.AddItem .Fields("soyad")  
olsun

[/color]

               .MoveNext
            Next i
        .MoveFirst:        ComboBox85.ListIndex = 0
        If CBool(.State And adStateOpen) = True Then .Close
    End With
    Set RecTcNo = Nothing
'___________________________
...................
demek istiyorum

rowsource olayının kapalı dosya versiyonu ama nasıl
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Sorun çözüldü daha basiti varsa yardımlarınızı bekliyorum
açıklmaları yapıldı
Kod:
Private Sub USERFORM_TERMINATE()
On Error Resume Next
    If CBool(Baglanti.State And adStateOpen) = True Then Baglanti.Close: Set Baglanti = Nothing
    If CBool(BagULKE.State And adStateOpen) = True Then bagbagULKE.Close: Set BagULKE = Nothing
    If CBool(bagTCKMLK.State And adStateOpen) = True Then bagTCKMLK.Close: Set bagTCKMLK = Nothing
    If CBool(bagYKN.State And adStateOpen) = True Then bagYKN.Close: Set bagYKN = Nothing
End Sub
Private Sub UserForm_Initialize()
Call DegiskenTani
'Tanımlar
Dim i As Integer, SQLStr, SQLTcStr As String
'Değişkenler
OptionButton1.Value = 1: OptionButton3.Value = 1
 [color="red"] 
 With ComboBox85
     .ColumnCount = 3
     .ColumnWidths = "55;40;40"
     .ListRows = "10"
End With
 [/color] 
'Spreadsheet1.Sheets(2).Select
Spreadsheet1.Sheets(1).Select
    If Dir(kynMHBRM) = "" Then MsgBox kynMHBRM & " " & Chr(10) & " Dosyası Bulunamadı.", vbInformation, "Bilgi":         Exit Sub
    If Dir(kynULKE) = "" Then MsgBox kynULKE & " " & Chr(10) & " Dosyası Bulunamadı.", vbInformation, "Bilgi":           Exit Sub
    If Dir(kynTcKimNo) = "" Then MsgBox kynTcKimNo & " " & Chr(10) & " Dosyası Bulunamadı.", vbInformation, "Bilgi":     Exit Sub
    If Dir(kynYKN) = "" Then MsgBox kynYKN & " " & Chr(10) & " Dosyası Bulunamadı.", vbInformation, "Bilgi":             Exit Sub
'************************************************'bağlan>
'alt taraftan devam ediniz
Kod:
......................
    Set Baglanti = New ADODB.Connection
    Baglanti.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & kynMHBRM
    Set BagULKE = New ADODB.Connection
    BagULKE.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & kynULKE
    Set bagTCKMLK = New ADODB.Connection
    bagTCKMLK.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & kynTcKimNo
    Set bagYKN = New ADODB.Connection
    bagYKN.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & kynYKN
'************************************************'bitti<
    SQLStr = "SELECT DISTINCT il FROM [ilveilce$]"    'kynMHBRM dosyada ilgili sat&#305;rlarda sorgu yap
    Dim Kayit1 As ADODB.Recordset:      Set Kayit1 = New ADODB.Recordset
    With Kayit1
        .Open SQLStr, Baglanti, adOpenKeyset, adLockOptimistic
        .MoveFirst:        ComboBox4.Clear
            For i = 1 To .RecordCount
               ComboBox4.AddItem .Fields("il")
               .MoveNext
            Next i
        .MoveFirst:        ComboBox4.ListIndex = 27
        If CBool(.State And adStateOpen) = True Then .Close
    End With
    Set Kayit1 = Nothing
Kod:
'___________________________
'***************************
    SQLStr = "SELECT DISTINCT ADI FROM [DATA$]"    'kynMHBRM dosyada ilgili sat&#305;rlarda sorgu yap
    Dim RecUlke As ADODB.Recordset:      Set RecUlke = New ADODB.Recordset
    With RecUlke
        .Open SQLStr, BagULKE, adOpenKeyset, adLockOptimistic
        .MoveFirst:        ComboBox84.Clear
            For i = 1 To RecUlke.RecordCount
               ComboBox84.AddItem .Fields("ADI")
               .MoveNext
            Next i
        .MoveFirst:        ComboBox84.ListIndex = 0
        If CBool(.State And adStateOpen) = True Then .Close
    End With
    Set RecUlke = Nothing
Kod:
'___________________________
'***************************            'ADI, SOYADI
    '*Kaynak kitab&#305;n data sayfas&#305;nda TCK_NO s&#252;tununu ara [AltSat&#305;r]
    SQLStr = "SELECT DISTINCT TCK_NO FROM [DATA$]"
    '*Kaynak kitaptan al&#305;nacak veriler i&#231;in de&#287;i&#351;ken tan&#305;mla[AltSat&#305;r]
    Dim RecTcNo As ADODB.Recordset:      Set RecTcNo = New ADODB.Recordset         'Kay&#305;t de&#287;i&#351;keni tan&#305;mla ve set et
    '*Kaynak kitaptan al&#305;nan kimlik numaralr&#305; i&#231;in dizi tan&#305;mla[AltSat&#305;r]
    Dim arrTCK()
    '*Kaynak kitaptan verileri almak i&#231;in haz&#305;rl&#305;k yap[AltSat&#305;r]
        With RecTcNo
            '*ba&#287;lant&#305;y&#305; a&#231;, ilk kayda git[AltSat&#305;r]
            .Open SQLStr, bagTCKMLK, adOpenKeyset, adLockOptimistic:             .MoveFirst
          '*Combobox 85i temizle[AltSat&#305;r]
            ComboBox85.Clear
            '*Kay&#305;t (Kimlik no) say&#305;s&#305; kadar d&#246;ng&#252; ba&#351;lat[AltSat&#305;r]
            For i = 1 To .RecordCount
 [color="red"] 
                '*Mevcut kayd&#305; de&#287;i&#351;kene yaz[AltSat&#305;r]
                strTCK = .Fields("TCK_NO")
                '*Mevcut kayd&#305; Spread nesnesine yaz[AltSat&#305;r]
                Spreadsheet1.Sheets(2).Cells(i, 1) = strTCK
                '*Mevcut kayd&#305; combobox a ekle [AltSat&#305;r]
                ComboBox85.AddItem strTCK
                '*Mevcut kayd&#305; Dizye al[AltSat&#305;r]
                ReDim Preserve arrTCK(y):  arrTCK(y) = strTCK: y = y + 1
                '*Sonraki kayda ge&#231;[AltSat&#305;r]
                .MoveNext
            '*for i = 1 sat&#305;r&#305;na d&#246;n [AltSat&#305;r]
            Next i
            '*&#304;lk kayda git [AltSat&#305;r]
            .MoveFirst
            '*comboda ilk sat&#305;r&#305; se&#231; [AltSat&#305;r]
            'ComboBox85.ListIndex = 0
        '*Kay&#305;t Ba&#287;lant&#305;s&#305;n&#305; kapat [AltSat&#305;r]
        If CBool(.State And adStateOpen) = True Then .Close
    End With
    '*De&#287;i&#351;keni sil[AltSat&#305;r]
    Set RecTcNo = Nothing [/color]
Kod:
 [color="red"] 
'___________________________
''************************************************
'* kimlik no dizisinde (arrTCK) ki elaman say&#305;s&#305; 1 den fazla ise[AltSat&#305;r]
'*/* Not: Dizilerde sayma i&#351;lemi 0 dan ba&#351;lar yani UBound(arrTCK) = 0 ise dizimiz bir elemanl&#305;d&#305;r.
If UBound(arrTCK) >= 0 Then
    '*dizideki elaman say&#305;s&#305; kadar d&#246;ng&#252; kur.
    For tci = 0 To UBound(arrTCK)
    '*Kaynak kitaptan al&#305;nacak veriler i&#231;in de&#287;i&#351;ken tan&#305;mla[AltSat&#305;r]
    Dim RecTcN2 As ADODB.Recordset:      Set RecTcN2 = New ADODB.Recordset
    '*Verileri Sayfa yerine (kay&#305;t say&#305;s&#305; kadar sat&#305;r, 3 s&#252;tunlu) dizye alaca&#287;&#305;z, de&#287;i&#351;ken tan&#305;m&#305;
    Dim arrTMM()
    'Kaynak kitapta sorgulanacak ba&#351;l&#305;klar;
    basliklar = "TCK_NO, ADI, SOYADI"
    'Kaynak kitapta sorgulanacak sayfan&#305;nad&#305;$;
    sayfaadi = "[DATA$]"
    'Kaynak kitapta sorgulanacak S&#252;tun ba&#351;l&#305;&#287;&#305; ve aranacak de&#287;er
    sorgu = "TCK_NO = " & arrTCK(tci)
    'Kaynak kitapta sorgulanacak t&#252;m de&#287;erler
    SQLStr = "SELECT " & basliklar & " FROM " & sayfaadi & " WHERE " & sorgu
        ''kay&#305;t k&#305;saltmas&#305;n&#305; ba&#351;lat&#305;yoruz
        With RecTcN2
             '*ba&#287;lant&#305;y&#305; a&#231;, ilk kayda git[AltSat&#305;r]
            .Open SQLStr, bagTCKMLK, adOpenKeyset, adLockOptimistic
         '*Verileri Sayfa yerine (kay&#305;t say&#305;s&#305; kadar sat&#305;r, 3 s&#252;tunlu) diziye alaca&#287;&#305;z
         '*diziyi eski de&#287;erleri unutmayacak &#351;ekilde yeniden boyutland&#305;r&#305;yoruz.
            ReDim Preserve arrTMM(UBound(arrTCK), 2)
            'tci sat&#305;r&#305;, 1. s&#252;tuna arrTCK elaman&#305;n&#305; e&#351;itliyoruz
            arrTMM(tci, 0) = arrTCK(tci)
            'tci sat&#305;r&#305;, 2. s&#252;tuna bulunan Ad kayd&#305;n&#305; e&#351;itliyoruz
            arrTMM(tci, 1) = .Fields("ADI")
            'tci sat&#305;r&#305;, 2. s&#252;tuna bulunan SoyAd kayd&#305;n&#305; e&#351;itliyoruz
            arrTMM(tci, 2) = .Fields("SOYADI")
            'Sonraki Kayda gidiyoruz.
            .MoveNext
        'kay&#305;t k&#305;saltmas&#305;n&#305; bitiriyoruz
        End With
    'tci d&#246;ng&#252;s&#252;n&#252; 1 art&#305;r&#305;yoruz.
    Next tci
        ''kay&#305;t k&#305;saltmas&#305;n&#305; ba&#351;lat&#305;yoruz
        With RecTcN2
            'ilk kayda gidiyoruz
            .MoveFirst
            'ba&#287;lant&#305; a&#231;&#305;ksa kapat&#305;yoruz
            If CBool(.State And adStateOpen) = True Then .Close
        'kay&#305;t k&#305;saltmas&#305;n&#305; bitiriyoruz
        End With
    'kay&#305;t de&#287;i&#351;kenini VE kimlik dizi de&#287;i&#351;kenini siliyoruz
    Set RecTcN2 = Nothing: Erase arrTCK
End If
 [/color]
Kod:
 [color="red"] 

'___________________________
''************************************************
'ComboBox85 k&#305;saltmas&#305;n&#305; ba&#351;lat
With ComboBox85
    .Clear                                      'temizliyoruz
    For tci = 0 To UBound(arrTMM)               'tamam&#305; dizisindeki son elamana kadar d&#246;ng&#252; kuruyoruz
        .AddItem                                'Elaman ekleme i&#351;lemin ba&#351;lat&#305;yoruz
        'combo tci sat&#305;r&#305;, 1 s&#252;tununa tamam&#305; dizisindeki tci,0 elamanlar&#305;n&#305; e&#351;itliyoruz
        .List(tci, 0) = arrTMM(tci, 0)
        'combo tci sat&#305;r&#305;, 2 s&#252;tununa tamam&#305; dizisindeki tci,1 elamanlar&#305;n&#305; e&#351;itliyoruz
        .List(tci, 1) = arrTMM(tci, 1)
        'combo tci sat&#305;r&#305;, 3 s&#252;tununa tamam&#305; dizisindeki tci,2 elamanlar&#305;n&#305; e&#351;itliyoruz
        .List(tci, 2) = arrTMM(tci, 2)
        '*comboda ilk sat&#305;r&#305; se&#231; [AltSat&#305;r]
        .ListIndex = 0
    'tci de&#287;eri bir artarak  for tci sat&#305;r&#305;na gider
    Next tci
'ComboBox85 k&#305;saltmas&#305;n&#305; bitiriyoruz
End With
'tamam&#305; (kimlik, ad, soyad) dizi de&#287;i&#351;kenini siliyoruz
Erase arrTMM  [/color]  
'___________________________
''************************************************
'******************ba&#287;lant&#305;y&#305; kes
'/*/* di&#287;er nesneleri doldur
    arrCeptelKod = Array(505, 506, 530, 532, 533, 534, 535, 536, 537, 538, 542, 543, 544, 546, 547, 555, 556)
    For i = 0 To UBound(arrCeptelKod)
        ComboBox80.AddItem arrCeptelKod(i)
        ComboBox81.AddItem arrCeptelKod(i)
    Next
'MsgBox "deneme " & Spreadsheet1.Sheets(2).Cells(2, 1)
End Sub
 
Son düzenleme:
Üst