Soran
Fazla kod kalabalığını kaldırma

Genel Tartışma
-
Selam,
Gelir gider programı geliştiriyorum. Datagridview şirket 1 ve şubat ayına satır ve sutunun bilgilerini baska bir formda gösteriyorum sorum şu: Ocak Seçtiğimde Alındı dediğinde sadece ocak ayının alındı yazsın bunu if ile yapabiliyorum. Fazla kod kalabalığına neden oluyor
if (textBox4.Text=="Ocak")
{
Baglanti.Open();
string kayit = "Update AylikIs set Ocak=@ocak where AylikId=@aylikid ";
SqlCommand Komut = new SqlCommand(kayit, Baglanti);
Komut.Parameters.AddWithValue("@Ocak", textBox3.Text);
Komut.Parameters.AddWithValue("@aylikid", label5.Text);
Komut.ExecuteNonQuery();
Baglanti.Close();
MessageBox.Show("Kayıt Başarıyla Gerçekleşti");
}
else if (textBox4.Text=="Subat")
{
Baglanti.Open();
string kayit = "Update AylikIs set Subat=@subat where AylikId=@aylikid ";
SqlCommand Komut = new SqlCommand(kayit, Baglanti);
Komut.Parameters.AddWithValue("@aylikid", label5.Text);
Komut.Parameters.AddWithValue("@subat", textBox3.Text);
Komut.ExecuteNonQuery();
Baglanti.Close();
MessageBox.Show("Kayıt Başarıyla Gerçekleşti");
}
Veri Tabanı
Select Hayat From DevamEdiyor
- Düzenleyen Sebih Çiçek 24 Şubat 2017 Cuma 08:39
- Değiştirilmiş Tür Kyamuran SalibryamMicrosoft contingent staff, Moderator 14 Mart 2017 Salı 10:07
Tüm Yanıtlar
-
Tablo yapısında değişiklik yaparsan daha rahat edersin bence. Şimdi Orda Ocak ayı var ama hangi ocak bu 2017, 2016, 2020 hangisi?
MusteriIsGiris
MusteriId
MusteriAdi
AylikIs
AylikId
Donem (datetime),
Durum (boolean)
MusteriId
şeklinde yaparsan Donem için de o ayın son gününü kaydedersin veya işlem yaparken tarihteki gün alanını dikkate almazsın.
Bu durumda tek sorguyla
Baglanti.Open(); string kayit = "Update AylikIs set Durum = true where AylikId=@aylikId"; SqlCommand Komut = new SqlCommand(kayit, Baglanti); Komut.Parameters.AddWithValue("@aylikId", label5.Text); int sonuc= Komut.ExecuteNonQuery(); Baglanti.Close(); string msg = sonuc > 0 ? "Kayıt Başarıyla Gerçekleşti" : "Kayıt sırasında hata oluştu"; MessageBox.Show(sonuc);
şeklinde yapabilirsin.
Not : Kodları denemedim hata olmuşsa tekrar bakarız
-
-
-
Tablo yapısında değişiklik yaparsan daha rahat edersin bence. Şimdi Orda Ocak ayı var ama hangi ocak bu 2017, 2016, 2020 hangisi?
MusteriIsGiris
MusteriId
MusteriAdi
AylikIs
AylikId
Donem (datetime),
Durum (boolean)
MusteriId
şeklinde yaparsan Donem için de o ayın son gününü kaydedersin veya işlem yaparken tarihteki gün alanını dikkate almazsın.
Bu durumda tek sorguyla
Baglanti.Open(); string kayit = "Update AylikIs set Durum = true where AylikId=@aylikId"; SqlCommand Komut = new SqlCommand(kayit, Baglanti); Komut.Parameters.AddWithValue("@aylikId", label5.Text); int sonuc= Komut.ExecuteNonQuery(); Baglanti.Close(); string msg = sonuc > 0 ? "Kayıt Başarıyla Gerçekleşti" : "Kayıt sırasında hata oluştu"; MessageBox.Show(sonuc);
şeklinde yapabilirsin.
Not : Kodları denemedim hata olmuşsa tekrar bakarız
Selam
Invalid column name 'True'. hatasını alıyorum
Select Hayat From DevamEdiyor
-
Merhaba,
Olcay örneğinde AY parametresini direkt Textbox'tan verdi (gerçi kod örneğinde label5 yazmış ama orasını TextBox ile değiştirirsen olur)
Komut.Parameters.AddWithValue("@aylikId", textbox4.Text);
Merhaba
Bu şekilde mi tablo ?
Select Hayat From DevamEdiyor
- Düzenleyen Sebih Çiçek 28 Şubat 2017 Salı 12:12
-
-
-
Durum alanı BIT olmalı ve 0 ise false 1 ise true olmalı.
Tablo yapısında değişiklik yaparsan daha rahat edersin bence. Şimdi Orda Ocak ayı var ama hangi ocak bu 2017, 2016, 2020 hangisi?
MusteriIsGiris
MusteriId
MusteriAdi
AylikIs
AylikId
Donem (datetime),
Durum (boolean)
MusteriId
şeklinde yaparsan Donem için de o ayın son gününü kaydedersin veya işlem yaparken tarihteki gün alanını dikkate almazsın.
Bu durumda tek sorguyla
Baglanti.Open(); string kayit = "Update AylikIs set Durum = true where AylikId=@aylikId"; SqlCommand Komut = new SqlCommand(kayit, Baglanti); Komut.Parameters.AddWithValue("@aylikId", label5.Text); int sonuc= Komut.ExecuteNonQuery(); Baglanti.Close(); string msg = sonuc > 0 ? "Kayıt Başarıyla Gerçekleşti" : "Kayıt sırasında hata oluştu"; MessageBox.Show(sonuc);
şeklinde yapabilirsin.
Not : Kodları denemedim hata olmuşsa tekrar bakarız
Selam
Invalid column name 'True'. hatasını alıyorum
Select Hayat From DevamEdiyor
-
-
Arkadaşlar yazınca uyandım :) Durum = True kısmını Durum = 1 olarak değiştirip dener misin?
Selam
Dediğiniz şekilde denedim Kodlar bu şekilde
try
{
Baglanti.Open();
string kayit = "Update ATbl set Ocak=@ocak where Durum =1 and AylikId=@musteriid";
SqlCommand Komut = new SqlCommand(kayit, Baglanti);
Komut.Parameters.AddWithValue("@musteriid", label5.Text);
Komut.Parameters.AddWithValue("@ocak", textBox3.Text);
int sonuc = Komut.ExecuteNonQuery();
Baglanti.Close();
string msg = sonuc > 0 ? "Kayıt Başarıyla Gerçekleşti" : "Kayıt sırasında hata oluştu";
MessageBox.Show(sonuc + "Deneme");
}
catch (Exception)
{
throw;
}Durumu=1 olan hepsini renklendiriyor ?
Select Hayat From DevamEdiyor
-
İyi de sen zaten Where Durum = 1 demişsin. Durumu 1 olanları işleme tabi tutmuşsun. Orda Ocak alanının tipi ne? AylikId = @musteriid demişsin isim olarak mı öyle kaldı yoksa yanlış bir karşılaştırma mı var?
Not : En son tablo yapısını paylaşabilir misin?
- Düzenleyen Olcay GUZEL 28 Şubat 2017 Salı 13:54
-
İyi de sen zaten Where Durum = 1 demişsin. Durumu 1 olanları işleme tabi tutmuşsun. Orda Ocak alanının tipi ne? AylikId = @musteriid demişsin isim olarak mı öyle kaldı yoksa yanlış bir karşılaştırma mı var?
Not : En son tablo yapısını paylaşabilir misin?
{
Baglanti.Open();
string kayit = "Update ATbl set Durum =1 where AylikId=@aylikid";
SqlCommand Komut = new SqlCommand(kayit, Baglanti);
Komut.Parameters.AddWithValue("@aylikid", label5.Text);
int sonuc = Komut.ExecuteNonQuery();
Baglanti.Close();
string msg = sonuc > 0 ? "Kayıt Başarıyla Gerçekleşti" : "Kayıt sırasında hata oluştu";
MessageBox.Show(sonuc + "Deneme");
}
catch (Exception)
{
throw;
}Select Hayat From DevamEdiyor