Arama butonu
Bu konudaki kullanıcılar: 1 misafir
16
Cevap
521
Tıklama
0
Öne Çıkarma
C# Veritabanı Aritmetik İşlem
E
8 yıl
Çavuş
Konu Sahibi

Merhabalar. Şuan C# üzerinden baist bir transkript sistem hazırlıyorum. Mysql Veritabanı kullanıyorum. Ders kayıtlarını, harf notlarını, ders saatlerini girdirip; veritabanına kaydını yapıyorum ve bunu da datagridview ie listeleyebiliyorum, bu konuda bir sıkıntım yok. Fakat dönemlik ve genel net ortalamasını hesaplatamadım. Yani Datagridview üzerinden mi yoksa veritabanından mı yapmalıyım ? Veya en önemlisi nasıl yapabilirim ? Teşekkür ediyorum.



S
8 yıl
Binbaşı

Datagridde hücreleri okuyup integer çevirerek matematiksel işlem yapabilirsin.

Datagridde satır ve sütun numaraları sıfırdan başlar...

int ilksayi;

ilksayi = Convert.ToInt32(dataGridView1.Rows[0].Cells[0].Value.ToString()); // Rows[0] 1. Satır Celss[0] 1. Sütundaki değeri okur...

Değişkene atmadanda işlemi gerçekleştirebilirsin.

Sonucu bulduktan sonra istediğin hücreye şu şekilde yazdırabilirsin..

dataGridView1.Rows[0].Cells[2].Value = sonuc.ToString(); // Rows[0] 1. Satır Celss[2] 3. Sütundaki hücreye yazar...


Yukarıyı başka siteden alıntıladım

Döngü ilede tüm tabloyu okuyarak hesaplatırsınız hocam.


Bu mesaja 1 cevap geldi.
E
8 yıl
Çavuş
Konu Sahibi

quote:

Orijinalden alıntı: Mr.DarkGreen

Datagridde hücreleri okuyup integer çevirerek matematiksel işlem yapabilirsin.

Datagridde satır ve sütun numaraları sıfırdan başlar...

int ilksayi;

ilksayi = Convert.ToInt32(dataGridView1.Rows[0].Cells[0].Value.ToString()); // Rows[0] 1. Satır Celss[0] 1. Sütundaki değeri okur...

Değişkene atmadanda işlemi gerçekleştirebilirsin.

Sonucu bulduktan sonra istediğin hücreye şu şekilde yazdırabilirsin..

dataGridView1.Rows[0].Cells[2].Value = sonuc.ToString(); // Rows[0] 1. Satır Celss[2] 3. Sütundaki hücreye yazar...


Yukarıyı başka siteden alıntıladım

Döngü ilede tüm tabloyu okuyarak hesaplatırsınız hocam.

Çok teşekkür ediyorum Hocam. Bunu denemiştim ama galiba bir yerde yanlışlık yapmışım.Tekrar deneyeceğim. Tekrar teşekkür ediyorum :)


Bu mesaja 1 cevap geldi.
E
8 yıl
Çavuş
Konu Sahibi

Denedim ama bir türlü beceremedim. Kodları şu şekilde düzenledim ama sonuç alamadım. Acaba nerede hata yapıyorum ?

 int ilksayi, ikincisayi; 
int sonuc = 0, carpim = 0, satop=0;

for (int i = 0; i <= dataGridView1.Rows.Count; i++)
{
ilksayi = Convert.ToInt32(dataGridView1.Rows[i].Cells[1].Value.ToString()); // Rows[0] 1. Satır Celss[0] 1. Sütundaki değeri okur...
ikincisayi = int.Parse(dataGridView1.Rows[i].Cells[3].Value.ToString());
carpim += (ilksayi * ikincisayi);
satop = Convert.ToInt32(dataGridView1.CurrentRow.Cells[1].Value.ToString());

sonuc = carpim / satop;
textBox1.Text = Convert.ToString(sonuc);
}


Bu mesaja 1 cevap geldi.
G
8 yıl
Yarbay

resimle göster bakayım bir de for ile döndürme yapmışsın ama içeride i hiç kullanılmamış cells i şeklinde olması lazım





< Bu mesaj bu kişi tarafından değiştirildi Gökşen PASLI -- 3 Temmuz 2016; 14:04:41 >
Bu mesaja 1 cevap geldi.
C
8 yıl
Yüzbaşı

Aynen yukarıdaki arkadaş haklı , içerde i kullanmamışsın


Bu mesaja 1 cevap geldi.
E
8 yıl
Çavuş
Konu Sahibi

evet haklısınız. Baya bi değişik yöntenler denedimde. Yanlış kodu yazmışım oraya. :) Azıcık geç yazıyorum ama pek giremedim nete o kısmı düzelttim. Ama bu sefer datagridview'den tabloyu açınca programı durduruyor.

     int ilksayi, ikincisayi; 
int sonuc = 0, carpim = 0, satop=0;

for (int i = 0; i <= dataGridView1.Rows.Count; i++)
{
ilksayi = Convert.ToInt32(dataGridView1.Rows[i].Cells[1].Value.ToString()); // Rows[0] 1. Satır Celss[0] 1. Sütundaki değeri okur...
ikincisayi = int.Parse(dataGridView1.Rows[i].Cells[3].Value.ToString());
carpim += (ilksayi * ikincisayi);
satop = Convert.ToInt32(dataGridView1.CurrentRow.Cells[1].Value.ToString());

sonuc = carpim / satop;
textBox1.Text = Convert.ToString(sonuc);
}


Bu hatanın resmi :

< Resime gitmek için tıklayın >
< Resime gitmek için tıklayın >


Bu da hata veren ksısım üstten dönem seçince atıyor.
< Resime gitmek için tıklayın >
< Resime gitmek için tıklayın >

birde unutmadan i siz şekilde hesaplatınca yani birinci ve 3. sütun işlem yaptırınca sadece ilk staırları yapıyor. Gerisini yaptıramadım. :)

-----------------------------------------------------

Ayrıca isterseniz programıda atabilirim.
< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi emirhan23 -- 9 Temmuz 2016; 13:22:31 >
Bu mesaja 1 cevap geldi.
G
8 yıl
Yarbay

projeyi atsana bi bana sanki bir hücre fazladan okunuyor gibi geldi


Bu mesaja 1 cevap geldi.
E
8 yıl
Çavuş
Konu Sahibi

quote:

Orijinalden alıntı: Gökşen PASLI

projeyi atsana bi bana sanki bir hücre fazladan okunuyor gibi geldi

Buyrun Hocam.

https://app.box.com/s/k2sqrwjadcm30rm9iz14a5u1tfswaerc


Bu mesaja 1 cevap geldi.
G
8 yıl
Yarbay

mysql kullanmışsın ayrıca veritabanıda göndermedin bende mysql de yok o yüzden tam bakamadım ama o datagridi doldurup resimini atsana bi


for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
şeklinde dene
datagriddekaç sıra var resimden analşılır


Bu mesaja 1 cevap geldi.
C
8 yıl
Yüzbaşı

quote:

Orijinalden alıntı: Gökşen PASLI

mysql kullanmışsın ayrıca veritabanıda göndermedin bende mysql de yok o yüzden tam bakamadım ama o datagridi doldurup resimini atsana bi


for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
şeklinde dene
datagriddekaç sıra var resimden analşılır



-1 koymadan yaparsa sanki daha mantıklı oluyor.yani şu şekilde dene bakalım çalışacakmı

for (int i = 0; i < dataGridView1.Rows.Count; i++)




Eğer senin yaptığın gibi
for (int i = 0; i <= dataGridView1.Rows.Count; i++)
böyle yaparsan , diyelim row sayısı sıfırmış , böyle olunca ne oldu , i < = 0 durumunu sağladığı için girecek yani null alana erişmeye çalışacaksın.





< Bu mesaj bu kişi tarafından değiştirildi cezaalp -- 11 Temmuz 2016; 20:39:27 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Gökşen PASLI
G
8 yıl
Yarbay

işte veritabanı vs olmadığı için mecbur deneme yoluyla olacak yada veriyle doldurup resmini de gösterse bakacaktım muhtemelen olmayan bir hücreye erişim yaptığı için oluyordur onu kendisi bulur herhalde


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @cezaalp
E
8 yıl
Çavuş
Konu Sahibi

Yorumlarınız için çok teşkkür ediyorum. Evet veritabanı için kusura bakmayın, onu unutmuşum :)
@cezaalp dediğiniz şekilde denedim fakat yine aynı hatayı verdi. Şimdi hem resimleri hem de veritabanını atayım.

< Resime gitmek için tıklayın >

Veritabanıda burada.

https://app.box.com/s/arj1zyq5uqe4iog25vr5srgbgqdby1li

Bir türlü çözemedim gitti.


Bu mesaja 1 cevap geldi.
G
8 yıl
Yarbay

for (int i = 0; i < dataGridView1.Rows.Count-1; i++) baktın mı birde

satop = Convert.ToInt32(dataGridView1.CurrentRow.Cells[1].Value.ToString());
kısmını anlamadım seçili olan satırın birinci hücresine bölmeyi anlamadım


Bu mesaja 1 cevap geldi.
E
8 yıl
Çavuş
Konu Sahibi

quote:

Orijinalden alıntı: Gökşen PASLI

for (int i = 0; i < dataGridView1.Rows.Count-1; i++) baktın mı birde

satop = Convert.ToInt32(dataGridView1.CurrentRow.Cells[1].Value.ToString());
kısmını anlamadım seçili olan satırın birinci hücresine bölmeyi anlamadım

Evet Hocam onuda denedim. O işlem şöyle; gano hesaplarken ders saati ile harfnotu katsayısını çarptırıyorum bütün derslerin hepsini toplatıp, toplam ders saatine böldürmekti amacım. Ama beceremedim. Bende farklı bir yol deneyeceğim. DErs Girdiğim kısma ders sayısı kadar textbox açtırıp kullanıcıya tüm derslerini girdireceğim. Textboxlar üzerinden hesaplatıp, sonradan kayıt etmek isterse veritabanına kayıt ettireceğim. Sizce nasıl olur ?


Bu mesaja 1 cevap geldi.
G
8 yıl
Yarbay

öyle de olur da ilk kodun niye çalışmadığını anlamadım yani ben kendim gridi doldurup hesaplama yaptırdım bir hata vermedi neyse


Bu mesaja 1 cevap geldi.
E
8 yıl
Çavuş
Konu Sahibi

quote:

Orijinalden alıntı: Gökşen PASLI

öyle de olur da ilk kodun niye çalışmadığını anlamadım yani ben kendim gridi doldurup hesaplama yaptırdım bir hata vermedi neyse

Baya gizemli oldu gerçekten. İlginiz için çok teşekkür ediyorum.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.