2016-07-14 4 views
1

Kann jemand bitte mit diesem Problem helfen? Ich habe so viele verschiedene Dinge ausprobiert und bekomme immer noch diesen Fehler. Der Fehler verweist auf die Zeile cmd.ExecuteNonQuery(). Ich habe die Insert-Zeichenkette jetzt schon eine Million Mal überprüft und sehe nicht, womit ich nicht zurecht komme. Vielen Dank!OleDbException (x80040E14): Syntaxfehler in Insert in Anweisung

OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + targetPath);       
try 
{ 
    for (int i = 0; i < listOfDBTables.Count; i++) 
    { 
     for (int j = 1; j < listOfDBTables[i].Rows.Count; j++) 
     //Don't include the header 
     { 
      OleDbCommand cmd = new OleDbCommand("INSERT INTO POP(Global Customer, Sold To #, Material #, Material Description, Customer ID, Customer Name, City, State, Country, Market Code, Unit Cost, Invoice Date, [Month], Quantity, UoM, KG, [Year]) Values (@globCust,@soldToNum,@matNum,@matDesc,@custID,@custName,@city,@state,@country,@mktCode,@cost,@invDate,@month,@quantity,@uom,@kg,@year)", myConnection); 

      cmd.Parameters.AddWithValue("@globCust", listOfDBTables[i].Rows[j][0].ToString()); 
      cmd.Parameters.AddWithValue("@soldToNum", listOfDBTables[i].Rows[j][1].ToString()); 
      cmd.Parameters.AddWithValue("@matNum", listOfDBTables[i].Rows[j][2].ToString()); 
      cmd.Parameters.AddWithValue("@matDesc", listOfDBTables[i].Rows[j][3].ToString()); 
      cmd.Parameters.AddWithValue("@custID", listOfDBTables[i].Rows[j][4].ToString()); 
      cmd.Parameters.AddWithValue("@custName", listOfDBTables[i].Rows[j][5].ToString()); 
      cmd.Parameters.AddWithValue("@city", listOfDBTables[i].Rows[j][6].ToString()); 
      cmd.Parameters.AddWithValue("@state", listOfDBTables[i].Rows[j][7].ToString()); 
      cmd.Parameters.AddWithValue("@country", listOfDBTables[i].Rows[j][8].ToString()); 
      cmd.Parameters.AddWithValue("@mktCode", listOfDBTables[i].Rows[j][9].ToString()); 
      cmd.Parameters.AddWithValue("@cost", listOfDBTables[i].Rows[j][10].ToString()); 
      cmd.Parameters.AddWithValue("@invDate", listOfDBTables[i].Rows[j][11].ToString()); 
      cmd.Parameters.AddWithValue("@month", listOfDBTables[i].Rows[j][12].ToString()); 
      cmd.Parameters.AddWithValue("@quantity", listOfDBTables[i].Rows[j][13].ToString()); 
      cmd.Parameters.AddWithValue("@uom", listOfDBTables[i].Rows[j][14].ToString()); 
      cmd.Parameters.AddWithValue("@kg", listOfDBTables[i].Rows[j][15].ToString()); 
      cmd.Parameters.AddWithValue("@year", listOfDBTables[i].Rows[j][16].ToString()); 

      myConnection.Open(); 
      cmd.ExecuteNonQuery(); 
     } 
    } 
} 
catch(Exception ex) 
{ 
    MessageBox.Show(ex.ToString()); 
} 
finally 
{ 
    myConnection.Close(); 
} 
+1

Wickeln Sie Ihre Spaltennamen Verkauft [..]. Beispiel: [Globaler Kunde] –

+2

Ihr Provider darf nur unbenannte Parameter verarbeiten (mit '?') – SLaks

+0

Ich bekomme immer noch Fehler, aber ich mache Fortschritte. Wenn Sie alle Spaltennamen in Klammern eingeschlossen haben, haben Sie vielleicht den Trick gemacht. Ich werde wieder posten, wenn ich das löse. Danke @MarcusH –

Antwort

0

sollten Sie Ihre Spalten in [] setzen, beispiels machen es [To # Verkauft] statt in Um #

Verwandte Themen