VB.NET Tips DataTableの行を削除する
photo by letgoandletsgo
ADO.Netで、DataTable(データテーブル)内の行を削除するには、2通りのやり方があります。
- Removeメソッドを呼び出し、行そのものを削除
- Deleteメソッドを呼び出し、行のRowStateにDeleteマークをつける
DataAdapter(データアダプター)を使用して、一旦DataTable(データテーブル)内から行を削除するが後で、Updateする場合、Removeメソッドを使用して行そのものを削除してしまうと、どの行が削除されたのかをデータソースへ反映することが出来なくなります。
そのため、Updateを使用する場合はDeleteメソッドを呼び出し、RowStateにDeleteマークをつけておき、Getchangesを使用して、DataTableから更新内容に変化があったものを取得し、RowStateがDeleteのものをデータソースから削除する必要があります。
Dim Row() As DataRow Dim hoge_id as integer = 1 '削除該当レコードを選択するID値を指定 Dim expression As String = "hoge_id = " & hoge_id Row = DataS.Tables("hoge").Select(expression) Dim DRow As DataRow Dim RowIndex As Integer RowIndex = DataS.Tables("hoge").Rows.IndexOf(Row(0)) 'Deleteマークをつける DataS.Tables("hoge").Rows(RowIndex).Delete() Dim changeTable As DataTable = DataS.Tables("hoge").GetChanges() If Not IsNothing(changeTable) Then For Each changeRow In changeTable.Rows '削除処理 If changeRow.RowState = DataRowState.Deleted Then DataA.Update(DataS.Tables("hoge")) End If Next changeRow DataS.Tables("cust").AcceptChanges() End If
関連するエントリー
- None Found