我目前正在为大学做一个vb.net项目,并希望使用文本框,屏蔽文本框和使用vb gui的richtextbox创建一个新的访问记录。但是我一直得到这个例外:
“System.Data.dll中发生了'System.Data.OleDb.OleDbException'类型的未处理异常 附加信息:INSERT INTO语句中的语法错误。“
这是我的代码,正在处理其他表格
Private Sub btnSaveNew_Click(sender As Object, e As EventArgs) Handles btnSaveNew.Click
Dim objrow As DataRow
objrow = objDataSet.Tables("tblEngineersReport").NewRow
objrow.Item("To") = txtTo.Text
objrow.Item("Date_Carried_Out") = txtCompletedDate.Text
objrow.Item("Description_Of_Work") = txtWorkDescription.Text
objrow.Item("Comment") = txtComment.Text
objrow.Item("Quantity1") = txtQuantity1.Text
objrow.Item("Quantity2") = txtQuantity2.Text
objrow.Item("Quantity3") = txtQuantity3.Text
objrow.Item("Quantity4") = txtQuantity4.Text
objrow.Item("Item_Description1") = txtDescription.Text
objrow.Item("Item_Description2") = txtDescription2.Text
objrow.Item("Item_Description3") = txtDescription3.Text
objrow.Item("Item_Description4") = txtDescription4.Text
objrow.Item("Unit_Price1") = txtUnitPrice1.Text
objrow.Item("Unit_Price2") = txtUnitPrice2.Text
objrow.Item("Unit_Price3") = txtUnitPrice3.Text
objrow.Item("Unit_Price4") = txtUnitPrice4.Text
objrow.Item("Rate1") = txtRate1.Text
objrow.Item("Rate2") = txtRate2.Text
objrow.Item("Rate3") = txtRate3.Text
objrow.Item("Labour1") = txtDescription5.Text
objrow.Item("Labour2") = txtDescription6.Text
objrow.Item("Labour3") = txtDescription7.Text
objrow.Item("Hours_Worked1") = txtHours1.Text
objrow.Item("Hours_Worked2") = txtHours2.Text
objrow.Item("Hours_Worked3") = txtHours3.Text
objDataSet.Tables("tblEngineersReport").Rows.Add(objrow)
objEngineerDA.Update(objDataSet, "tblEngineersReport")
Retrieve()
MessageBox.Show("new record added")
cboJobID.Enabled = True
End Sub
Quanity文本框直到工作小时数都包含在表格布局面板中,我只是想知道这与记录没有保存有什么关系吗?
答案 0 :(得分:1)
查看列的名称,我注意到您有一个名为 TO 的列。这是MS-Access中的保留关键字,因此如果您没有告诉OleDbCommandBuilder
使用适当的QuotePrefix和QuoteSuffix封装列名,则适配器的自动生成查询将出现语法错误字符串。
您需要在OleDbCommandBuilder的声明和初始化之后添加此代码 -
Dim builder = new OleDbCommandBuilder(objEngineerDA)
builder.QuotePrefix = "["
builder.QuoteSuffix = "]"
答案 1 :(得分:0)
您需要检查DataAdapter(objEngineerDA)定义中使用的INSERT语句。根据错误,INSERT的语法显然是不正确的。如果没有看到目前的情况,我无法告知它有什么问题。