フィルタ
 
        
             データテーブル内に格納されているデータに対してフィルタをかけることができます。この機能により、特定の情報を含む行のみを取り出すということも可能になります。
        
        
             DataTableオブジェクトにはSelect()メソッドがあります。これを使ってフィルタをかけることができます。リファレンスで戻り値を調べてみましょう。DataRow型の配列を用意しておく必要があります。
        
        
             例を挙げましょう。M_ユーザーテーブルの中の氏名列に、「名倉」という情報を持ったレコードを抽出するフィルタを指定しましょう。その場合、
        
        
               [DataTable].Select("氏名 LIKE '名倉'")
        
        
             と、引数を与えることができます。SQL文でのWHERE句の条件を引数としてセットすることにより、フィルタをかけることができます。
        
        
            ○ プロジェクト
        
        
             プロジェクトを作成して確認してみましょう。
        
        
            
                | プロジェクトの種類 | Windows フォーム アプリケーション | 
            
                | プロジェクト名 | FilterTest | 
                        
        
        
            サンプルダウンロード
        
        
            ○ フォームデザイン
        
        
             次の図のようにコントロールを配置してください。
        
        
            
                 
            
            
            コントロールの配置例
        
        
            ○ プログラム
        
        
             次のように各イベントプロシージャを記述してください。
        
        
            Form1.vb
        
        
            
                - 'データテーブルオブジェクトを作成する
- Dim dt As New DataTable
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
-  '接続文字列を作成する
-  Dim con_string As String = _
-   "Data Source=.;AttachDbFilename=C:¥Work¥Books.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
-  'コネクションオブジェクトを作成する
-  Dim con As New SqlClient.SqlConnection(con_string)
-  'SQL文を生成する
-  Dim sql As String = "SELECT * FROM M_ユーザー"
-  'アダプタオブジェクトを作成する
-  Dim ad As New SqlClient.SqlDataAdapter(sql, con)
-  'データテーブルとデータベースを同期させる
-  ad.Fill(dt)
-  'DataGridViewとDataTableを関連付ける
-  Me.DataGridView1.DataSource = dt
- End Sub
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
-  '対象の列を格納する変数
-  Dim data() As DataRow
-  data = dt.Select("氏名 LIKE '" & Me.TextBox1.Text & "'")
-  Me.TextBox2.Text = data(0).Item("ユーザーID")
- End Sub
 
        
            ○ 実行結果
        
        
            
                 
            
            
            実行結果
        
  
        
             Selectメソッドの引数にフィルタを指定します。結果が複数の行のことがありますので、その情報をDataRowの配列に格納するわけです。今回は、初めにヒットした項目を表示しています。DataRow配列に格納されている最初の行の「ユーザーID」を表示します。
        
  
        
            
            
            
            
        
        
        
            前へ   次へ