【问题标题】:I want to update my access database in my vb.net but always getting error我想在我的 vb.net 中更新我的访问数据库,但总是出错
【发布时间】:2015-04-28 13:08:04
【问题描述】:

这是我的代码

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

然后显示此消息:

不支持为 UpdateCommand 生成动态 SQL 一个不返回任何键列信息的 SelectCommand

高亮部分是

da.Update(ds, "ProductDatabase")

【问题讨论】:

    标签: vb.net ms-access


    【解决方案1】:

    假设 BARCODE 实际上是您正在编辑的表的主键,请尝试将 [ 和 ] 放在两个单词字段名称周围,例如“[PRODUCT NAME]”。

    【讨论】:

    • 谢谢@BCole。最后我通过添加这些代码成功地将 BARCODE 作为我的主键:Dim dColumn() As DataColumn = {ds.Tables("ProductDatabase").Columns("BARCODE")} ds.Tables("ProductDatabase").PrimaryKey = dColumn 但我又遇到了 1 个问题。当我运行我的程序时,它显示以下消息:Column 'BARCODE' is constrained to be unique. Value '8993027133205' is already present你知道这是什么吗?
    • 您的表的主键必须是唯一的。与其在代码中定义它,不如编辑表格并将其设为主键。您的代码将自动获取它。如果您不能拥有唯一的条形码,那么您将必须添加一个包含唯一值的列,例如自动编号,并将其作为主键。无论键是什么,在您的选择中包含该字段,以便更新工作。
    • 哇这对我来说真的很管用。程序正在运行。正如你所说,我将自动编号作为我的主键。但是,当我通过单击 edit_button 编辑数据时,我的数据库根本没有更新。你能帮帮我吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2021-08-19
    相关资源
    最近更新 更多