C# Forms bakiye ekleme sistemi nasıl yapılır?

waleran

Picopat
Katılım
10 Ağustos 2023
Mesajlar
109
Merhaba C# forms ve SQL ile bir proje yapıyorum okul için. Proje de karta bakiye ekleme sistemi var fakat bir türlü beceremedim bunu nasıl yapabilirim? Şu anki kod bu şekilde.

C#:
string sorgu = "update kart set bakiye = bakiye + @bakiye where kart_no = @kart_no";
 SqlCommand komut = new SqlCommand(sorgu, baglanti);
 komut.Parameters.AddWithValue("@kart_no", Convert.ToInt32(txtKartNo.Text));
 komut.Parameters.AddWithValue("@bakiye", Convert.ToDecimal(txtBakiye.Text));
 baglanti.Open();
 komut.ExecuteNonQuery();
 MessageBox.Show("Bakiyeniz Başarıyla Yüklendi!", "Bakiye", MessageBoxButtons.OK, MessageBoxIcon.Information);
 txtBakiye.Clear();
 baglanti.Close();

1716234574572.png


1716234673388.png
 
Null'a izin vermemen lazım. Default Value 0 olmalı. Bakiye null olmaz.
Eki Görüntüle 2200725

Çevirisi:
NULL konsepti:
Eğer null ile herhangi bir aritmetik operasyon uygularsak, sonuç her zaman null olacaktır.

Hocam pek anlamıyorum ama yardımcı olabilir misiniz? Bunu nasıl yapabilirim sabahtan beri cebelleşiyorum doğru düzgün kaynak bulamadım.
 
Hocam pek anlamıyorum ama yardımcı olabilir misiniz? Bunu nasıl yapabilirim sabahtan beri cebelleşiyorum doğru düzgün kaynak bulamadım.
Normalde araştırman taraftarıyım, bu kaynakları kendin bul isterim ama şimdilik sana İngilizce düzgün kaynak vereceğim. Programlama için İngilizce şart, gelecekte bunun üzerine odaklan derim.


Yukarıdaki ikisini kullanarak öğrenebilirsin anlattığım şeyi. Haricinde google'da "mssql how to set a default value for an existing column" diye aratırsan yukarıdaki ikisinin birleşmiş halde kullanımını bulabilirsin. Kendi tablon için düzenlersin sorguyu. Daha da yapamazsan söyle, anlatayım.
 
Normalde araştırman taraftarıyım, bu kaynakları kendin bul isterim ama şimdilik sana İngilizce düzgün kaynak vereceğim. Programlama için İngilizce şart, gelecekte bunun üzerine odaklan derim.


Yukarıdaki ikisini kullanarak öğrenebilirsin anlattığım şeyi. Haricinde Google'da "MSSQL how to set a default Value for an existing column" diye aratırsan yukarıdaki ikisinin birleşmiş halde kullanımını bulabilirsin. Kendi tablon için düzenlersin sorguyu. Daha da yapamazsan söyle, anlatayım.

Hocam bunlardan hiçbir şey anlamadım sanırım sorun bende.
 
Hocam bunlardan hiçbir şey anlamadım sanırım sorun bende.
Temelde eksiğin olduğu anlamına geliyor. RDBMS öğrenmen lazım ekstra olarak. Fakat şimdilik ödevine yardımcı olması amacıyla anlatayım.

Öncelikle, her yeni kart eklediğinde sen şuan bakiyeyi NULL olarak ayarlıyorsun, dolayısıyla bakiye NULL olduğundan dolayı neyle toplarsan topla sayı yutuluyor ve NULL kalmaya devam ediyor. Bu durumu bir kaç farklı şekilde çözebilirsin.

Birincisi bundan sonra bakiye'de NULL'a izin vermezsin, ve default bir value set edersin, böylece o default value ile eklemiş olursun tabloya kartları, bu da 0 TL tabii ki. Bakiye yüklerken SQL sorgusu üzerinde aritmetik yürüttüğünde bu undefined behavior ile karşılaşmazsın.

İkincisi COALESCE kullanırsın güncellerken, örnek kullanımı Google'da var.

Üçüncüsü, C# tarafında önce bakiyeyi getirirsin eğer nullsa direkt eklenecek bakiyeyi yazarsın.

Daha farklı yöntemlerde var ancak bu üçü temel olarak fikir vermesi amacıyla yetmeli. Kod kısmını kendin halledersin muhtemelen.
 

Geri
Yukarı