Microsoft Access Club >ADO入門講座 >このページ >次頁 < 前項  サイト内検索
 

レコードの抽出 - Filterプロパティ : ADO入門講座



RecordsetオブジェクトのFilterプロパティを用いて、抽出条件に該当するレコードを抽出することができます。Filterプロパティで設定した抽出条件に該当するレコードがなき場合は、RecordsetオブジェクトのRecordCountプロパティの値が 0 になります。
抽出条件式には、OR または AND を用いて複数条件を指定することができます。また、LIKE演算子の利用も可能です。

留意点
  • 該当レコードが見つからなかった場合、RecordCountプロパティは 0 を返します。
  • Filterプロパティを解除する場合は、長さ0の文字列("")またはadFilterNone定数をFilterプロパティに代入します。

Filterプロパティの構文

Updateメソッドの構文は、以下のような組み合わせになります。

Recordsetオブジェクト + .(ドット) + Filterプロパティ  = 条件式

項目 意味
Recordsetオブジェクト 開いているRecordsetオブジェクトです。
条件式 抽出条件式を記述します。複数条件を指定する場合は、OR または AND を用います。
留意点
  1. 抽出する値がテキスト型の場合は、その値自体をシングルクォーテーション(')で囲みます。

サンプルテーブルの作成

サンプルテーブルを以下のように作成します。テーブル名は、T_sampleテーブルです。

ID 売上日 社員名 性別 売上額
6 2004/01/23 橘修平 男性 52100
5 2004/02/04 柴田喜一 男性 654100
8 2004/03/25 正道良一 男性 4875210
1 2004/07/29 草薙良子 女性 120310

500,000以上のデータを抽出するプロシージャ

このプロシージャは、T_Sampleテーブルの売上額フィールドの値が500,000以上のレコードを抽出しメッセージボックスに表示します。

Sub ADO_Filter()
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim strmsg As String
    Dim lngRet As Long
    Set cn = CurrentProject.Connection
    Set rs = New ADODB.Recordset
    rs.Open "T_Sample", cn, adOpenKeyset, adLockOptimistic
    rs.Filter = "売上額 >= 500000"
    If rs.RecordCount = 0 Then
        MsgBox "該当するレコードは見つかりませんでした。"
    Else
        Do Until rs.EOF
            strmsg = strmsg & rs!売上日 & " : " & rs!社員名 & _
                    " : " & rs!性別 & " : " & rs!売上額 & "円" & vbNewLine
            rs.MoveNext
        Loop
    End If
    MsgBox strmsg
    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing
End Sub
実行結果
  1. プロシージャを実行します。
  2. Filterプロパティを用いて売上額フィールドで500,000以上のデータを抽出します。
  3. 以下のメッセージボックスが表示されます。

あいまい抽出(LIKE演算子の利用)

LIKE演算子を用いてあいまい抽出を行うことができます。以下のプロシージャは、社員名フィールドに良という漢字を持つ社員データを抽出します。

Sub ADO_Filter2()

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim strmsg As String
    Dim lngRet As Long
    Set cn = CurrentProject.Connection
    Set rs = New ADODB.Recordset
    
    rs.Open "T_Sample", cn, adOpenKeyset, adLockOptimistic
    rs.Filter = "社員名 LIKE '*良*'"
    
    If rs.RecordCount = 0 Then
        MsgBox "該当するレコードは見つかりませんでした。"
    Else
        Do Until rs.EOF
            strmsg = strmsg & rs!売上日 & " : " & rs!社員名 & _
                    " : " & rs!性別 & " : " & rs!売上額 & "円" & vbNewLine
            rs.MoveNext
        Loop
    End If
    
    MsgBox strmsg
    
    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing

End Sub
実行結果
  1. プロシージャを実行します。
  2. Filterプロパティを用いて社員名フィールドに良という漢字を持つ社員データを抽出します。
  3. 以下のメッセージボックスが表示されます。

関連ページ

2005/07/05

ページの先頭へ 前ページへ戻る


レコードの抽出 - Filterプロパティ : ADO入門講座


 

-Microsoft Access Club-

アメリカ合衆国の大手データセンターのアダルト対応可能なリーズナブル価格設定の専用・共有レンタルサーバーをご提供しています。
アメリカ合衆国の大手データセンターにサーバー機器を設置。
アダルト対応可能な専用・共有レンタルサーバーを提供。