レコードを指定した条件で抽出する(ADO)Filter プロパティ
データベースのレコードを指定した条件で抽出する
Filter プロパティ
object.Filter = Condition
引数・戻り値
- object ・・・ 対象となる Recordset オブジェクトを指定します。
- Condition ・・・ 抽出する条件式を文字列型(String)で指定します。条件式は、”(二重引用符)で囲みます。
条件式は、FieldName Operator Value という形式からなる節で構成されます。
複数の条件式を And や Or を使って連結することができます。- FieldName ・・・Recordset から有効な列名(フィールド名)を指定します。フィールド名に空白文字が含まれる場合は [](角括弧)で囲む必要があります。
- Operator ・・・比較演算子( >、<、<=、および like 演算子 )を指定します。
- Value ・・・FieldName と比較する値を指定します。値には、文字列、数値、日付を使用できます。文字列は、’(単一引用符)で囲みます(user = ‘Rin’)。日付の値は、#(シャープ記号)で囲みます(sdate > #7/22/17#)。数値の場合は、小数点、指数表記を使用できます。また、like 演算子には、ワイルドカードを使用することができます。ワイルドカードには、アスタリスク(*)およびパーセント記号(%)のみで、必ず文字列の末尾に使用します。例えば、「keyword like ‘k*’」、「keyword like ‘*ba*’」のように文字列の末尾または文字列の先頭と末尾に * や % を使用して検索します。ただし「keyword like ‘*ea’」、「keyword like ‘a*c’」のように文字列の先頭や文字列中に * や % を使用することはできません。この場合はエラーが発生します。また、Value に Null を指定することはできません。
Filter を解除するには、Filter プロパティに、定数 adFilterNone(0)を設定します。これは、Filter プロパティに、長さ 0 の文字列(””)を設定した場合と同じ結果が得られます。
rs.Filter = adFilterNone
rs.Filter = “”
※ rs は、Recordset オブジェクト
Filter プロパティを設定すると Recordset 内のレコードで、フィルタ処理済みのサブセット内の最初のレコードにカレントレコードの位置が移動します。また、Filter プロパティを消去すると、カレントレコードの位置は Recordset の最初のレコードに移動します。
Filter プロパティ 使用例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
Sub Sample_Filter() '参照設定:Microsoft ActiveX Data Objects 6.1 Library Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim constr As String Dim DBFile As String Dim i As Long Dim j As Long DBFile = ActiveWorkbook.Path & "\mydb1.accdb" constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBFile Set cn = New ADODB.Connection cn.ConnectionString = constr cn.Open Set rs = New ADODB.Recordset With rs 'テーブルを開く .Source = "テーブル3" .ActiveConnection = cn .Filter = "年度 = 2009 AND 月度 = 7 AND 取引先 like '%㈱%'" .Open End With With Worksheets("Sheet1") rs.MoveFirst i = 1 .Cells.Clear Do Until rs.EOF For j = 0 To rs.Fields.Count - 1 If i = 1 Then .Cells(i, j + 1) = rs(j).Name .Cells(i + 1, j + 1) = rs(j).Value Next j rs.MoveNext i = i + 1 Loop .Columns("A:H").AutoFit End With rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub |
実行結果
関連記事
-
データベース(SQL Server)に接続する(ADO)
データベース(SQL Server)に接続 ODBC または OLE DB で接 …
-
テーブル名、クエリ名の取得(ADOX)
テーブル名の取得 Table.Type プロパティ 【書式】 <取得> obje …
-
Excelファイルに接続(ADO)
ADOでExcelファイルに接続 ADO を使用してExcelファイルを読み込み …
-
データベース(MySQL)に接続する(ADO)
MySQL ODBCドライバ Windowsには標準で、いくつかの ODBC ド …
-
インデックス、プロパティの設定(ADOX)
インデックスを作成する index オブジェクト 【書式】 <CreateObj …
-
クエリにパラメータを渡して結果を取得する(ADO)Command オブジェクト・Execute メソッド
クエリにパラメータを渡して結果を取得する手順 Command オブジェクトの作成 …
-
データベース(Oracle)に接続する(ODBC を使用)
ODBC接続(ADO) ADOで、ODBC(Open Database Conn …
-
フィールド名(ADO)Fields コレクション
Fields コレクション Recordset オブジェクト内の1つ以上の列(フ …
-
テーブルの作成・削除/フィールドの作成・削除(ADOX)
ADOX を使用してテーブル・フィールド(列)を作成・削除 Table オブジェ …
-
Excel VBA のクラスを使ってデータベースへ接続する(ADO)
データベースの処理をクラスモジュールに書く ExcelVBAで、クラス使用する方 …