当前位置: 首页 > 知识库问答 >
问题:

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

丘学海
2023-03-14

我试图将表单中的数据添加回Access表,但我一直收到以下错误消息:

当用新行传递DataRow集合时,更新需要有效的InsertCommand。

就我的一生而言,我不知道我需要做什么。

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

Public Class Orders

    Dim ClientOrderConnection As New OleDb.OleDbConnection

    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

    Private Sub Orders_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 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


    Private Sub btnSubmit_Click(sender As System.Object, e As System.EventArgs) Handles 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个答案

陆臻
2023-03-14

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

cbClientOrder = New OleDb.OleDbCommandBuilder(daClientOrder)

数据适配器调暗cbClientOrder,然后将其放在daClientOrder后面的某个位置。打个电话,你就可以走了。当然,在你的btnSubmit_Click事件中,要去掉另一个cbClientOrder声明。

 类似资料:
  • 我正在寻找最无痛的方式来过滤收藏。我在想 但我不确定从过滤器到返回或填充另一个集合的最佳方式。大多数例子看起来像是“在这里你可以打印”。可能我缺少一个构造函数或输出方法。

  • 我使用struts2和hibernate创建了一个应用程序,该应用程序将excel文件上传到数据库中,并执行其他CRUD操作。然而,现在出现了一个更改要求,用户应该能够从UI控制数据库模式,这意味着每当excel文件在数据库中有新列时,用户应该能够通过用户界面动态添加新列。 我不知道如何才能做到这一点,因为更新数据库仍将保持实体类不变。 为了说明这个问题,请考虑以下情况:我有一个员工的ab exc

  • 更新记录 V2.0.0 加入寄存器运行模式,可大幅提升热更内数值计算性能 执行性能整体提升,传统非寄存器模式执行效率也得到一定幅度提升 修正热更内finnaly块在一些情况下不正确的bug,连带修复了yield return和async/await的一些异常情况 修正值对类型绑定后的数组进行操作时的异常 修正热更内Enum一些情况下Equals结果错误的bug 修正跨域继承接口时的一些异常情况 修

  •  版本更新记录 2016.09.10 1) 底层组件-新增时间处理集合 2016.09.5 1) 底层组件-优化防刷 2) 底层组件-错误监控 2) 底层组件-优化通过类名绑定相关事件 2016.08.25 1) 底层组件-新增百度统计组件 2016.08.11 1) 底层组件-优化udb定制登录,增加QQ登录 2) 活动组件-新增完成任务组件 2016.08.9 1) 活动组件-新增防刷组件

  • 问题内容: 我开发了一个使用GoogleMap的应用程序。我刚刚在Eclipse中更新了Android插件(带有Android L库),并重新导入了GooglePlayService库等。 因此,我重新编译后,在手机(4.4.2中的Sony Xperia Z),GenyMotion Emulator(4.4.2),Nexus 7(4.4.2)上都可以正常工作。但是,它不能在两个Samsung Ga

  • 我正在开发基于Microsoft Azure的应用程序,使用Azure Cosmos触发器从集合中获取更改提要。我在单个集合中嵌套了记录。在UI中,用户可以修改嵌套记录。现在,我的要求是获取有关从UI修改的记录的信息,但cosmos触发器将返回集合中的所有数据,而我希望从嵌套集合中获取单个修改的记录。如果可行,对如何做到这一点有何建议?返回整个集合将花费太多时间来加载UI。