Web Listing 7: Updating the Hierarchical DataSet Private Sub UpdateHierarchy() Using TransScope As New System.Transactions.TransactionScope Try ' Add parents first, then children ' Delete children first, then parents ' Use the Select method to return an array ' of rows to be updated or added Dim dtCust As CustomerDataSet.GetCustomersByStateDataTable = _ Me.CustomerDataSet.Tables("GetCustomersByState") ' Add or change first tier parent (Customers) Me.GetCustomersByStateTableAdapter.Update(dtCust.Select("", "", _ DataViewRowState.Added Or _ DataViewRowState.ModifiedCurrent)) ' Add or change second tier parent (Orders) Dim dtOrder As _ CustomerDataSet.GetOrdersByCustomerDataTable = _ CustomerDataSet.Tables("GetOrdersByCustomer") Me.GetOrdersByCustomerTableAdapter.Update(dtOrder.Select("", "", _ DataViewRowState.Added Or _ DataViewRowState.ModifiedCurrent)) ' Now Add, Change or Delete third-tier children Dim dtItems As _ CustomerDataSet.GetItemsByCustomerOrderDataTable = _ Me.CustomerDataSet.Tables("GetItemsByCustomerOrder") Me.GetItemsByCustomerOrderTableAdapter.Update(dtItems) ' Now it's safe to delete the second-tier children (parents to third tier) (Orders) Me.GetOrdersByCustomerTableAdapter.Update(dtOrder.Select("", "", _ DataViewRowState.Deleted)) ' Now it's safe to delete the parent (Customers) Me.GetCustomersByStateTableAdapter.Update(dtCust.Select("", "", _ DataViewRowState.Deleted)) TransScope.Complete() MsgBox("Update succeeded...") Catch ex As Exception MsgBox(ex.ToString) End Try End Using End Sub