Skip to main content

AccessTr.neT


Bağlantılı açılan Kutu

Bağlantılı açılan Kutu

Çözüldü #13
Sayın aliozde;
Dükkanı kapatmak zorunda olduğum için gerisini yarın yazacağım. Kodlarla ilgili ise;
Kodlar vb denilen visual basic dilinin çok maz değişikliğe uğramış versiyonu. Ayrıntılı bilgi için forumumuzda
1-Visual basic 6.0 kitabı
2-Kodların Türkçe karşılıkları
konularına bir göz gezdirin.
Teşekkürler, kolay gelsin.
Hayri16, 12-11-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
Çözüldü #14
Sn Hayri katkılarınızdan dolayı teşekkürler. Saygılar....
Bilgi paylaşıldıkça çoğalır....
Her engel, yaşam koşullarınızı daha iyileştirecek bir fırsattır.


Access için her zaman lazım olacak konu başlıkları listesi


Cevapla
Çözüldü #15
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.
[Resim: iliski1.jpg]
Şimdilik bu kadar. Yine devam edeceğim. Saygılarımla kolay gelsin.
Hayri16, 12-11-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
Çözüldü #16
Hocam teşekkür ederim.
Cevapla
Çözüldü #17
Önemli Bir Ayrıntı daha var hocam öğrencileri seçip bilgilerini girip kaydettikten sonra aynı öğrenci üzerine gelindiğinde daha önce kaydettiğim veri açıklama bölümünde çıkmıyor!
Cevapla
Çözüldü #18
Tamam bakıyorum Sayın aliozde
Sayın aliozde birlikte mantık yürütelim mi?
Şimdi biz ne istiyoruz? Sınıflar listelendikten sonra öğrenci kutumuzda öğrenciyi seçtiğimizde eğer onun açıklama bilgisi varsa gelsin istiyoruz.
O halde kod yazacağımız yer aşağıdaki yordam.

Private Sub ogrliste_Click()
Metin12 = secilen
Metin14 = ogrliste.Column(1)


Metin10.SetFocus
End Sub
Burada yeni bir fonksiyon kullanacağız.
DLookup Fonksiyonu. Hakkında formumuzda Sayın tdsharun tarafından çok net açıklayıcı bilgi var.İncelemek için tıkla.

DLookup("Alan Adı", "Tablo veya Sorgu Adı", "Kriter=n")
Bu fonksiyonun bizim kullanacağımız yapısı.
Açıklayarak gidelim;
DLookup("Getirmek istediğimiz alan","Bu alan hangi tabloda","Getireceğimiz kaydı diğer kayıtlardan farklı kılacak bir kriter")
DLookup("aciklama","T_OGRENCI","ogr_id=Forms!Form1!ogrliste")
Bu fonksiyon bize ogrliste den seçtiğimiz öğrencini açıklama kaydını getirir. Nereye yazıyoruz.Metin10 alanına.
Metin10 = Dlookup ("aciklama", "T_OGRENCI", "ogr_id=Forms!Form1!ogrliste")
Kodumuzun tamamı:
Kod:
Private Sub ogrliste_Click()
Metin12 = secilen
Metin14 = ogrliste.Column(1)
Metin10 = DLookup("aciklama", "T_OGRENCI", "ogr_id=Forms!Form1!ogrliste")
Metin10.SetFocus
End Sub

Kolay gelsin
Hayri16, 12-11-2009 tarihinden beri AccessTr.neT üyesidir.
Son Düzenleme: 22/02/2010, 14:30, Düzenleyen: Hayri16.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task