Filter

(PWS4 IIS4 IIS5)
Filter — Recordset のデータに対するフィルタを示します。

構文

object.Filter

パラメータ

object
Recordset セットオブジェクト

設定値と戻り値

次の中の 1 つを含む、バリアント型 (Variant) の値を設定します。また、値の取得も可能です。

* 検索文字列 – AND または OR 演算子で連結された、1 つまたは複数の句で構成される文字列です。
* ブックマーク配列 – Recordset オブジェクトのレコードを指す固有のブックマーク値の配列です。
* FilterGroupEnum 値です。

説明

Filter プロパティは、Recordset オブジェクトで特定のレコードを抽出するときに使います。フィルタ処理後の Recordset がカレントのカーソルになります。AbsolutePosition、AbsolutePage、RecordCount、PageCount などの、カレント カーソルに基づいて値を返すその他のプロパティが影響を受けます。これは、Filter プロパティに特定の値を設定すると、カレント レコードが新しい値を満たす最初のレコードに移動するからです。

検索文字列は、「フィールド名-演算子-値」形式の句で構成されます (例: “LastName = ‘Smith'”)。AND や OR で句どうしを組み合わせれば、複合句を作成できます (例: “LastName = ‘Smith’ AND FirstName = ‘John'” または “LastName = ‘Smith’ OR LastName = ‘Jones'”)。検索文字列を指定するには、次の点に注意してください。

* 「フィールド名」は、Recordset の有効なフィールド名とします。フィールド名にスペースを含める場合は、名前を角かっこで囲みます。
* 「演算子」には次の中から 1 つを選択して使用します。<、>、<=、>=、<>、=、または LIKE。
* 「値」は、フィールド値と比較される値 (たとえば、’Smith’、#8/24/95#、12.345、または $50.00) のことです。文字列には引用符を、日付にはシャープ記号 (#) を使います。数値では、小数点、ドル記号、および指数表記を使うことができます。「演算子」が LIKE の場合、「値」にワイルドカードを使うことができます。使うことができるワイルドカードはアスタリスク (*) と百分率記号 (%) のみとし、文字列の最後に指定します。「値」に Null を使うことはできません。

注意 単一引用符 (‘) をフィルタ Value に組み込むには、2 つの単一引用符を使って 1 つの単一引用符を表します。たとえば、O’Malley にフィルタを設定するには、検索文字列は、”col1 = ‘O”Malley'” とします。フィルタ値の先頭と末尾に単一引用符を組み込むには、シャープ記号 (#) で文字列を囲みます。たとえば、’1’ にフィルタを設定するには、検索文字列は “col1 = #’1’#” とします。

AND と OR には優先順位はありません。句はかっこでグループにまとめることができます。ただし、次のように、OR で句を結合してできた句のグループを、AND を使ってさらに別の句と結合することはできません。

[sql](LastName = ‘Smith’ OR LastName = ‘Jones’) AND FirstName = ‘John'[/sql]

この場合は、フィルタを次のように構成します。

[sql] (LastName = ‘Smith’ AND FirstName = ‘John’) OR (LastName = ‘Jones’ AND FirstName = ‘John’)[/sql]

LIKE を使った句では、LastName Like ‘*mit*’ のように、パターンの始めと終わりにワイルドカードを指定できます。または、LastName Like ‘Smit*’ のように、パターンの終わりにだけ使うこともできます。

フィルタ定数を使うと、バッチ更新モードでレコード間に競合が発生しても、最後の UpdateBatch メソッドの呼び出しで変更されたレコードだけを表示するなどの方法で、簡単に競合を解消できます。

たとえば、レコードがほかのユーザーによって既に削除されている場合など、基になるデータとの競合が原因で、Filter プロパティの設定に失敗する場合があります。このような場合には、プロバイダは Errors コレクションに警告を返しますが、プログラムの実行は停止されません。要求したすべてのレコードで競合が発生した場合にのみ、実行時エラーが発生します。競合が発生したレコードの位置を調べるには、Status プロパティを使用します。

Filter プロパティに長さ 0 の文字列 (“”) を設定すると、adFilterNone 定数を使った場合と同じ結果が得られます。

Filter プロパティを設定すると、Recordset 内のレコードで、フィルタ処理済みのサブセット内の最初のレコードにカレントレコードの位置が移動します。同様に、Filter プロパティを消去すると、カレント レコードの位置は Recordset の最初のレコードに移動します。

Filter プロパティで使用する配列を作成するときに使用するブックマーク値については、Bookmark プロパティを参照してください。

検索文字列 (OrderDate > ’12/31/1999′ など) 形式の Filter だけが、永続化された Recordset の内容を操作することができます。Bookmark の配列で作成されたフィルタ、または FilterGroupEnum の値を使用して作成されたフィルタは、永続化された Recordset の内容に影響しません。これらの規則は、クライアント側とサーバー側のいずれで作成された Recordset にも当てはまります。