none
VERİ TABANINA KAYIT YAPARKEN BOŞ GEÇEN TEXTBOXLARIN HATA VERMESİ RRS feed

  • Soru

  • Merhaba arkadaşlar,

    Basit bir form oluşturup üzerine birkaç tane textbox yerleştirdim.Bu textboxlara girilen değerler Acces veritabanına yazdırması lazım ve yazdırıyor da sıkıntı yok. Fakat textboxları boş bırakınca resimdeki hatayı alıyor. 

    Ayrıca aşağıdaki gibi bir kodlama  yaptım ve boş olan değerlerin yerine "Boş" yazdırmaya başladı. Fakat bu seferde boş bırakmayıp birşeyler yazınca hata vermeye başladı.

    yardımcı olursanız sevinirim :)

    if (textbox1=="") 
    
    {
      textbox1.Text="Boş";
    }


    14 Ekim 2015 Çarşamba 09:29

Yanıtlar

  • BosAlanDoldur hatali ama zaten gereksiz ("Boş" yazman gerekiyorsa asagida "" yerine yaz):

    public partial class Form5 : Form
    {
      public Form2 frm2;
      public Form5()
      {
        InitializeComponent();
      }
      string bagStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Veri_Tabani.accdb";
    
      public void AlanTemizle()
      {
        textBox1.Clear(); textBox2.Clear(); textBox3.Clear(); textBox4.Clear();
      }
    
      private void button1_Click(object sender, EventArgs e)
      {
    
        int aracSayisi = 0;
        int.TryParse(this.textBox4.Text, out aracSayisi);
    
        using (var bag = new OleDbConnection(bagStr))
        {
          OleDbCommand kmt = new OleDbCommand(@"insert into Olaylar 
          (isim,soy_isim,adres,arac_sayisi) 
          values 
          (@isim,@soy_isim,@adres,@arac_sayisi)", bag);
    
    
          kmt.Parameters.AddWithValue("@isim", string.IsNullOrEmpty(this.textBox1.Text) ? "" : this.textBox1.Text);
          kmt.Parameters.AddWithValue("@soy_isim", string.IsNullOrEmpty(this.textBox2.Text) ? "" : this.textBox2.Text);
          kmt.Parameters.AddWithValue("@adres", string.IsNullOrEmpty(this.textBox3.Text) ? "" : this.textBox3.Text);
          kmt.Parameters.AddWithValue("@arac_sayisi", aracSayisi);
    
          bag.Open();
          kmt.ExecuteNonQuery();
          bag.Close();
        }
        frm2.tablo_guncelleme();
        AlanTemizle();
      }
    }



    14 Ekim 2015 Çarşamba 11:12
    Yanıtlayıcı

Tüm Yanıtlar

  • "Boş" bir string ve her seye uymaz. Ornegin "Boş" lafindan bir int ya da DateTime uretemezsin. Zaten "Boş" yazdirmak bir yaraya bandaj gibi bir sey. Ya deger yazdir, ya da tablonda NULL kabul etsin, NULL yazilsin.

    Kodunu ve tablonun yapisini paylasmadigindan daha fazla yardim imkansiz hale geliyor.

    Ek olarak kucuk ama cok buyuk bir nasihat, access'i database diye kullanma. Tabii bunu dinleyen nadir cikiyor, dinlemek icin genelde basinin agrimasi gerekiyor (er ya da gec garanti).

    14 Ekim 2015 Çarşamba 10:04
    Yanıtlayıcı
  • Çetin hocam kodlar aşağıdaki gibi kısaca yazdım. bu şekilde yaptığım zaman program patlıyo hocam. Veri tabanı tavsiyenizide değerlendiricem hocam.

    public partial class Form5 : Form
        {
            public Form2 frm2;
            public Form5()
            {
                InitializeComponent();
            }
            OleDbConnection bag = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Veri_Tabani.accdb");
            
            public void AlanTemizle()
            {
                textBox1.Clear(); textBox2.Clear(); textBox3.Clear(); textBox4.Clear();
                
            }
            public void BosAlanDoldur()
            {
                if 
                    (textBox1.Text.Trim()=="" && textBox2.Text.Trim()=="" && textBox3.Text.Trim()=="" && textBox4.Text.Trim()=="")
                {
                    textBox1.Text = "Boş";
                    textBox2.Text = "Boş";
                    textBox3.Text = "Boş";
                    textBox4.Text = "0";
                    
               }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
    
                BosAlanDoldur();
                OleDbCommand kmt = new OleDbCommand("insert into Olaylar (isim,soy_isim,adres,arac_sayisi) values (@isim,@soy_isim,@adres,@arac_syisi)", bag);
                bag.Open();
                kmt.Parameters.AddWithValue("@isim", this.textBox1.Text);
                kmt.Parameters.AddWithValue("@soy_isim", this.textBox2.Text);
                kmt.Parameters.AddWithValue("@adres", this.textBox3.Text);
                kmt.Parameters.AddWithValue("@arac_sayisi", this.textBox4.Text);
                
                kmt.ExecuteNonQuery();
                bag.Close();
                frm2.tablo_guncelleme();
                AlanTemizle();
               
               }


    14 Ekim 2015 Çarşamba 10:43
  • if (textbox1=="") bu kod hatali { textbox1.Text="Boş"; }

    if ( texbox1.Text == "") boyle olucak.
    texbox1.Text="
    Boş";



    Agha Huseynov

    • Yanıt Olarak Öneren MuhammedEmir 29 Ekim 2015 Perşembe 16:21
    14 Ekim 2015 Çarşamba 10:59
  • BosAlanDoldur hatali ama zaten gereksiz ("Boş" yazman gerekiyorsa asagida "" yerine yaz):

    public partial class Form5 : Form
    {
      public Form2 frm2;
      public Form5()
      {
        InitializeComponent();
      }
      string bagStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Veri_Tabani.accdb";
    
      public void AlanTemizle()
      {
        textBox1.Clear(); textBox2.Clear(); textBox3.Clear(); textBox4.Clear();
      }
    
      private void button1_Click(object sender, EventArgs e)
      {
    
        int aracSayisi = 0;
        int.TryParse(this.textBox4.Text, out aracSayisi);
    
        using (var bag = new OleDbConnection(bagStr))
        {
          OleDbCommand kmt = new OleDbCommand(@"insert into Olaylar 
          (isim,soy_isim,adres,arac_sayisi) 
          values 
          (@isim,@soy_isim,@adres,@arac_sayisi)", bag);
    
    
          kmt.Parameters.AddWithValue("@isim", string.IsNullOrEmpty(this.textBox1.Text) ? "" : this.textBox1.Text);
          kmt.Parameters.AddWithValue("@soy_isim", string.IsNullOrEmpty(this.textBox2.Text) ? "" : this.textBox2.Text);
          kmt.Parameters.AddWithValue("@adres", string.IsNullOrEmpty(this.textBox3.Text) ? "" : this.textBox3.Text);
          kmt.Parameters.AddWithValue("@arac_sayisi", aracSayisi);
    
          bag.Open();
          kmt.ExecuteNonQuery();
          bag.Close();
        }
        frm2.tablo_guncelleme();
        AlanTemizle();
      }
    }



    14 Ekim 2015 Çarşamba 11:12
    Yanıtlayıcı
  • Çetin Hocam siz Daha İyi bilirsiniz

    Ben Şu şekilde Yapıyorum hocam acaba Sağlıklımı 

    örnek:

    If sube_kodu = "" Then
                    .Add("@SUBE_KODU", FbDbType.VarChar).Value = DBNull.Value
                Else
                    .Add("@SUBE_KODU", FbDbType.VarChar).Value = sube_kodu
                End If


    Bilgisayar,Hayallerini, Mantığını Kullanarak Gerçekleştirir...

    14 Ekim 2015 Çarşamba 11:24
  • Null kullanmak istedigin yerler icin uygun ama bir soz vardir "NULL is evil". Yani gercekten gerekmedikce databaseinde null kullanma :)

    14 Ekim 2015 Çarşamba 11:27
    Yanıtlayıcı
  • Hocam çok afedersiniz.Şunu doğrumu anladım yani tabloda null geçilebiliyorsa gerek yok direk gitsin. değilse mi kullanmak gerekiyor

    Bilgisayar,Hayallerini, Mantığını Kullanarak Gerçekleştirir...

    14 Ekim 2015 Çarşamba 11:33
  • Gercekten Null gerekmeyen sutunlarinda NOT NULL kullan. NULL gerekliyse ve kullandiysan:

    • Insert listende o sutun yer almiyorsa otomatik olarak NULL kullanilir.
    • Insert listende yer aliyorsa ve NULL olmasi gerekliyse NULL belirtmen gerekli.

    Ornegin TelefonNo alani NULL ya da "" olsa fark ediyor mu? Sonucta ikisinde de belirtilmemis. Fark eden durumlar olabilir, o zaman NULL desteklesin o kolon.

    14 Ekim 2015 Çarşamba 11:47
    Yanıtlayıcı
  • Teşekkür ederim Hocam.Bir şey Daha Öğrenmiş olduk Eyvallah

    Bilgisayar,Hayallerini, Mantığını Kullanarak Gerçekleştirir...

    14 Ekim 2015 Çarşamba 11:52
  • Çetin hocam sorunum çözüldü sayenizde teşekkür ederim.
    14 Ekim 2015 Çarşamba 13:56