2015-04-28 46 views
0

這裏是我的代碼我想在我的vb.net來更新我的訪問數據庫,但總是得到錯誤

Private Sub ButtonEdit_Click(sender As Object, e As EventArgs) Handles ButtonEdit.Click Dim cb As New OleDb.OleDbCommandBuilder(da) cb.QuotePrefix = "[" cb.QuoteSuffix = "]"

ds.Tables("ProductDatabase").Rows(inc).Item("BARCODE") = TextBoxBarcode.Text 
    ds.Tables("ProductDatabase").Rows(inc).Item("PRODUCT NAME") = TextBoxProductName.Text 
    ds.Tables("ProductDatabase").Rows(inc).Item("PRINCIPAL") = TextBoxPrincipal.Text 
    ds.Tables("ProductDatabase").Rows(inc).Item("BUYING PRICE") = TextBoxBuying.Text 
    ds.Tables("ProductDatabase").Rows(inc).Item("SELLING PRICE") = TextBoxSelling.Text 

    da.Update(ds, "ProductDatabase") 
    MsgBox("Data successfully edited.") 

然後顯示此消息:

動態SQL生成UpdateCommand不支持 SelectCommand不返回任何鍵列信息

和highlght部分

da.Update(ds, "ProductDatabase")

回答

0

假設BARCODE實際上是你正在編輯的表的主鍵,可以嘗試在[和]圍繞兩個詞場的名稱,如「[產品名稱] 」。

+0

謝謝@BCole。最後,我成功地通過添加這些代碼使BARCODE成爲我的主鍵:Dim dColumn()As DataColumn = {ds.Tables(「ProductDatabase」)。Column(「BARCODE」)} 012s.dll表(「ProductDatabase」)。PrimaryKey = dColumn'但我又遇到了1個問題。當我運行我的程序時,它顯示了以下消息:「列'BARCODE'被限制爲唯一的。價值'8993027133205'已經存在了'你知道這是什麼嗎? –

+0

您的表格的主鍵必須是唯一的。而不是在代碼中定義它,編輯表並將其作爲主鍵。你的代碼會自動接受它。如果您不能擁有唯一的條形碼,那麼您將不得不添加一個包含唯一值的列,如自動編號,並將其作爲主鍵。無論關鍵是什麼,請在您的選擇中包含該字段,以便更新正常工作。 – BCole

+0

哇它真的適合我。該程序正在運行。正如你所說,我做了一個自動編號作爲我的主鍵。但是,當我通過單擊edit_button編輯數據時,我的數據庫根本沒有更新。你可以幫我嗎? –

相關問題