【问题标题】:How can I update an Access table with a DataRow in a DataTable I just created?如何使用刚刚创建的 DataTable 中的 DataRow 更新 Access 表?
【发布时间】:2021-05-13 23:10:58
【问题描述】:
sSql = "SELECT * FROM tblTicketChanges"
Dim dtChg As DataTable = CreateDataTable(sSql, con)

我在下面的代码中创建了行,然后将其添加到上面创建的名为 dtChg 的数据表中。

Public Sub ADOSave2ChangeList(ByRef dt As DataTable, ByRef sFld As String, ByRef sNewValu As String, ByRef sOldValu As String, ByRef sTicketNo As String, ByRef sQualifier As String, ByRef sUser As String, ByRef dDate As Date, ByRef varTime As Date)
    Dim r As DataRow = dt.NewRow                                                            ' Add new change record

    r("ChangeTime") = String.Format("{0:MM/dd/yyyy} {1:hh:mm:ss}", dDate, varTime)    ' Change date and time
    r("Division") = gDiv                                                              ' Division number
    r("Location") = gLocation                                                         ' Location id
    r("TicketNo") = sTicketNo                                                         ' Ticket number
    r("Qualifier") = NoNull(sQualifier)                                               ' Qualifier
    r("FieldName") = sFld                                                             ' Name of field that changed
    r("OriginalValue") = sOldValu                                                     ' Original value
    r("NewValue") = sNewValu                                                          ' New value
    r("ChangedByUser") = sUser                                                        ' User id

    Debug.WriteLine(String.Join(" ", r.ItemArray))

    dt.Rows.Add(r)                                                                          ' Save changes

    gChanged = True                                                                                 ' Flag that change happened
End Sub

有没有办法在没有 sql 插入语句的情况下使用数据表 dtChg 更新或插入 Access 表?还是一种不使用 sql 语句将新行添加到 Access 表的方法?

【问题讨论】:

  • 阅读数据适配器。隐藏插入/更新/选择的实现
  • 阅读this可能会让您受益。

标签: vb.net oledb


【解决方案1】:

我使用 OleDbCommandBUilder 让它工作:

  Dim Builder As OleDbCommandBuilder = New OleDbCommandBuilder(da2)
            Builder.GetUpdateCommand()
            da2.UpdateCommand = Builder.GetUpdateCommand()
            da2.Update(ds, "Changes")

我要补充一点,我必须标注一个 DataSet,并且我还将 DataTable 命名为“Changes”。 我不太确定 CommandBUilder 发生了什么,但它似乎非常强大。打算去读一读。

【讨论】:

    猜你喜欢
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 2017-09-04
    相关资源
    最近更新 更多