C# Mantık Sorusu
-
Merhabalar arkadaşlar,
Bir kursun öğrencilerinin olduğu bir veritabanı var. Veritabanında kayıt tarihleri başlama tarihleri kayıt dondurma tarihleri vs var. Şimdi bu kursta eğitimler birebir özel ders şeklinde verildiği için ödemeler aylık alınıyor. 6 aylık kur vs tarzında değil.
Yapmaya çalıştığım şey; eğitmen bazlı bir sorguda başlama tarihinden itibaren benim seçmiş olduğum aya kadar eğerki kaydını dondurmamışsa; eğitmenin o ay ki öğrenci sayısını 1 arttırsın.
Örnek: Ahmet isimli öğrenci 01.01.2016 tarihinde başlamış olsun. Eğitmeninin adı da Mehmet olsun. Formumda 3 adet combobox var. Birinde eğitmenini seçiyorum Mehmet Yılmaz, diğerinde ay seçiyorum Haziran, diğerinde yılı seçiyorum 2016. Buraya kadar sorun yok. Bir de veritabanında kayıt dondurma tarihi alanı var. İstiyorum ki öğrencinin kaydı dondurulmamışsa VE baslama tarihi seçtiğim ay ve yıldan küçükse öğrenci sayısına eklesin. Ama kayıt dondurma tarihi ve baslama tarihi seçtiğim ay ve yıldan küçükse kayıt dondurulan tarihe kadar öğrenci sayısı göstersin (diyelim öğrencinin baslama tarihi Ocak 2016 , kayıt dondurma tarihi de Mart 2016 . Benim seçmiş olduğum tarih te Haziran 2016 olsun. Mart a kadar öğrenci sayısında göstersin. Mart tan sonrasına göstermesin) ..
Çok karışmış olabilir. Kusuruma bakmayın..
Mantıkta yardımcı olabilecek varsa süper olur..
Denemiş olduğum SQL kodu :
int ay= cmbbox_secilenay.SelectedIndex + 1; int yil= Convert.ToInt32(cmbbox_secilenyil.Text); var query2 = String.Format("select * from TBL_Ogrenci a where (a.secilen_ogretmen='" + cmb_ogretmensec2.Text + "') and (a.baslama_tarihi < CDATE('01/{0}/{1}') and (a.dondurtarih<CDATE('01/{0}/{1}'))) ", ay, yil);
-
okudukça kafam karıştı :) şunu net bir şekilde sade dille anlat çözelim
-
select * from TBL_Ogrenci
where (secilen_ogretmen='" + cmb_ogretmensec2.Text + "') -- Öğretmene uyanlar
and (DATEPART(YEAR,baslama_tarihi) < (CONVERT(INT, "+yil+") -- başlama tarihinin yıl kısmını alıp senin gönderdiğin yıldan küçük olanlar
AND (DATEPART(YEAR,dondurtarih) < (CONVERT(INT, "+yil+") -- dondurma tarihinin yıl kısmını alıp senin gönderdiğin yıldan küçük olanlar
AND (DATEPART(MONTH,baslama_tarihi) < (CONVERT(INT, "+ay+") -- başlama tarihinin ay kısmını alıp senin gönderdiğin yıldan küçük olanlar
AND (DATEPART(MONTH,dondurtarih) < (CONVERT(INT, "+ay+") -- dondurma tarihinin ay kısmını alıp senin gönderdiğin yıldan küçük olanlar
anladığım kadarıyla yapmaya çalıştığın buydu