2017-01-10 5 views
0

나는이 작업 쿼리가 있습니다C# Access에 삽입하려고하면 코드가 작동하지만 두 개의 새 매개 변수를 추가해도 작동하지 않습니까?

"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라는 두 개의 추가 필드를 추가했습니다.

"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

"보낸 사람"및 "받는 사람"은 예약어이므로 필드 이름을 지정할 수는 없습니다.

FromField 및 ToField 이름을 사용하여 작동하도록하십시오.

+1

감사합니다. 나는 예약어, SQL과 C# 모두를 잊고있다! – Aroueterra