2017-01-10 3 views
0

私はこの作業のクエリを持っている:C#Accessに挿入しようとしましたが、コードは機能しますが、2つの新しいパラメータを追加しても機能しません。

"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)"; 

より良いことをどのようにフォーマットするかわかりません。とにかく、これはコマンドを実行するコマンド全体と一緒に動作します。今、私のプログラムの要件を更新し、FromとToという2つの追加フィールドを追加しました。

"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)"; 

これで非常に役立つエラーが返されます。構文ERROR in INSERT INTO。それは本当にそれが言うすべてです。

ここでは分析のためのコードを示します。もし私が出入り口を取り除くと、それは完全に機能します。

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); 
} 

データソースビューをダブルチェックしましたが、実際にはAccessデータベースが更新されているため、フィールドが存在するはずです。

答えて

3

「From」と「To」は予約語なので、あなたのフィールドに名前を付けることはできません。

FromフィールドとToFieldの名前で試してみてください。

+1

これは、ありがとうございました!私は予約語、SQLとC#の両方を忘れています! – Aroueterra

関連する問題