C# Ödeme Tablosu Oluşturma
-
Merhaba arkadaşlar,
Bir C# projesi yapıyorum. Şimdi bu projemde TBL_Ogrenci ve TBL_Odeme diye iki tabloyla işlem yapıcam. İki C# formum var. Birincisi Odeme Tablosu ikincisi Ogrenci Tablosu şeklinde. Şimdi asıl yapmak istediğim olay ödeme formuyla alakalı. Ödeme tablosunda ödeme yapan her öğrenci için ödeme gireceğim. Haliyle öğrencilerin isimleri veritabanında TBL_Ogrenci tablosunda. Ödemeleri TBL_Odeme tablosuna kaydediyorum. Odeme tablosunda ayrıca ödeme girdiğim ekrandan bağımsız olarak ay ve yıl seçtiğim iki adet combobox var. Seçtiğim ayda ve yılda ödeyenleri datagridview1 de gösteriyorum. Ancak formda birde Ödeme yapmayanları göster butonu var. Seçtiğim ayda ve yılda ödemeyenleri de datagridview1 de göstermek istiyorum. Nasıl bir yol izlemem gerekir? Yardımcı olabilecek arkadaşlara şimdiden teşekkürler.
-
Hocam gösteren SQL sorgusunun where koşulunu negatif yapman lazım. Yani where koşulunda OgrenciID=OgrenciID ise OgrenciID!=OgrenciID yaparsan sorununa çare olur diye düşünüyorum
-
@Yazilimci hocam sql sorgum şu şekilde "SELECT TBL_Odeme.ogrenci_ad, TBL_Odeme.ogrenci_soyad,TBL_Odeme.tutar FROM TBL_Ogrenci,TBL_Odeme WHERE TBL_Ogrenci.ogrenci_id=TBL_Odeme.ogrenci_id" burada != yaptığımda hata alıyorum. sql sorgusu hatalı zaten de ne şekilde düzelteceğim bilemedim.
-
@Jigsaw hocam özel mesaj gönderdim.
-
negatif yapma ne la :)
inner join kullanıyorsun. diğer join türlerinide öğren. kullanmak gereken left join
http://hrzafer.com/sql-18-join-turleri
http://www.ahmetkaymaz.com/2009/11/10/sql-server-join-inner-left-right-cross/
-
Tekrar merhaba arkadaşlar,
Sorun @Yazilimci arkadaşımın yardımlarıyla çözüldü. Çözümü de paylaşayım,
Ay ve yıl bazında ödemeleri gördüğüm tablo;
tablo.Clear(); baglanti.Open(); OleDbDataAdapter adtr = new OleDbDataAdapter("select * from TBL_Ogrenci a where a.ogrenci_id in (select ogrenci_id from TBL_Odeme where odeme_ay='" + cmbbox_secilenay.Text + "' and odeme_yil=" + Convert.ToInt32(cmbbox_secilenyil.Text) + ")", baglanti); adtr.Fill(tablo); dataGridView1.DataSource = tablo; int total = dataGridView1.Rows.Count; total--; label2.Text = "Toplamda "+total+" adet ödeme yapılmış."; adtr.Dispose(); baglanti.Close();
Ay ve yıl bazında ödenmemişleri gördüğüm tablo,
tablo.Clear(); baglanti.Open(); OleDbDataAdapter adtr2 = new OleDbDataAdapter("select * from TBL_Ogrenci a where a.ogrenci_id not in (select ogrenci_id from TBL_Odeme where odeme_ay='" + cmbbox_secilenay.Text + "' and odeme_yil=" + Convert.ToInt32(cmbbox_secilenyil.Text) + ")", baglanti); adtr2.Fill(tablo); dataGridView1.DataSource = tablo; adtr2.Dispose(); baglanti.Close();
@Yazilimci arkadaşıma tekrar teşekkür ediyorum. Herkese iyi günler dilerim.