Sayın benremix destekleriniz için ben teşekkür ederim.
Sayın aliozde; Kaldığımız yerden devam ediyorum.
Artık açılan kutumuz çalışmaya hazır. Form çalılşınca sınıflar dosyamızdaki kayıtlar geliyor. Şimdi sıra geldi seçilen sınıftaki öğrencileri listelemeye.
Formumuza bir liste kutusu ekliyoruz ve adını ogrliste yapıyoruz.
Listemizin istediğimiz kayıtları vermesi için açılan kutumuzda seçim yaptıktan sonra gelmesi lazım. O zaman ogrliste yi doldurma kodlarını açılan kutunun tıklanması olayına yazıyoruz.
Kod:
Private Sub sinifkutu_Click()
secilen = sinifkutu.Column(1)
ogrencigetir
End Sub
Üzerine tıklayınca secilen adını verdiğimiz metin kutusuna seçim yaptığımız sınıfın değerini atıyoruz. Açılan kutumuzda iki sütunumuz vardı. 1.sütun (gizlediğimiz): sınıf kaydının id'si (record no'su- otomatik sıra nosu-Kimliği-kayıt nosu), 2.sütun sınıfın adı idi.
açılankutu.column ifadesi (bizim örneğimizde sinifkutu) bize seçildiği anda hangi sütundaki bilgiyi kullanma imkanı verir.
Burada
Column numaraları 0 dan başlar. Yani sinifkutu.column(0) ifadesi 1.sütunu, sinifkutu.column(1) ifadesi 2. sütunu verir.
Seçim yaptıktan sonra ogrencigetir adlı bir yordama gönderiyoruz. Listemizi bu yordamda dolduracağız.
Kod:
Private Sub ogrencigetir()
ogrliste.RowSourceType = "Table/query"
ogrliste.RowSource = "SELECT T_OGRENCI.[ogr_id], T_OGRENCI.[adisoyadi]" _
& " FROM T_SINIF INNER JOIN T_OGRENCI ON T_SINIF.snf_id = T_OGRENCI.sinifno " _
& " WHERE (((T_OGRENCI.sinifno)=[FORMS]![FORM1]![sinifkutu]))"
End Sub
.rowSourceType ifadesi o liste kutusunun satır kaynağının ne tür olduğunu belirtir. Biz tablo veya sorgu seçtik. Başka değerlerde olabilr. Yani programcı bir tablo veya sorguya başvurmadan değerler atayabilir(genelde sabit değerler için). Hemen aklıma gelen örnek haftanın günleri olabilir mesela.
.rowsource ifadesi satır kaynağını gösterir.
Burada biz
Sql dilinden faydalanıyoruz.
Açıklamaya çalışırsak " T_OGRENCI tablosundan ogr.id ve adisoyadi alanlarını seç. Ama bunları seçerken T_SINIF tablosuyla T_OGRENCI tablosu arasında ilişki kur. Bu ilişki T_SINIF tablosunun snf_id alanı ile T_OGRENCI tablosunun sinifno arasında olacak. Tüm bunları şu şartla yap diyoruz. O şart ne ?(veya kriter) WHERE ifadesinden sonra yazdığımız öğrenci tablosundaki sinifno alanı ile Forumda tıklayınca seçtiğimiz sinifkutu değeri eşit olacak. Eşit olmazsa listeleme demek. Öğrenci seçtiğimiz sınıfa ait değilse ona ait kayıt listeye alınmaz.
Şimdi ilişkinin nasıl olduğunu görelim.
Şimdilik bu kadar. Yine devam edeceğim. Saygılarımla kolay gelsin.
Hayri16, 12-11-2009 tarihinden beri AccessTr.neT üyesidir.