The INSERT INTO statement contains the following unknown field name

mgasilturk (31) 7 yıl önce sordu

Merhaba. Bu sorunu bir türlü çözemedim. C# ile var olan bir excel dosyasına veri göndermeye çalışıyorum. OledB kullanıyorum. Burada Exceldeki sütünların tipleri "General" olarak kayıtlı. Bazı sütundaki hücreler sayılardan oluşuyor. Bazı sütunlardakiler hem sayı hem kelimelerden oluşuyor.Text boxlara girdiğim verileri excele gönderemiyorum.

Şu şekilde bir hata alıyorum:Additional information: The INSERT INTO statement contains the following unknown field name: 'ORDERYEAR'.  Make sure you have typed the name correctly, and try the operation again.

Kod;

namespace exceleklemeornegi { public partial class Form1 : Form { public Form1() { InitializeComponent(); } OleDbConnection xlsxbaglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\502758545\\Desktop\\kesincalistir.xlsx; Extended Properties='Excel 12.0 Xml;ReadOnly=False;HDR=YES'"); //excel_dosya.xlsx kısmını kendi excel dosyanızın adıyla değiştirin. OleDbCommand komut = new OleDbCommand(); private void button1_Click(object sender, EventArgs e) { xlsxbaglanti.Open(); string sorgu = "Insert into [Sheet1$] ([ORDERYEAR],[COMPLYEAR],[COUNTRY],[CUSTOMER]," + "[ACTIVITY],[SITE],[NO],[RATING(MVA/MVAR)],[TYPE],[Ph],[f(Hz)],[HV(kV)],[LV(kV)],[TV(kV)],[TAPCHANGER],[COOLING],[MANUFNO]) " + "values (@O, @C, @CO, @CU, @A, @S," + "@N, @R, @T, @P, @F, @H, @L, @TV, @TA, @COO, " + "@M)"; OleDbCommand komut = new OleDbCommand(sorgu, xlsxbaglanti); komut.Parameters.AddWithValue("@O", textBox1.Text); komut.Parameters.AddWithValue("@C", textBox2.Text); komut.Parameters.AddWithValue("@CO", textBox3.Text); komut.Parameters.AddWithValue("@CU", textBox4.Text); komut.Parameters.AddWithValue("@A", textBox5.Text); komut.Parameters.AddWithValue("@S", textBox6.Text); komut.Parameters.AddWithValue("@N", textBox7.Text); komut.Parameters.AddWithValue("@R", textBox8.Text); komut.Parameters.AddWithValue("@T", textBox9.Text); komut.Parameters.AddWithValue("@P", textBox10.Text); komut.Parameters.AddWithValue("@F", textBox11.Text); komut.Parameters.AddWithValue("@H", textBox12.Text); komut.Parameters.AddWithValue("@L", textBox13.Text); komut.Parameters.AddWithValue("@TV", textBox14.Text); komut.Parameters.AddWithValue("@TA", textBox15.Text); komut.Parameters.AddWithValue("@COO", textBox16.Text); komut.Parameters.AddWithValue("@M", textBox17.Text); komut.ExecuteNonQuery(); xlsxbaglanti.Close(); } } }

Nerde nasıl bir değişiklik yapmam gerekiyor yardımcı olabilir misiniz ?

Umarım doğru kelimelerle anlatabilmişimdir. 

Toplam 2 cevap


mgasilturk (31) 7 yıl önce cevapladı

Kusura bakmayın kopyala yapıştır esnasında yanlış hatayı kopyalamışım. Hata şuydu:

Additional information: Data type mismatch in criteria expression.

Ancak sanırım bu sorunu çözdüm. Şu şekilde ;

Excel üzerinde tüm sütunları seçtim ve veri tipini "general" dan "text"e geçirdim. Bu ne kadar doğru bir yöntem bilmiyorum. Sonucta bazı sütunlar sayılardan oluşuyor. Bu çözüm sonucunda sayıların bulunduğu sütunu text tipinde belirlediğimiz için hücrelerin yanında sarı bir uyarı hatası veriyor. Bundan kurtulmak için;

File --> Options--> Formulas-->Number formatted an Text or preceded by an apostrophe (yanındaki tiki kaldırıyoruz)--> OK 

Şimdilik bu sorunu bu şekilde çözdüm ancak ileride bir soruna neden olur mu bilmiyorum.

Ayrıca cevap verdiğiniz için çok teşekkür ederim

alattin (17127) 7 yıl önce cevapladı

Aldığın hata The INSERT INTO statement contains the following unknown field name: 'ORDERYEAR'  Excel tablonda 'ORDERYEAR adında bir sütun bulunmadığını söylüyor.

Senin için bir örnek yazdım: C# ile Excel dosyasına nasıl veri kaydedilir?

Burada sen sütunları adlandırmadığın için hata alıyor olabilirsin.