C# veritabanına veri ekleme hatası

THE_YORULMAZZZ

Hectopat
Katılım
26 Şubat 2021
Mesajlar
330
Çözümler
4
C# projem var veri eklemek için butona bastığımda yapılan veri ekleme işlemi sonucunda eksik veri getiriyor. Veri ekleme kodlarım aşağıda eksik gelen veri " bakiye " verisi ilk tıklamada 0 ikinci tıklamada doğru veri geliyor ancak günde bir kez veri ekleme şartı olduğu için butona bir kez basılabiliyor o yüzden eksik veri alıyor ve bakiye sütununda 0 yazıyor;

C#:
 // Diğer Tablolarda İşlem Yaparak Sonucu Buraya Ekler.

 string Gelirquery = "SELECT SUM(Gelir_Tutari) FROM Gelir WHERE CAST(Tarih AS DATE) = CAST(GETDATE() AS DATE)";
 string Giderquery = "SELECT SUM(Gider_Tutari) FROM Gider WHERE CAST(Tarih AS DATE) = CAST(GETDATE() AS DATE)";
 string Bakiyequery = "UPDATE Kasa SET Bakiye = (SELECT SUM(Gelir.Gelir_Tutari) FROM Gelir WHERE CAST((Gelir.Tarih) AS DATE) = CAST(GETDATE() AS DATE)) - (SELECT SUM(Gider.Gider_Tutari) FROM Gider WHERE CAST((Gider.Tarih) AS DATE) = CAST(GETDATE() AS DATE))";
 string date = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

 private void btngunsonu_Click_1(object sender, EventArgs e)
 {
 // Tarih kontrol et.
 if (today != DateTime.Today)
 {
 // Tarih farklıysa, tıklama sayısı sıfırla.
 clickCount = 0;
 today = DateTime.Today;
 }

 // Tıklama sayısı kontrol et.
 if (clickCount < 1)
 {
 // Tıklama sayısı 1 den azsa, veri ekle.
 // veritabanına veri ekleme kodu.
 try.
 {
 conn.Open();

 SqlCommand cmd = new SqlCommand(Gelirquery, conn);
 SqlDataReader sdr = cmd.ExecuteReader();
 if (sdr.Read())
 {
 gelirtoplam = (int)Convert.ToDouble(sdr[0]);
 conn.Close();
 }
 sdr.Close();

 conn.Open();

 SqlCommand cmdd = new SqlCommand(Giderquery, conn);
 SqlDataReader sdr2 = cmdd.ExecuteReader();
 if (sdr2.Read())
 {
 gidertoplam = Convert.ToInt32(sdr2[0]);
 conn.Close();
 }
 sdr2.Close();

 conn.Open();

 SqlCommand cmddd = new SqlCommand(Bakiyequery, conn);
 SqlDataReader sdr3 = cmddd.ExecuteReader();
 if (sdr3.Read())
 {
 bakiyetoplam = Convert.ToInt32(sdr3[0]);
 conn.Close();
 }
 sdr3.Close();

 SqlCommand cmd1 = new SqlCommand();
 cmd1.Connection = conn;
 cmd1.CommandText = "INSERT INTO Kasa(Tarih,Gelir,Gider,Bakiye) VALUES (@Tarih, @Gelir, @Gider, @Bakiye)";
 cmd1.Parameters.AddWithValue("@Tarih", date);
 cmd1.Parameters.AddWithValue("@Gelir", gelirtoplam);
 cmd1.Parameters.AddWithValue("@Gider", gidertoplam);
 cmd1.Parameters.AddWithValue("@Bakiye", gelirtoplam - gidertoplam);
 cmd1.ExecuteNonQuery();
 dt.Clear();
 conn.Close();
 listele();
 }
 catch (Exception)
 {
 MessageBox.Show("Eksik Veri Var ! \nVerilerinizi Kontrol Edin ", "SİSTEM", MessageBoxButtons.OK, MessageBoxIcon.Error);
 }
 clickCount++;
 }
 else.
 {
 // Tıklama sayısı 1 den fazla ise, uyarı ver.
 MessageBox.Show("Bugün İçin Veri Ekleme İzniniz Doldu.");
 }
 }
 
Son düzenleyen: Moderatör:
Kodunuz çok verimsiz, ayrıca bakiye sorgusunda neden güncelleme yapıyorsunuz onu anlamadım.
 
Kodunuz çok verimsiz, ayrıca bakiye sorgusunda neden güncelleme yapıyorsunuz onu anlamadım.
Hocam acemiyim

Kodunuz çok verimsiz, ayrıca bakiye sorgusunda neden güncelleme yapıyorsunuz onu anlamadım.

Yukarıdaki bakiyequery yorum satırı aslında yaptığım işlemi belirtmek için yazdım yaani onu kullanmıyorum aynı şekilde sdr3 de yorum satırı aktif değil.
 
Son düzenleme:

Yeni konular

Geri
Yukarı