2017-01-10 1 views
0

Ich habe diese Arbeits query:C# Beim Einfügen in Access funktioniert der Code, aber wenn ich zwei neue Parameter hinzufüge, funktioniert das nicht?

"Insert INTO ACTB (ID, FirstName, LastName, GrossIncome, LessTNT, TaxableIncomeCE, TaxableIncomePE, GrossTaxableIncome, LessTE, LessPPH, NetTax, TaxDue, HeldTaxCE, HeldTaxPE, TotalTax, TIN) " + 
"VALUES(@ID, @First, @Last, @Gross, @LessTNT, @TCI, @ADDTI, @GTI, @LessTE, @LessPPH, @LessNTI, @TD, @TWCE, @TWPE, @TATW, @TIN)"; 

nicht sicher, wie das besser zu formatieren. Wie auch immer, dies funktioniert zusammen mit dem ganzen Befehl, der ausgeführt wird. Jetzt habe ich die Anforderungen meines Programms aktualisiert und zwei zusätzliche Felder hinzugefügt, sagen wir von und nach.

"Insert INTO ACTB (ID, FirstName, LastName, GrossIncome, LessTNT, TaxableIncomeCE, TaxableIncomePE, GrossTaxableIncome, LessTE, LessPPH, NetTax, TaxDue, HeldTaxCE, HeldTaxPE, TotalTax, TIN, From, To) " + 
"VALUES(@ID, @First, @Last, @Gross, @LessTNT, @TCI, @ADDTI, @GTI, @LessTE, @LessPPH, @LessNTI, @TD, @TWCE, @TWPE, @TATW, @TIN, @From, @To)"; 

Und jetzt gibt es einen sehr nicht hilfreichen Fehler zurück: Syntax ERROR in INSERT INTO. Das ist wirklich alles was es sagt.

Hier ist der Rest des Codes für Ihre Analyse. Wenn ich das von und zu entferne, funktioniert es perfekt.

OleDbConnection Dbcon = new OleDbConnection(Con); 
OleDbCommand cmd = new OleDbCommand(); 
cmd.CommandText = "Insert INTO ACTB (ID, FirstName, LastName, GrossIncome, LessTNT, TaxableIncomeCE, TaxableIncomePE, GrossTaxableIncome, LessTE, LessPPH, NetTax, TaxDue, HeldTaxCE, HeldTaxPE, TotalTax, TIN, From, To) " + 
        "VALUES(@ID, @First, @Last, @Gross, @LessTNT, @TCI, @ADDTI, @GTI, @LessTE, @LessPPH, @LessNTI, @TD, @TWCE, @TWPE, @TATW, @TIN, @From, @To)"; 
cmd.Parameters.AddWithValue("@ID", txtID.Text); 
cmd.Parameters.AddWithValue("@First", txtFirst.Text); 
cmd.Parameters.AddWithValue("@Last", txtLast.Text); 
cmd.Parameters.AddWithValue("@Gross", Convert.ToDouble(txtGross.Text)); 
cmd.Parameters.AddWithValue("@LessTNT", Convert.ToDouble(txtLessTNT.Text)); 
cmd.Parameters.AddWithValue("@TCI", Convert.ToDouble(txtTCI.Text)); 
cmd.Parameters.AddWithValue("@ADDTI", Convert.ToDouble(txtADDTI.Text)); 
cmd.Parameters.AddWithValue("@GTI", Convert.ToDouble(txtGTI.Text)); 
cmd.Parameters.AddWithValue("@LessTE", Convert.ToDouble(txtLessTE.Text)); 
cmd.Parameters.AddWithValue("@LessPPH", Convert.ToDouble(txtLessPPH.Text)); 
cmd.Parameters.AddWithValue("@LessNTI", Convert.ToDouble(txtLessNTI.Text)); 
cmd.Parameters.AddWithValue("@TD", Convert.ToDouble(txtTD.Text)); 
cmd.Parameters.AddWithValue("@TWCE", Convert.ToDouble(txtTWCE.Text)); 
cmd.Parameters.AddWithValue("@TWPE", Convert.ToDouble(txtTWPE.Text)); 
cmd.Parameters.AddWithValue("@TATW", Convert.ToDouble(txtTATW.Text)); 
cmd.Parameters.AddWithValue("@TIN", txtTIN.Text); 
cmd.Parameters.AddWithValue("@From", txtFrom.Text); 
cmd.Parameters.AddWithValue("@To", txtTo.Text); 
Dbcon.Open(); 
cmd.Connection = Dbcon; 

try 
{ 
    cmd.ExecuteNonQuery(); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
} 

Ich habe überprüft die doppelte Datenquellensicht, und meine Access-Datenbank ist in der Tat die aktualisierte ein, so existieren die Felder sollten!

Antwort

3

Ich denke "From" und "To" sind reservierte Wörter, so dass Sie sie nicht verwenden können, um Ihre Felder zu benennen.

Bitte versuchen Sie mit FromField und ToField Namen, damit es funktioniert.

+1

Das hat funktioniert, danke! Ich vergesse reservierte Wörter, sowohl SQL als auch C#! – Aroueterra

Verwandte Themen