none
Fazla kod kalabalığını kaldırma RRS feed

  • 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


    24 Şubat 2017 Cuma 08:38

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

    24 Şubat 2017 Cuma 11:22
  • Olcay Abi,

    Dediğiniz şekilde yaptım fakat bu ocak ayının nerden çekecem ?


    Select Hayat From DevamEdiyor

    27 Şubat 2017 Pazartesi 12:47
  • 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);

    27 Şubat 2017 Pazartesi 13:03
  • 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

    28 Şubat 2017 Salı 12:09
  • 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


    28 Şubat 2017 Salı 12:11
  • Çalıştırdığın kodları paylaşır mısın?
    28 Şubat 2017 Salı 12:11
  • SQL de true false geçerli değildir. 1 ve 0 kullanılır.

    pgnchess.com

    dergikapaklari.com

    28 Şubat 2017 Salı 12:13
  • 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


    28 Şubat 2017 Salı 12:16
  • Arkadaşlar yazınca uyandım :) Durum = True kısmını Durum = 1 olarak değiştirip dener misin?
    28 Şubat 2017 Salı 12:45
  • 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

    28 Şubat 2017 Salı 13:08
  • İ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?

    28 Şubat 2017 Salı 13:53
  • İ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?

       try
                {
                    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

    1 Mart 2017 Çarşamba 10:19