Filter プロパティFilter Property

内のデータのフィルターを示します、 Recordsetします。Indicates a filter for data in a Recordset.

設定と戻り値Settings and Return Values

設定または取得をバリアント値で、次の項目の 1 つ含めることができます。Sets or returns a Variant value, which can contain one of the following items:

  • 条件の文字列。 1 つ以上の各句を使用して、連結から成る文字列ANDまたはOR演算子。Criteria string: A string made up of one or more individual clauses concatenated with AND or OR operators.

  • ブックマークの配列。 一意のブックマークの配列値内のレコードを指す、 Recordsetオブジェクト。Array of bookmarks: An array of unique bookmark values that point to records in the Recordset object.

  • A FilterGroupEnum値。A FilterGroupEnum value.


使用して、フィルタープロパティ内のレコードを選択して画面をRecordsetオブジェクト。Use the Filter property to selectively screen out records in a Recordset object. フィルター処理されたRecordset現在のカーソルになります。The filtered Recordset becomes the current cursor. その他の値を返すプロパティが現在に基づいてカーソルなど、影響はAbsolutePosition プロパティ (ADO)AbsolutePage プロパティ (ADO)RecordCount プロパティ (ADO)、およびPageCount プロパティ (ADO)します。Other properties that return values based on the current cursor are affected, such as AbsolutePosition Property (ADO), AbsolutePage Property (ADO), RecordCount Property (ADO), and PageCount Property (ADO). 設定、フィルタープロパティを特定の新しい値に新しい値を満たす最初のレコードを現在のレコードを移動します。Setting the Filter property to a specific new value moves the current record to the first record that satisfies the new value.

フォーム内の句の条件の文字列から成るFieldName-演算子-値(たとえば、 "LastName = 'Smith'")。The criteria string is made up of clauses in the form FieldName-Operator-Value (for example, "LastName = 'Smith'"). 個々 の句を連結して複合句を作成することができますAND (たとえば、 "LastName = 'Smith' AND FirstName = 'John'") またはOR (たとえば、 "LastName = 'Smith' OR LastName = 'Jones'")。You can create compound clauses by concatenating individual clauses with AND (for example, "LastName = 'Smith' AND FirstName = 'John'") or OR (for example, "LastName = 'Smith' OR LastName = 'Jones'"). 条件文字列の場合は、次のガイドラインを使用します。For criteria strings, Use the following guidelines:

  • FieldNameから有効なフィールド名にする必要があります、 Recordsetします。FieldName must be a valid field name from the Recordset. フィールド名にスペースが含まれている場合は、角かっこで名前を囲む必要があります。If the field name contains spaces, you must enclose the name in square brackets.

  • 演算子は、次のいずれかを指定する必要があります: <、>、 <=、> =、<>、=、またはなどします。Operator must be one of the following: <, >, <=, >=, <>, =, or LIKE.

  • 値は、フィールドの値を比較する、値 (たとえば、'Smith' を 8/24/95 #、12.345、または 50.00 ドル)。Value is the value with which you will compare the field values (for example, 'Smith', #8/24/95#, 12.345, or $50.00). 文字列と日付にはシャープ記号 (#) では、単一引用符を使用します。Use single quotes with strings and pound signs (#) with dates. 数値の場合は、小数点、ドル記号、および科学的表記法を使用できます。For numbers, you can use decimal points, dollar signs, and scientific notation. 演算子は場合など値は、ワイルドカードを使用できます。If Operator is LIKE, Value can use wildcards. アスタリスク (*) とパーセント記号 (%)ワイルドカードを許可、および最後の文字の文字列である必要があります。Only the asterisk (*) and percent sign (%) wild cards are allowed, and they must be the last character in the string. 値を NULL にすることはできません。Value cannot be null.


フィルター値には、単一引用符 (') を含めるには、2 つの単一引用符を使用して、1 つを表します。To include single quotation marks (') in the filter Value, use two single quotation marks to represent one. たとえば、O'Malley でフィルター処理、条件の文字列があります"col1 = 'O''Malley'"します。For example, to filter on O'Malley, the criteria string should be "col1 = 'O''Malley'". 先頭と末尾のフィルター値の両方に単一引用符を含めるには、シャープ記号文字列を囲む (#)。To include single quotation marks at both the beginning and the end of the filter value, enclose the string with pound signs (#). たとえば、'1' でフィルター処理、条件の文字列があります"col1 = #'1'#"します。For example, to filter on '1', the criteria string should be "col1 = #'1'#".

  • 間の優先順位がないとします。There is no precedence between AND and OR. 句は、かっこで囲まれてグループ化できます。Clauses can be grouped within parentheses. ただし、OR で結合句をグループ化とし、次のコード スニペットのようにして、別の句をグループに参加することはできません。However, you cannot group clauses joined by an OR and then join the group to another clause with an AND, as in the following code snippet:
    (LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'

  • このフィルターを構築する代わりに、Instead, you would construct this filter as
    (LastName = 'Smith' AND FirstName = 'John') OR (LastName = 'Jones' AND FirstName = 'John')

  • など句では、先頭とパターンの末尾にワイルドカードを使用することができます。In a LIKE clause, you can use a wildcard at the beginning and end of the pattern. たとえば、使用することができますLastName Like '*mit*'します。For example, you can use LastName Like '*mit*'. またはなどパターンの末尾にのみ、ワイルドカードを使用することができます。Or with LIKE you can use a wildcard only at the end of the pattern. たとえば、LastName Like 'Smit*' のようにします。For example, LastName Like 'Smit*'.

フィルター定数容易に解決するにはこれらのレコードのみを表示、たとえば、許可することで、バッチ更新モード時に競合レコードの最後の中に影響を受けたUpdateBatch メソッドメソッドの呼び出し。The filter constants make it easier to resolve individual record conflicts during batch update mode by allowing you to view, for example, only those records that were affected during the last UpdateBatch Method method call.

設定、フィルタープロパティ自体が基になるデータの競合により失敗します。Setting the Filter property itself might fail due to a conflict with the underlying data. たとえば、レコードは既に別のユーザーによって削除されたときに、このエラーが発生することができます。For example, this failure can happen when a record has already been deleted by another user. このような場合は、プロバイダーは警告を返します、エラー コレクション (ADO)コレクションが、プログラムの実行は停止しません。In such a case, the provider returns warnings to the Errors Collection (ADO) collection, but does not halt program execution. 要求されたすべてのレコードの競合がある場合にのみ、実行時にエラーが発生します。An error at run time occurs only if there are conflicts on all the requested records. 使用して、 Status プロパティ (ADO Recordset)が競合しているレコードを検索するプロパティ。Use the Status Property (ADO Recordset) property to locate records with conflicts.

設定、フィルタープロパティを長さ 0 の文字列 ("") を使用して同じ効果があります、 adFilterNone定数。Setting the Filter property to a zero-length string ("") has the same effect as using the adFilterNone constant.

たびに、フィルタープロパティを設定すると、現在のレコードの位置を内のレコードのフィルター処理されたサブセットの最初のレコードに移動、 Recordsetします。Whenever the Filter property is set, the current record position moves to the first record in the filtered subset of records in the Recordset. 同様に、ときに、フィルターで最初のレコードを現在のレコードの位置が移動プロパティをオフになって、レコード セットします。Similarly, when the Filter property is cleared, the current record position moves to the first record in the Recordset.

ものとします、レコード セットsql_variant 型など、いくつかのバリアント型のフィールドの基にフィルターされます。Suppose that a Recordset is filtered based on a field of some variant type, such as the type sql_variant. エラー (が DISP_E_TYPEMISMATCH 80020005 または) のサブタイプの条件の文字列で使用されるフィールドとフィルターの値が一致しないときに発生します。An error (DISP_E_TYPEMISMATCH or 80020005) occurs when the subtypes of the field and filter values used in the criteria string do not match. たとえば、あるとします。For example, suppose:

  • A Recordsetオブジェクト (rs) には、sql_variant 型の列 (C) が含まれています。A Recordset object (rs) contains a column (C) of the sql_variant type.
  • この列のフィールドに、I4 型の 1 の値が割り当てられています。And a field of this column has been assigned a value of 1 of the I4 type. 条件の文字列に設定されているrs.Filter = "C='A'"フィールド。The criteria string is set to rs.Filter = "C='A'" on the field.

この構成では、ランタイム処理中にエラーが生成されます。This configuration produces the error during run time. ただし、rs.Filter = "C=2"同じ適用フィールドでは、エラーは生成されません。However, rs.Filter = "C=2" applied on the same field will not produce any error. フィールドは、現在のレコード セットからフィルター処理します。And the field is filtered out of the current record set.

参照してください、ブックマーク プロパティ (ADO)プロパティについては、Filter プロパティを使用する配列をビルドすることができます、ブックマークの値。See the Bookmark Property (ADO) property for an explanation of bookmark values from which you can build an array to use with the Filter property.

フィルター条件文字列の形式で、永続化の内容に影響を与えるだけRecordsetします。Only Filters in the form of criteria strings affect the contents of a persisted Recordset. 条件の文字列の例はOrderDate > '12/31/1999'します。An example of a criteria string is OrderDate > '12/31/1999'. ブックマーク、またはからの値を使用して配列が作成されたフィルター、 FilterGroupEnum、永続化の内容には影響しませんRecordsetします。Filters created with an array of bookmarks, or using a value from the FilterGroupEnum, do not affect the contents of the persisted Recordset. これらの規則は、クライアント側またはサーバー側のカーソルで作成されたレコード セットに適用されます。These rules apply to Recordsets created with either client-side or server-side cursors.


フィルター選択された行と列のフラグを適用する場合、変更レコード セットバッチ更新モード、結果として得られるレコード セットのキー フィールドに基づくフィルター処理された場合は空です、テーブルの単一キーと、変更は、キー フィールドの値で行われました。When you apply the adFilterPendingRecords flag to a filtered and modified Recordset in the batch update mode, the resultant Recordset is empty if the filtering was based on the key field of a single-keyed table and the modification was made on the key field values. 結果として得られるRecordsetは空にする、次のステートメントのいずれかが true の場合。The resultant Recordset will be non-empty if one of the following statements is true:

  • フィルター処理は、単一キー テーブルの非キー フィールドに基づいていました。The filtering was based on non-key fields in a single-keyed table.

  • フィルター処理は、複数キー テーブル内のフィールドに基づいていました。The filtering was based on any fields in a multiple-keyed table.

  • 単一キー テーブルの非キー フィールドに対しては、変更が行われました。Modifications were made on non-key fields in a single-keyed table.

  • 複数キー テーブル内のフィールドに対しては、変更が行われました。Modifications were made on any fields in a multiple-keyed table.

次の表の効果行と列がのフィルター処理と変更のさまざまな組み合わせでします。The following table summarizes the effects of adFilterPendingRecords in different combinations of filtering and modifications. 左側の列には、変更が表示されます。The left column shows the possible modifications. 非キー フィールドを単一キー テーブル内のキー フィールドまたは複数キー テーブルのキー フィールドのいずれかのいずれかで変更できます。Modifications can be made on any of the non-keyed fields, on the key field in a single-keyed table, or on any of the key fields in a multiple-keyed table. 最上位の行では、フィルター選択条件を示します。The top row shows the filtering criterion. フィルター処理できますに基づいて任意の非キー フィールドで、単一キーのテーブルでは、または複数キー テーブルのキー フィールドのいずれかのキー フィールド。Filtering can be based on any of the non-keyed fields, the key field in a single-keyed table, or any of the key fields in a multiple-keyed table. 交差するセルは、結果を表示します。The intersecting cells show the results. A + プラス記号は、適用されることを意味行と列が空でない結果Recordsetします。A + plus sign means that applying adFilterPendingRecords results in a non-empty Recordset. A - 負符号は、空Recordsetします。A - minus sign means an empty Recordset.

非キーNon keys 1 つのキーSingle Key 複数のキーMultiple Keys
非キーNon keys + + +
1 つのキーSingle Key + - なしN/A
複数のキーMultiple Keys + なしN/A +

適用対象Applies To

Recordset オブジェクト (ADO)Recordset Object (ADO)

参照See Also

Filter および RecordCount プロパティの例 (VB) Filter および RecordCount プロパティの例 (vc++) Clear メソッド (ADO) Optimize プロパティ-動的 (ADO)Filter and RecordCount Properties Example (VB) Filter and RecordCount Properties Example (VC++) Clear Method (ADO) Optimize Property-Dynamic (ADO)