Skip to main content

AccessTr.neT


Acil "error Converting Data Type Varchar To Numeric" Hatası

Acil "error Converting Data Type Varchar To Numeric" Hatası

Çözüldü #1
Kod
System.Data.SqlClient.SqlException: 'Error converting data type varchar to numeric.'
Kod
                baglanti.Open();
                SqlCommand ekle = new SqlCommand("insert into BiletBilgi(TicketID,Ad,Soyad,DogumTarihi,KimlikNo,TelNo,EmailAdresi,Cinsiyet,Nereden,Nereye,BiletTarihi,TrenSaati,Vagon,KoltukNo,Indirim,Ucret) values('" + textBox9.Text + "','" + textBox1.Text + "','" + textBox2.Text + "','" + dateTimePicker1.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox8.Text + "','" + comboBox6.Text + "','" + comboBox2.Text + "','" + comboBox3.Text + "','" + dateTimePicker2.Text + "','" + comboBox1.Text + "','" + comboBox4.Text + "','" + textBox5.Text + "','" + comboBox7.Text + "','" + textBox7.Text + "')", baglanti);
                ekle.ExecuteNonQuery();
                ekle.Dispose();
                baglanti.Close();
                MessageBox.Show("Bilet Rezervasyon başarılı");

Öğrenciyim okul projesi için otomasyon yapıyorum bu hata ile karşılaştım çözmek için baya uğraştım açıkcası ya beceremedim ya da sorunu bir türlü çözmedi. 

Anladığım kadarıyla hata datepickerın date formatıyla Sql date formatının uyuşmamasından kaynaklanıyor datepicker formatı short'a ayarlı Gün ay yıl şeklinde bunu nasıl çözerim ? Detaylı şekilde anlatırsanız memnun olurum çok fazla bilgim yok
Son Düzenleme: 09/12/2020, 19:56, Düzenleyen: kassius.
Cevapla
#2
(09/12/2020 19:55)kassius Adlı Kullanıcıdan Alıntı: ,'" + dateTimePicker1.Text + "',
VBten anlamam ama yukardaki fonksiyonda tarih alanını tek tırnak' arasına almışsınız sadece metinsel veriler tırnak içine alınır, tarih için tam olarak bilmiyorum ama 2 yol önerebilirim
1 -
Visual Basic Code
," + dateTimePicker1.Text + ",
2 -
Visual Basic Code
,#" + dateTimePicker1.Text + "#,

.Nette tarih türü tam olarak ne double, long ....?
Son Düzenleme: 09/12/2020, 20:18, Düzenleyen: berduş.
Cevapla
#3
(09/12/2020 20:17)berduş Adlı Kullanıcıdan Alıntı:
(09/12/2020 19:55)kassius Adlı Kullanıcıdan Alıntı: ,'" + dateTimePicker1.Text + "',
VBten anlamam ama yukardaki fonksiyonda tarih alanını tek tırnak' arasına almışsınız sadece metinsel veriler tırnak içine alınır, tarih için tam olarak bilmiyorum ama 2 yol önerebilirim
1 -
Visual Basic Code
," + dateTimePicker1.Text + ",
2 -
Visual Basic Code
,#" + dateTimePicker1.Text + "#,

.Nette tarih türü tam olarak ne double, long ....?



ilkinde şu hatayı veriyor 'Incorrect syntax near '.2020'.'

ikincisinde şu hatayı alıyorum 'Incorrect syntax near '.12'.'
Cevapla
#4
Tarih verisini doublea cevirme fonksiyonu var mı cdbl(tarih) gibi?
Visual Basic Code
," +  cdbl(dateTimePicker1.Text) + ",
Cevapla
#5
Hata nedeni sorgunuz sayısal hale dönüştürmek mümkün olmayan varchar'ı dönüştürmeye çalışıyor. ancak tablo ve veri yapılarınızı görmedençözüm önerileri fikir yürütmekten ibaret olacak gibi. sorgunuzu parça parça ekleyerek deneyin ve hataya sebep olan alanı net olarak tespit edin öncelikle.
Asıl sorun ise sayısal verileri VARCHAR veya NVARCHAR sütunlarında depolamanız, veritabanınızı tasarlarken datatypelar çok çok önemli buna özen göstermelisiz.
Cevapla
#6
Kod
                using (SqlCommand ekle = new SqlCommand(@"insert into BiletBilgi2 
               (Ad, Soyad, DogumTarihi, KimlikNo, TelNo, EmailAdresi, Cinsiyet, Nereden, Nereye, BiletTarihi, TrenSaati, Vagon, KoltukNo, Indirim, Ucret) values
			   (@Ad, @Soyad, @DogumTarihi, @KimlikNo, @TelNo, @EmailAdresi, @Cinsiyet, @Nereden, @Nereye, @BiletTarihi, @TrenSaati, @Vagon, @KoltukNo, @Indirim, @Ucret)",
               baglanti))
                {
                    
                    ekle.Parameters.Add("@Ad", SqlDbType.NText).Value = textBox1.Text.ToString();
                    ekle.Parameters.Add("@Soyad", SqlDbType.NText).Value = textBox2.Text.ToString();
                    ekle.Parameters.Add("@DogumTarihi", SqlDbType.Date).Value = dateTimePicker1.Value.Date;
                    ekle.Parameters.Add("@KimlikNo", SqlDbType.Float).Value = float.Parse(textBox3.Text);
                    ekle.Parameters.Add("@TelNo", SqlDbType.Float).Value = float.Parse(textBox4.Text);
                    ekle.Parameters.Add("@EmailAdresi", SqlDbType.NText).Value = textBox8.Text.ToString();
                    ekle.Parameters.Add("@Cinsiyet", SqlDbType.NText).Value = comboBox6.Text.ToString();
                    ekle.Parameters.Add("@Nereden", SqlDbType.NText).Value = comboBox2.Text.ToString();
                    ekle.Parameters.Add("@Nereye", SqlDbType.NText).Value = comboBox3.Text.ToString();
                    ekle.Parameters.Add("@BiletTarihi", SqlDbType.Date).Value = dateTimePicker2.Value.Date;
                    ekle.Parameters.Add("@TrenSaati", SqlDbType.NText).Value = comboBox1.SelectedItem.ToString();
                    ekle.Parameters.Add("@Vagon", SqlDbType.NText).Value = comboBox4.Text.ToString();
                    ekle.Parameters.Add("@KoltukNo", SqlDbType.Int).Value = int.Parse(textBox5.Text);
                    ekle.Parameters.Add("@Indirim", SqlDbType.NText).Value = comboBox7.Text.ToString();
                    decimal.TryParse(textBox7.Text, out decimal ucret);
                    ekle.Parameters.Add("@Ucret", SqlDbType.Int).Value = ucret;

                    baglanti.Open();
                    ekle.ExecuteNonQuery();
                    baglanti.Close();
                }
                MessageBox.Show("Bilet Rezervasyon başarılı");

Bir arkadaşa ekran paylaştım yardım etti son değişiklikler böyle. Teşekkürler
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da