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
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
.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.