Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何在我刚刚创建的DataTable中使用DataRow更新Access表?_Vb.net_Oledb - Fatal编程技术网

Vb.net 如何在我刚刚创建的DataTable中使用DataRow更新Access表?

Vb.net 如何在我刚刚创建的DataTable中使用DataRow更新Access表?,vb.net,oledb,Vb.net,Oledb,我在下面的代码中创建行,然后将其添加到上面创建的名为dtChg的数据表中 sSql = "SELECT * FROM tblTicketChanges" Dim dtChg As DataTable = CreateDataTable(sSql, con) 有没有一种方法可以在不使用sql insert语句的情况下使用datatable dtChg更新或插入Access表?或者不使用sql语句就将新行添加到Access表中的方法?我使用OleDbCommandBUilder

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

sSql = "SELECT * FROM tblTicketChanges"
Dim dtChg As DataTable = CreateDataTable(sSql, con)

有没有一种方法可以在不使用sql insert语句的情况下使用datatable dtChg更新或插入Access表?或者不使用sql语句就将新行添加到Access表中的方法?

我使用OleDbCommandBUilder实现了这一点:

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
我要补充的是,我必须对数据集进行尺寸标注,并且我还将数据表命名为“Changes”。
我不太清楚CommandBUilder到底是怎么回事,但它似乎相当强大。正在阅读。

阅读数据适配器。隐藏插入/更新/选择的实现您可能会从阅读中受益。
  Dim Builder As OleDbCommandBuilder = New OleDbCommandBuilder(da2)
            Builder.GetUpdateCommand()
            da2.UpdateCommand = Builder.GetUpdateCommand()
            da2.Update(ds, "Changes")