ラベル DataView の投稿を表示しています。 すべての投稿を表示
ラベル DataView の投稿を表示しています。 すべての投稿を表示

2013年12月15日日曜日

【VB.NET】DataViewRowStateで行の状態での抽出

DataViewRowStateを条件指定して行の状態で行を抽出します。

DataViewRowStateのメンバー(詳細はMSDN DataViewRowState列挙体を参照してください)
メンバー名説明
Added新しい行。
Deleted削除された行。
ModifiedCurrent変更された元のデータの現在のバージョン(ModifiedOriginalを参照)。
ModifiedOriginal変更されたデータの元のバージョン(データは変更されても、ModifiedCurrentとして利用可能です)。
Unchanged変更されていない行。

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キーで実行します。


2013年11月27日水曜日

【VB.NET】DataView.ToTable 抽出した行から新しいDataTableを作成

DataViewのToTableで抽出した行を基に新しいDataTableを作成します。

  • DataView.ToTable()
    DataViewで抽出した行を基に新しいDataTableを作成します。
  • DataView.ToTable(TableName)
    DataViewで抽出した行を基に新しいテーブル名でDataTableを作成します。
      TableName‥新しいテーブル名
  • DataView.ToTable(Distinct,ColumnName())
    DataViewで抽出した行を基に重複した行を排除し新しいDataTableを作成します。
      DistinctTrue:重複した行を排除する False
    重複した行を排除しない
      ColumnName()‥新しいテーブルに含まれる列名の配列
  • DataView.ToTable(TableName,Distinct,ColumnName())
    DataViewで抽出した行を基に重複した行を排除し新しい名前でDataTableを作成します。
      TableName‥新しいテーブル名
      DistinctTrue:重複した行を排除する False
    重複した行を排除しない
      ColumnName()‥新しいテーブルに含まれる列名の配列
以下使用例です。
フォームにコントロールを配置
Public Class Form1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'サンプルデータテーブル
        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.Columns.Add("UnitSales", Type.GetType("System.Double"))
        sampleTable.Columns.Add("SalesAmount", Type.GetType("System.Double"))
 
        sampleTable.Rows.Add("001", "商品001", 100, 8, 100 * 8)
        sampleTable.Rows.Add("003", "商品003", 130, 5, 130 * 5)
        sampleTable.Rows.Add("001", "商品001", 100, 3, 100 * 3)
        sampleTable.Rows.Add("002", "商品002", 120, 6, 120 * 6)
        sampleTable.Rows.Add("002", "商品002", 120, 5, 120 * 5)
        sampleTable.Rows.Add("003", "商品003", 130, 7, 130 * 7)
        sampleTable.Rows.Add("003", "商品003", 130, 1, 130 * 1)
        sampleTable.Rows.Add("002", "商品002", 120, 3, 120 * 3)
        sampleTable.Rows.Add("001", "商品001", 100, 9, 100 * 9)
 
        'SampleTableの表示
        Me.DataGridView1.DataSource = sampleTable
 
        'DataViewを設定
        Dim dv As New DataView(sampleTable)
 
        '行を抽出
        dv.RowFilter = "ItemCD = '001' Or ItemCD = '003'"
 
        'DataViewを表示
        Me.DataGridView1.DataSource = dv
 
        '抽出された行で新しいDataTableを作成
        Dim newTable1 As DataTable = dv.ToTable()
        Me.DataGridView2.DataSource = newTable1
 
        '列を指定し重複した行の排除なしで新しいDataTableを作成
        Dim newTable2 As DataTable = dv.ToTable(False, "ItemCD")
        Me.DataGridView3.DataSource = newTable2
 
        '列を指定し重複した行を排除して新しい名前のDataTableを作成
        Dim newTable3 As DataTable = dv.ToTable("NewTable", True, "ItemCD", "ItemName")
        Me.DataGridView4.DataSource = newTable3
 
    End Sub
End Class
実行結果

2013年11月21日木曜日

【VB.NET】DataTableの並び替え

DataTableの行の抽出の引数またはプロパティに["列名 ソート方向"]を設定する。
ソート方向 ASC(省略可)‥昇順
        DESC‥降順

DataTable.Selectメソッドを使っての並び替え
Module Module1
 
    Sub Main()
        'サンプルデータテーブル
        Dim dt As New DataTable
        dt.Columns.Add("NO", Type.GetType("System.Double"))
        dt.Columns.Add("CATEGORY1", Type.GetType("System.String"))
        dt.Columns.Add("NAME", Type.GetType("System.String"))
        dt.Columns.Add("VAL1", Type.GetType("System.Double"))
 
        dt.Rows.Add("0", "分類00", "名前0000", 15)
        dt.Rows.Add("1", "分類00", "名前0001", 23)
        dt.Rows.Add("2", "分類00", "名前0002", 75)
        dt.Rows.Add("3", "分類00", "名前0003", 0)
        dt.Rows.Add("4", "分類00", "名前0004", 69)
        dt.Rows.Add("5", "分類00", "名前0005", 45)
        dt.Rows.Add("6", "分類01", "名前0100", 96)
        dt.Rows.Add("7", "分類01", "名前0101", 12)
        dt.Rows.Add("8", "分類01", "名前0102", 69)
        dt.Rows.Add("9", "分類01", "名前0103", 2)
        dt.Rows.Add("10", "分類01", "名前0104", 2)
        dt.Rows.Add("11", "分類01", "名前0105", 18)
        dt.Rows.Add("12", "分類02", "名前0200", 8)
        dt.Rows.Add("13", "分類02", "名前0201", 72)
        dt.Rows.Add("14", "分類02", "名前0202", 95)
        dt.Rows.Add("15", "分類02", "名前0203", 55)
        dt.Rows.Add("16", "分類02", "名前0204", 22)
        dt.Rows.Add("17", "分類02", "名前0205", 99)
        dt.Rows.Add("18", "分類03", "名前0300", 74)
        dt.Rows.Add("19", "分類03", "名前0301", 51)
        dt.Rows.Add("20", "分類03", "名前0302", 68)
        dt.Rows.Add("21", "分類03", "名前0303", 18)
        dt.Rows.Add("22", "分類03", "名前0304", 99)
        dt.Rows.Add("23", "分類03", "名前0305", 37)
 
        'データを抽出
        Dim rws() As DataRow = dt.Select("CATEGORY1 = '分類02'", "VAL1 ASC")
 
        '抽出したデータを出力
        For i = 0 To rws.Count - 1
            Dim str As String = Nothing
            For j = 0 To dt.Columns.Count - 1
                str = str & rws(i)(j).ToString & " "
            Next
            Console.WriteLine(str)
        Next
    End Sub
 
End Module
実行結果
DataViewを使っての並び替え
Module Module1
 
    Sub Main()
        'サンプルデータテーブル
        Dim dt As New DataTable
        dt.Columns.Add("NO", Type.GetType("System.Double"))
        dt.Columns.Add("CATEGORY1", Type.GetType("System.String"))
        dt.Columns.Add("NAME", Type.GetType("System.String"))
        dt.Columns.Add("VAL1", Type.GetType("System.Double"))
 
        dt.Rows.Add("0", "分類00", "名前0000", 15)
        dt.Rows.Add("1", "分類00", "名前0001", 23)
        dt.Rows.Add("2", "分類00", "名前0002", 75)
        dt.Rows.Add("3", "分類00", "名前0003", 0)
        dt.Rows.Add("4", "分類00", "名前0004", 69)
        dt.Rows.Add("5", "分類00", "名前0005", 45)
        dt.Rows.Add("6", "分類01", "名前0100", 96)
        dt.Rows.Add("7", "分類01", "名前0101", 12)
        dt.Rows.Add("8", "分類01", "名前0102", 69)
        dt.Rows.Add("9", "分類01", "名前0103", 2)
        dt.Rows.Add("10", "分類01", "名前0104", 2)
        dt.Rows.Add("11", "分類01", "名前0105", 18)
        dt.Rows.Add("12", "分類02", "名前0200", 8)
        dt.Rows.Add("13", "分類02", "名前0201", 72)
        dt.Rows.Add("14", "分類02", "名前0202", 95)
        dt.Rows.Add("15", "分類02", "名前0203", 55)
        dt.Rows.Add("16", "分類02", "名前0204", 22)
        dt.Rows.Add("17", "分類02", "名前0205", 99)
        dt.Rows.Add("18", "分類03", "名前0300", 74)
        dt.Rows.Add("19", "分類03", "名前0301", 51)
        dt.Rows.Add("20", "分類03", "名前0302", 68)
        dt.Rows.Add("21", "分類03", "名前0303", 18)
        dt.Rows.Add("22", "分類03", "名前0304", 99)
        dt.Rows.Add("23", "分類03", "名前0305", 37)
 
        'データを抽出
        Dim dv As New DataView(dt)
        dv.RowFilter = "CATEGORY1 = '分類03'"
        '並び替え
        dv.Sort = "VAL1 ASC"
 
        '抽出したデータを出力
        For i = 0 To dv.Count - 1
            Dim str As String = Nothing
            For j = 0 To dv.Table.Columns.Count - 1
                str = str & dv(i)(j).ToString & " "
            Next
            Console.WriteLine(str)
        Next
    End Sub
 
End Module
実行結果
BindingSourceを使っての並び替え
 フォームにDataGridView、BindingSourceを配置する
Public Class Form1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        'サンプルデータテーブル
        Dim dt As New DataTable
        dt.Columns.Add("NO", Type.GetType("System.Double"))
        dt.Columns.Add("CATEGORY1", Type.GetType("System.String"))
        dt.Columns.Add("NAME", Type.GetType("System.String"))
        dt.Columns.Add("VAL1", Type.GetType("System.Double"))
 
        dt.Rows.Add("0", "分類00", "名前0000", 15)
        dt.Rows.Add("1", "分類00", "名前0001", 23)
        dt.Rows.Add("2", "分類00", "名前0002", 75)
        dt.Rows.Add("3", "分類00", "名前0003", 0)
        dt.Rows.Add("4", "分類00", "名前0004", 69)
        dt.Rows.Add("5", "分類00", "名前0005", 45)
        dt.Rows.Add("6", "分類01", "名前0100", 96)
        dt.Rows.Add("7", "分類01", "名前0101", 12)
        dt.Rows.Add("8", "分類01", "名前0102", 69)
        dt.Rows.Add("9", "分類01", "名前0103", 2)
        dt.Rows.Add("10", "分類01", "名前0104", 2)
        dt.Rows.Add("11", "分類01", "名前0105", 18)
        dt.Rows.Add("12", "分類02", "名前0200", 8)
        dt.Rows.Add("13", "分類02", "名前0201", 72)
        dt.Rows.Add("14", "分類02", "名前0202", 95)
        dt.Rows.Add("15", "分類02", "名前0203", 55)
        dt.Rows.Add("16", "分類02", "名前0204", 22)
        dt.Rows.Add("17", "分類02", "名前0205", 99)
        dt.Rows.Add("18", "分類03", "名前0300", 74)
        dt.Rows.Add("19", "分類03", "名前0301", 51)
        dt.Rows.Add("20", "分類03", "名前0302", 68)
        dt.Rows.Add("21", "分類03", "名前0303", 18)
        dt.Rows.Add("22", "分類03", "名前0304", 99)
        dt.Rows.Add("23", "分類03", "名前0305", 37)
 
        'BindingSource1のDataSource設定
        Me.BindingSource1.DataSource = dt
 
        'データの抽出
        Me.BindingSource1.Filter = "CATEGORY1 = '分類01'"
 
        'データの並び替え
        Me.BindingSource1.Sort = "VAL1 ASC"
 
        'DataGridView1のDataSource設定
        Me.DataGridView1.DataSource = Me.BindingSource1
 
    End Sub
 
End Class
実行結果

2013年11月17日日曜日

【VB.NET】DataTableの行の抽出

DataTable.Selectメソッドを使っての抽出
Module Module1
 
    Sub Main()
        'サンプルデータテーブル
        Dim dt As New DataTable
        dt.Columns.Add("NO", Type.GetType("System.Double"))
        dt.Columns.Add("CATEGORY1", Type.GetType("System.String"))
        dt.Columns.Add("NAME", Type.GetType("System.String"))
        dt.Columns.Add("VAL1", Type.GetType("System.Double"))
 
        dt.Rows.Add("0", "分類00", "名前0000", 15)
        dt.Rows.Add("1", "分類00", "名前0001", 23)
        dt.Rows.Add("2", "分類00", "名前0002", 75)
        dt.Rows.Add("3", "分類00", "名前0003", 0)
        dt.Rows.Add("4", "分類00", "名前0004", 69)
        dt.Rows.Add("5", "分類00", "名前0005", 45)
        dt.Rows.Add("6", "分類01", "名前0100", 96)
        dt.Rows.Add("7", "分類01", "名前0101", 12)
        dt.Rows.Add("8", "分類01", "名前0102", 69)
        dt.Rows.Add("9", "分類01", "名前0103", 2)
        dt.Rows.Add("10", "分類01", "名前0104", 2)
        dt.Rows.Add("11", "分類01", "名前0105", 18)
        dt.Rows.Add("12", "分類02", "名前0200", 8)
        dt.Rows.Add("13", "分類02", "名前0201", 72)
        dt.Rows.Add("14", "分類02", "名前0202", 95)
        dt.Rows.Add("15", "分類02", "名前0203", 55)
        dt.Rows.Add("16", "分類02", "名前0204", 22)
        dt.Rows.Add("17", "分類02", "名前0205", 99)
        dt.Rows.Add("18", "分類03", "名前0300", 74)
        dt.Rows.Add("19", "分類03", "名前0301", 51)
        dt.Rows.Add("20", "分類03", "名前0302", 68)
        dt.Rows.Add("21", "分類03", "名前0303", 18)
        dt.Rows.Add("22", "分類03", "名前0304", 99)
        dt.Rows.Add("23", "分類03", "名前0305", 37)
 
        'データを抽出
        Dim rws() As DataRow = dt.Select("CATEGORY1 = '分類02'")
 
        '抽出したデータを出力
        For i = 0 To rws.Count - 1
            Dim str As String = Nothing
            For j = 0 To dt.Columns.Count - 1
                str = str & rws(i)(j).ToString & " "
            Next
            Console.WriteLine(str)
        Next
    End Sub
 
End Module
実行結果
DataViewを使っての抽出
Module Module1
 
    Sub Main()
        'サンプルデータテーブル
        Dim dt As New DataTable
        dt.Columns.Add("NO", Type.GetType("System.Double"))
        dt.Columns.Add("CATEGORY1", Type.GetType("System.String"))
        dt.Columns.Add("NAME", Type.GetType("System.String"))
        dt.Columns.Add("VAL1", Type.GetType("System.Double"))
 
        dt.Rows.Add("0", "分類00", "名前0000", 15)
        dt.Rows.Add("1", "分類00", "名前0001", 23)
        dt.Rows.Add("2", "分類00", "名前0002", 75)
        dt.Rows.Add("3", "分類00", "名前0003", 0)
        dt.Rows.Add("4", "分類00", "名前0004", 69)
        dt.Rows.Add("5", "分類00", "名前0005", 45)
        dt.Rows.Add("6", "分類01", "名前0100", 96)
        dt.Rows.Add("7", "分類01", "名前0101", 12)
        dt.Rows.Add("8", "分類01", "名前0102", 69)
        dt.Rows.Add("9", "分類01", "名前0103", 2)
        dt.Rows.Add("10", "分類01", "名前0104", 2)
        dt.Rows.Add("11", "分類01", "名前0105", 18)
        dt.Rows.Add("12", "分類02", "名前0200", 8)
        dt.Rows.Add("13", "分類02", "名前0201", 72)
        dt.Rows.Add("14", "分類02", "名前0202", 95)
        dt.Rows.Add("15", "分類02", "名前0203", 55)
        dt.Rows.Add("16", "分類02", "名前0204", 22)
        dt.Rows.Add("17", "分類02", "名前0205", 99)
        dt.Rows.Add("18", "分類03", "名前0300", 74)
        dt.Rows.Add("19", "分類03", "名前0301", 51)
        dt.Rows.Add("20", "分類03", "名前0302", 68)
        dt.Rows.Add("21", "分類03", "名前0303", 18)
        dt.Rows.Add("22", "分類03", "名前0304", 99)
        dt.Rows.Add("23", "分類03", "名前0305", 37)
 
        'データを抽出
        Dim dv As New DataView(dt)
        dv.RowFilter = "CATEGORY1 = '分類03'"
 
        '抽出したデータを出力
        For i = 0 To dv.Count - 1
            Dim str As String = Nothing
            For j = 0 To dv.Table.Columns.Count - 1
                str = str & dv(i)(j).ToString & " "
            Next
            Console.WriteLine(str)
        Next
    End Sub
 
End Module
実行結果
BindingSourceを使っての抽出
 フォームにDataGridView、BindingSourceを配置する
Public Class Form1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        'サンプルデータテーブル
        Dim dt As New DataTable
        dt.Columns.Add("NO", Type.GetType("System.Double"))
        dt.Columns.Add("CATEGORY1", Type.GetType("System.String"))
        dt.Columns.Add("NAME", Type.GetType("System.String"))
        dt.Columns.Add("VAL1", Type.GetType("System.Double"))
 
        dt.Rows.Add("0", "分類00", "名前0000", 15)
        dt.Rows.Add("1", "分類00", "名前0001", 23)
        dt.Rows.Add("2", "分類00", "名前0002", 75)
        dt.Rows.Add("3", "分類00", "名前0003", 0)
        dt.Rows.Add("4", "分類00", "名前0004", 69)
        dt.Rows.Add("5", "分類00", "名前0005", 45)
        dt.Rows.Add("6", "分類01", "名前0100", 96)
        dt.Rows.Add("7", "分類01", "名前0101", 12)
        dt.Rows.Add("8", "分類01", "名前0102", 69)
        dt.Rows.Add("9", "分類01", "名前0103", 2)
        dt.Rows.Add("10", "分類01", "名前0104", 2)
        dt.Rows.Add("11", "分類01", "名前0105", 18)
        dt.Rows.Add("12", "分類02", "名前0200", 8)
        dt.Rows.Add("13", "分類02", "名前0201", 72)
        dt.Rows.Add("14", "分類02", "名前0202", 95)
        dt.Rows.Add("15", "分類02", "名前0203", 55)
        dt.Rows.Add("16", "分類02", "名前0204", 22)
        dt.Rows.Add("17", "分類02", "名前0205", 99)
        dt.Rows.Add("18", "分類03", "名前0300", 74)
        dt.Rows.Add("19", "分類03", "名前0301", 51)
        dt.Rows.Add("20", "分類03", "名前0302", 68)
        dt.Rows.Add("21", "分類03", "名前0303", 18)
        dt.Rows.Add("22", "分類03", "名前0304", 99)
        dt.Rows.Add("23", "分類03", "名前0305", 37)
 
        'BindingSource1のDataSource設定
        Me.BindingSource1.DataSource = dt
 
        'データの抽出
        Me.BindingSource1.Filter = "CATEGORY1 = '分類01'"
 
        'DataGridView1のDataSource設定
        Me.DataGridView1.DataSource = Me.BindingSource1
 
    End Sub
 
End Class
実行結果