Vb.net 当用新行传递DataRow集合时,更新记录需要有效的InsertCommand

Vb.net 当用新行传递DataRow集合时,更新记录需要有效的InsertCommand,vb.net,ms-access,Vb.net,Ms Access,我正试图将表单中的数据添加回Access表,但我一直收到这样一条错误消息:“当用新行传递DataRow集合时,更新需要有效的InsertCommand。”而在我的一生中,我无法确定我需要做什么 这是用来更新记录的点击按钮的代码 公共阶级秩序 Dim CLIENTORDER连接作为新OleDb.OleDb连接 Dim Provider As String Dim dbSource As String Dim sqlQuery As String Dim dsClientOrder As New

我正试图将表单中的数据添加回Access表,但我一直收到这样一条错误消息:“当用新行传递DataRow集合时,更新需要有效的InsertCommand。”而在我的一生中,我无法确定我需要做什么

这是用来更新记录的点击按钮的代码

公共阶级秩序

Dim CLIENTORDER连接作为新OleDb.OleDb连接

Dim Provider As String
Dim dbSource As String
Dim sqlQuery As String

Dim dsClientOrder As New DataSet
Dim daClientOrder As New OleDb.OleDbDataAdapter
Dim dtOrders As New Data.DataTable
Dim Booking As New ArrayList



Dim RowNumber As Integer
Dim Counter As Integer = 0
Dim NumberOfRows As Integer
私有子订单加载(ByVal发送方作为System.Object,ByVal e作为System.EventArgs)处理MyBase.Load

    Provider = "PROVIDER=Microsoft.ACE.OLEDB.12.0;"
    dbSource = "Data Source = A2ComputingDatabase.accdb"

    ClientOrderConnection.ConnectionString = Provider & dbSource

    ClientOrderConnection.Open()

    sqlQuery = "SELECT * FROM TblClientOrder"

    daClientOrder = New OleDb.OleDbDataAdapter(sqlQuery, ClientOrderConnection)

    daClientOrder.Fill(dsClientOrder, "ClientOrder")

    ClientOrderConnection.Close()

    NumberOfRows = dsClientOrder.Tables("ClientOrder").Rows.Count
私有子btnSubmit\u Click(发送者作为System.Object,e作为System.EventArgs)处理btnSubmit。Click

    If RowNumber <> -1 Then

        Dim cbClientOrder As New OleDb.OleDbCommandBuilder
        Dim dsClientNewRow As DataRow




        dsClientNewRow = dsClientOrder.Tables("ClientOrder").NewRow()

        dsClientNewRow.Item("ClientOrderNumber") = txtOrderNo.Text
        dsClientNewRow.Item("ClientTelNo") = txtClientTelNo.Text

        dsClientOrder.Tables("ClientOrder").Rows.Add(dsClientNewRow)

        daClientOrder.Update(dsClientOrder, "ClientOrder")


        MsgBox("New Reocrd added to the Database")
    End If



End Sub
如果行数为-1,则
Dim cbClientOrder作为新的OleDb.OleDbCommandBuilder
将dsClientNewRow设置为数据行
dsClientNewRow=dsClientOrder.Tables(“ClientOrder”).NewRow()
dsClientNewRow.Item(“ClientOrderNumber”)=txtOrderNo.Text
dsClientNewRow.Item(“ClientTelNo”)=txtClientTelNo.Text
dsClientOrder.Tables(“ClientOrder”).Rows.Add(dsClientNewRow)
daClientOrder.Update(dsClientOrder,“ClientOrder”)
MsgBox(“添加到数据库的新Reocrd”)
如果结束
端接头

非常感谢您的帮助,提前谢谢

您实际上必须从DataAdapter实例化OledbCommandBuilder:

cbClientOrder = New OleDb.OleDbCommandBuilder(daClientOrder)

使用DataAdapter调暗cbClientOrder,然后将其放在daClientOrder.Fill()调用之后的某个位置,这样就可以开始了。当然,在您的btnSubmit_Click事件中,要去掉cbClientOrder的另一个声明。

您实际上必须从数据适配器实例化OledbCommandBuilder:

cbClientOrder = New OleDb.OleDbCommandBuilder(daClientOrder)
使用DataAdapter调暗cbClientOrder,然后将其放在daClientOrder.Fill()调用之后的某个位置,这样就可以开始了。当然,在您的btnSubmit_Click事件中,要去掉cbClientOrder的另一个声明