[Yardım]  İlişkili combobox

Açılır liste kutusu.

İlişkili combobox

İleti#1)  Süleyman SAVAŞ » 28 Haz 2019 14:27

Merhaba arkadaşlar.
Userform üzerinde bulunan Combobox1 e access veritabanındaki veriler isimli tablonun baskanlik verisini tekrarsız olarak alıyorum.
Combobox1'de seçilen veri ile ilişkili olan birim verisini de Combobox2 ye almak, Combobox2 deki veri ile ilişkili olan alt_birim verisini de Combobox3 de görmek için yardımlarınıza ihtiyacım var.
Zamanı müsait olan arkadaşların ilgisini rica ediyorum.
Kod: Tümünü seç
Private Sub listeye_al()

With Me.ListView1
  .Gridlines = True
  .FullRowSelect = True
  .View = lvwReport
  .ListItems.Clear
  .ColumnHeaders.Clear

End With
With ListView1
.View = lvwReport
.ColumnHeaders.Add , , "KIMLIK", 0, lvwColumnLeft
.ColumnHeaders.Add , , "Adı Soyadı", 100, lvwColumnLeft
.ColumnHeaders.Add , , "T.C. Kimlik", 100, lvwColumnLeft
.ColumnHeaders.Add , , "Ünvanı", 100, lvwColumnLeft
.ColumnHeaders.Add , , "Başkanlığı", 200, lvwColumnLeft
.ColumnHeaders.Add , , "Birimi", 150, lvwColumnLeft
.ColumnHeaders.Add , , "Alt Birimi", 100, lvwColumnLeft

.FullRowSelect = True
.Gridlines = True
End With

   
On Error Resume Next
Set baglan = CreateObject("adodb.connection")
Set rs = CreateObject("adodb.recordset")

Call BAGLANTI

   rs.Open "select KIMLIK,adi_soyadi,tc_kimlikno,unvani,baskanlik,birim,alt_birim from [personel]", baglan, 1, 1
      ListView1.ListItems.Clear
Dim satir As Integer
    On Error Resume Next
    If Not rs.EOF Then
        Do While Not rs.EOF
Set evn = ListView1.ListItems.Add(, , rs.fields("KIMLIK"))
evn.SubItems(1) = rs.fields("adi_soyadi")
evn.SubItems(2) = rs.fields("tc_kimlikno")
evn.SubItems(3) = rs.fields("unvani")
evn.SubItems(4) = rs.fields("baskanlik")
evn.SubItems(5) = rs.fields("birim")
evn.SubItems(6) = rs.fields("alt_birim")
 
  rs.MoveNext
                   
        Loop
    End If
    rs.Close: con.Close
    Set rs = Nothing

ComboBox1.Column = baglan.Execute("select distinct [baskanlik]  from [veriler]").GetRows
Label70.Caption = "Kayıtlı Personel Sayısı= " & ListView1.ListItems.Count
End Sub

Resim
Resim
Kullanıcı avatarı
Süleyman SAVAŞ
Siteye Alışmış
 
Adı Soyadı:Süleyman Savaş
Kayıt: 05 May 2009 12:05
Konum: Bursa
Meslek: 657
Yaş: 47
İleti: 444
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Bursa/Gemlik

Cevap: İlişkili combobox

İleti#2)  eneSene » 07 Eyl 2019 19:29

Merhabalar,
Çözüm bulabildiniz mi?
Benim de benzer bir çözüme ihtiyacım var. Combobox1 deki seçilen veriye göre Combobox2 içeriği değişecek.
Kullanıcı avatarı
eneSene
 
Adı Soyadı:Yasin Yiğit
Kayıt: 15 Kas 2008 13:57
İleti: 3
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Sakarya

Cevap: İlişkili combobox

İleti#3)  feraz » 08 Eyl 2019 09:56

Kullanıcı avatarı
feraz
Site Dostu
 
Kayıt: 19 May 2014 17:36
Konum: Almanya
Meslek: İşçi
Yaş: 40
İleti: 5991
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Aksaray

Cevap: İlişkili combobox

İleti#4)  feraz » 08 Eyl 2019 19:51

Merhaba.Birde elimde olan dosyaları ekleyeyim kendinize uyarlayın.
Access dosyaları içinde bulunuyor kodlar.

Kodlar-1
Kod: Tümünü seç
Option Compare Database

Private Sub Form_Load()
    cmbAy.RowSource = "select distinct [Ay] from XXX order by [Ay]"
    cmbYil.RowSource = "select distinct [Yil] from XXX order by [Yil]"
    cmbaciklama1.RowSource = "select distinct [AÇIKLAMA-1] from XXX order by [AÇIKLAMA-1]"
End Sub

Private Sub cmbAy_AfterUpdate()
    If cmbAy <> "" And cmbYil <> "" Then
       cmbYil.RowSource = "select  distinct [Yil] from XXX where [Ay]= cmbAy group by [Yil] "
    Else
       cmbYil.RowSource = "select distinct [Yil] from XXX order by [Yil]"
    End If
End Sub
Private Sub cmbYil_AfterUpdate()
    If cmbAy <> "" And cmbYil <> "" Then
       cmbaciklama1.RowSource = "select distinct [AÇIKLAMA-1] from XXX where [Yil]= cmbYil  order by [AÇIKLAMA-1]"
    Else
      cmbaciklama1.RowSource = "select distinct [AÇIKLAMA-1] from XXX order by [AÇIKLAMA-1]"
    End If
End Sub


Kodlar-2

Kod: Tümünü seç
Option Compare Database
Dim Gordum(3) As String

Private Sub acl_kitapcik_AfterUpdate()
Call Kontrol
End Sub

Private Sub acl_sinavsalonu_AfterUpdate()
Call Kontrol
End Sub

Private Sub acl_sinifi_AfterUpdate()
Call Kontrol
End Sub

Private Sub acl_subesi_AfterUpdate()
Call Kontrol
End Sub

Sub Kontrol()
On Error GoTo HATA
Dim Kontrol As Control, Suzgec, Sutun As String, SrgHzr As Variant, Sw As Long
SrgHzr = Array("sinavsalonu", "sinifi", "subesi", "kitapcik")
For Each Kontrol In Me.Controls
If Kontrol.Properties("ControlType") = 111 Then
If Kontrol.Tag = "BosDolu" And Len(Me.Controls(Kontrol.Name)) > 0 Then Suzgec = Suzgec & "[" & Mid(Kontrol.Name, 5, Len(Kontrol.Name)) & "]='" & Nz(Kontrol, "") & "' And "
End If
Next Kontrol
     Dim AlanBosKnt As String
     If Len(Suzgec) = 0 Then AlanBosKnt = "" Else AlanBosKnt = IIf(IsError(Mid(Suzgec, 1, Len(Suzgec) - 5)), "", Mid(Suzgec, 1, Len(Suzgec) - 5))
For Sw = 0 To 3
     If Me.Controls("acl_" & SrgHzr(Sw)).Properties("ControlType") = 111 And Sw <= 3 Then
        Me.Controls("acl_" & SrgHzr(Sw)).RowSource = "select distinct[" & SrgHzr(Sw) & "] from ogrenci Where Not IsNull([" & SrgHzr(Sw) & "])" & IIf(Len(AlanBosKnt) > 0, " And " & AlanBosKnt, Null) & " Order By " & SrgHzr(Sw)
        Me.Controls("acl_" & SrgHzr(Sw)).Requery
        Me.Controls("acl_" & SrgHzr(Sw)).Enabled = IIf(Me.Controls("acl_" & SrgHzr(Sw)).ListCount >= 1, True, False)
   Gordum(Sw) = Mid(Me.Controls("acl_" & SrgHzr(Sw)).RowSource, 1, InStr(1, Me.Controls("acl_" & SrgHzr(Sw)).RowSource, "Where") - 1)
     End If
Next Sw
'If AlanBosKnt <> "" Then
'    Me.Filter = IIf(IsError(Mid(Suzgec, 1, Len(Suzgec) - 5)), "", Mid(Suzgec, 1, Len(Suzgec) - 5))
'Else
'    Me.Filter = ""
'End If
'Me.FilterOn = True
'Exit Sub
HATA:
'Me.Filter = ""
'Me.FilterOn = True
End Sub



Private Sub Temiz_Click()
Dim i As Long
For Each KontrolX In Me.Controls
    If KontrolX.Tag = "BosDolu" Then
    If Gordum(i) = "" Then Gordum(i) = "select distinct[" & Mid(KontrolX.Name, 5, Len(KontrolX.Name)) & "] from ogrenci Where Not IsNull([" & Mid(KontrolX.Name, 5, Len(KontrolX.Name)) & "])"
        If KontrolX.Properties("ControlType") = 111 And i <= 3 Then Me.Controls(KontrolX.Name).RowSource = Gordum(i)
        Me.Controls(KontrolX.Name).Requery
        Me.Controls(KontrolX.Name).Enabled = IIf(Me.Controls(KontrolX.Name).ListCount >= 1, True, False)
        Me.Controls(KontrolX.Name) = ""
    i = i + 1
    End If
Next KontrolX
'Me.Filter = ""
'Me.FilterOn = True
End Sub
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
feraz
Site Dostu
 
Kayıt: 19 May 2014 17:36
Konum: Almanya
Meslek: İşçi
Yaş: 40
İleti: 5991
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Aksaray

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Forum ComboBox

Online Kullanıcılar

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 1 misafir

Bumerang - Yazarkafe