ホーム > SQL Server, VB.NET, コンピュータ, データベース > VB.NET Tips DataTableの行を削除する

VB.NET Tips DataTableの行を削除する

2009 年 8 月 16 日

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

SQL Server, VB.NET, コンピュータ, データベース , , , , , , ,

  1. コメントはまだありません。
  1. トラックバックはまだありません。