DataViewRowStateのメンバー(詳細はMSDN DataViewRowState列挙体を参照してください)
DataTable.Selectメッソドでの使用例
Module Module1 Sub main() 'サンプルデータテーブル Dim sampleTable As New DataTable sampleTable.TableName = "SampleTable" sampleTable.Columns.Add("ItemCD", Type.GetType("System.String")) sampleTable.Columns.Add("ItemName", Type.GetType("System.String")) sampleTable.Columns.Add("Price", Type.GetType("System.Double")) sampleTable.Rows.Add("001", "商品001", 110) sampleTable.Rows.Add("002", "商品002", 120) sampleTable.Rows.Add("003", "商品003", 130) sampleTable.Rows.Add("004", "商品004", 140) sampleTable.Rows.Add("005", "商品005", 150) sampleTable.Rows.Add("006", "商品006", 160) sampleTable.Rows.Add("007", "商品007", 170) sampleTable.Rows.Add("008", "商品008", 180) sampleTable.Rows.Add("009", "商品009", 190) 'テーブルの変更をコミット‥DataRowをAdded→Modifiedへ sampleTable.AcceptChanges() 'データを変更 sampleTable.Rows(0)("Price") = 510 sampleTable.Rows(3)("Price") = 530 'データを削除 sampleTable.Rows(1).Delete() sampleTable.Rows(4).Delete() 'データを追加 sampleTable.Rows.Add("010", "商品020", 200) sampleTable.Rows.Add("011", "商品020", 210) '変更された行 Console.WriteLine("--- 変更された行 ---") Dim rws() As DataRow = sampleTable.Select(Nothing, Nothing, DataViewRowState.ModifiedCurrent) For i = 0 To rws.Length - 1 Console.WriteLine(rws(i)("ItemCD").ToString & " " & rws(i)("ItemName").ToString & " " & rws(i)("Price").ToString) Next '変更された行の元の値 Console.WriteLine("--- 変更された行の元の値 ---") rws = sampleTable.Select(Nothing, Nothing, DataViewRowState.ModifiedOriginal) For i = 0 To rws.Length - 1 Console.WriteLine(rws(i)("ItemCD").ToString & " " & rws(i)("ItemName").ToString & " " & rws(i)("Price").ToString) Next '削除された行の元の値 Console.WriteLine("--- 削除された行の元の値 ---") rws = sampleTable.Select(Nothing, Nothing, DataViewRowState.Deleted) For i = 0 To rws.Length - 1 Console.WriteLine(rws(i)("ItemCD", DataRowVersion.Original).ToString & " " & _ rws(i)("ItemName", DataRowVersion.Original).ToString & " " & rws(i)("Price", DataRowVersion.Original).ToString) Next '追加された行 Console.WriteLine("--- 追加された行の表示 ---") rws = sampleTable.Select(Nothing, Nothing, DataViewRowState.Added) For i = 0 To rws.Length - 1 Console.WriteLine(rws(i)("ItemCD").ToString & " " & rws(i)("ItemName").ToString & " " & rws(i)("Price").ToString) Next '変更されてない行 Console.WriteLine("--- 変更されてない行 ---") rws = sampleTable.Select(Nothing, Nothing, DataViewRowState.Unchanged) For i = 0 To rws.Length - 1 Console.WriteLine(rws(i)("ItemCD").ToString & " " & rws(i)("ItemName").ToString & " " & rws(i)("Price").ToString) Next End Sub End Module
実行結果 |
※DataTable.SelectメソッドでのModifiedOriginalは変更後の値が表示されるようです。
DataViewでの使用例
Module Module1 Sub Main() 'サンプルデータテーブル Dim sampleTable As New DataTable sampleTable.TableName = "SampleTable" sampleTable.Columns.Add("ItemCD", Type.GetType("System.String")) sampleTable.Columns.Add("ItemName", Type.GetType("System.String")) sampleTable.Columns.Add("Price", Type.GetType("System.Double")) sampleTable.Rows.Add("001", "商品001", 110) sampleTable.Rows.Add("002", "商品002", 120) sampleTable.Rows.Add("003", "商品003", 130) sampleTable.Rows.Add("004", "商品004", 140) sampleTable.Rows.Add("005", "商品005", 150) sampleTable.Rows.Add("006", "商品006", 160) sampleTable.Rows.Add("007", "商品007", 170) sampleTable.Rows.Add("008", "商品008", 180) sampleTable.Rows.Add("009", "商品009", 190) 'テーブルの変更をコミット‥DataRowをAdded→Modifiedへ sampleTable.AcceptChanges() 'データを変更 sampleTable.Rows(0)("Price") = 510 sampleTable.Rows(3)("Price") = 530 'データを削除 sampleTable.Rows(1).Delete() sampleTable.Rows(4).Delete() 'データを追加 sampleTable.Rows.Add("010", "商品020", 200) sampleTable.Rows.Add("011", "商品020", 210) '変更された行 Console.WriteLine("--- 変更された行 ---") Dim dv As New DataView(sampleTable) dv.RowStateFilter = DataViewRowState.ModifiedCurrent For i = 0 To dv.Count - 1 Console.WriteLine(dv(i)("ItemCD").ToString & " " & dv(i)("ItemName").ToString & " " & dv(i)("Price").ToString) Next '変更された行の元の値 Console.WriteLine("--- 変更された行の元の値 ---") dv.RowStateFilter = DataViewRowState.ModifiedOriginal For i = 0 To dv.Count - 1 Console.WriteLine(dv(i)("ItemCD").ToString & " " & dv(i)("ItemName").ToString & " " & dv(i)("Price").ToString) Next '削除された行の元の値 Console.WriteLine("--- 削除された行の元の値 ---") dv.RowStateFilter = DataViewRowState.Deleted For i = 0 To dv.Count - 1 Console.WriteLine(dv(i)("ItemCD").ToString & " " & _ dv(i)("ItemName").ToString & " " & dv(i)("Price").ToString) Next '追加された行 Console.WriteLine("--- 追加された行の表示 ---") dv.RowStateFilter = DataViewRowState.Added For i = 0 To dv.Count - 1 Console.WriteLine(dv(i)("ItemCD").ToString & " " & dv(i)("ItemName").ToString & " " & dv(i)("Price").ToString) Next '変更されてない行 Console.WriteLine("--- 変更されてない行 ---") dv.RowStateFilter = DataViewRowState.Unchanged For i = 0 To dv.Count - 1 Console.WriteLine(dv(i)("ItemCD").ToString & " " & dv(i)("ItemName").ToString & " " & dv(i)("Price").ToString) Next End Sub End Module
実行結果 |
使用例はコンソールアプリケーションです。
VisualStudioの「新しいプロジェクト」から「コンソールアプリケーション」を選択しMain関数内にコードを記述します。
Ctrl+F5キーで実行します。
0 件のコメント:
コメントを投稿