AccessTr.neT
Acil "error Converting Data Type Varchar To Numeric" Hatası - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Visual Basic .NET (https://accesstr.net/forum-visual-basic-net.html)
+--- Forum: Visual Basic .NET Cevaplanmış Soruları (https://accesstr.net/forum-visual-basic-net-cevaplanmis-sorulari.html)
+--- Konu Başlığı: Acil "error Converting Data Type Varchar To Numeric" Hatası (/konu-acil-error-converting-data-type-varchar-to-numeric-hatasi.html)



Acil "error Converting Data Type Varchar To Numeric" Hatası - kassius - 09/12/2020

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


RE: Acil "error Converting Data Type Varchar To Numeric" Hatası - berduş - 09/12/2020

(09/12/2020, 19:55)kassius yazdı: ,'" + 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 -
," + dateTimePicker1.Text + ",
2 -
,#" + dateTimePicker1.Text + "#,

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


RE: Acil "error Converting Data Type Varchar To Numeric" Hatası - kassius - 09/12/2020

(09/12/2020, 20:17)berduş yazdı:
(09/12/2020, 19:55)kassius yazdı: ,'" + 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 -
," + dateTimePicker1.Text + ",
2 -
,#" + 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'.'


RE: Acil "error Converting Data Type Varchar To Numeric" Hatası - berduş - 09/12/2020

Tarih verisini doublea cevirme fonksiyonu var mı cdbl(tarih) gibi?
," +  cdbl(dateTimePicker1.Text) + ",



RE: Acil "error Converting Data Type Varchar To Numeric" Hatası - atoykan - 10/12/2020

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.


RE: Acil "error Converting Data Type Varchar To Numeric" Hatası - kassius - 10/12/2020

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