2015-04-06 49 views
0

我目前正在爲大學做一個vb.net項目,並希望使用文本框,掩碼的文本框和使用vb gui的richtextboxes創建一個新的訪問記錄。不過,我不斷收到此異常:VB.net和訪問查詢

「類型‘System.Data.OleDb.OleDbException’未處理的異常出現在system.data.dll 附加信息:在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 

的控管數量文本框到工作都包含在一個表格佈局面板中的時間和我只是想知道,就這個有什麼用記錄不存儲?

+0

是否有需要做任何轉換的聲明和初始化後?你可以展示桌子的設計嗎? – Icepickle 2015-04-06 13:06:49

+0

您確定數據庫表中的所有列都是「Text」類型的嗎? – 2015-04-06 13:15:28

+0

沒有類型號碼和日期/時間,這是否重要? – Hector122 2015-04-06 13:39:00

回答

0

您需要檢查在您的DataAdapter(objEngineerDA)定義中使用的INSERT語句。根據錯誤,該INSERT的語法顯然不正確。沒有看到目前的情況,我不能建議它有什麼問題。

1

看看你的列的名字,我可以注意到你有一個名爲的列到。這是MS-Access中的保留關鍵字,因此如果您不告訴OleDbCommandBuilder使用適當的QuotePrefix和QuoteSuffix字符串封裝列名,則適配器的自動生成的查詢將會出現語法錯誤。

您需要添加該代碼,只是你OleDbCommandBuilder-

Dim builder = new OleDbCommandBuilder(objEngineerDA) 
builder.QuotePrefix = "[" 
builder.QuoteSuffix = "]" 
+0

我改變了TO,我仍然收到錯誤? – Hector122 2015-04-06 13:46:38

+0

它與以前是相同的語法錯誤?在生成INSERT/UPDATE命令之前,您是否已將QuotePrefix和QuoteSuffix添加到您的OleDbCommandBuilder中? – Steve 2015-04-06 13:49:40

+0

我沒有,我在哪裏添加這個? – Hector122 2015-04-06 13:56:37