The INSERT INTO statement contains the following unknown field name

0

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. 

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

    Toplam 2 Cevap


    0

    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

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

      0

      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.

      alattin alattin (17125)
      7 yıl önce cevaplandı

        üyelik gerektirir

        Cevap yazabilmek için üye girişi yapmalısınız.

        Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
        uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol