次の方法で共有


DoCmd.ApplyFilter メソッド (Access)

ApplyFilter メソッドは、Visual Basic で ApplyFilter アクションを実行します。

構文

ApplyFilter (FilterNameWhereConditionControlName)

expression: DoCmd オブジェクトを表す変数。

パラメーター

名前 必須 / オプション データ型 説明
FilterName 省略可能 バリアント型 (Variant) カレント データベースの フィルターまたは クエリの有効な名前を表す 文字列式を指定します。 このメソッドを使用してサーバー フィルターを適用する場合、 FilterName 引数は空白にする必要があります。
WhereCondition 省略可能 バリアント型 (Variant) 有効な SQL WHERE 句を文字列式で指定します。ただし、WHERE という語を指定する必要はありません。
ControlName 省略可能 Variant

注釈

ApplyFilter アクションを使用して、テーブル、フォーム、またはレポートにフィルター、クエリ、または SQL WHERE 句を適用して、テーブル内のレコード、またはフォームまたはレポートの基になるテーブルまたはクエリのレコードを制限または並べ替えます。 For reports, you can use this action only in a macro specified by the report's OnOpen event property.

サーバー フィルターを適用する場合にのみ SQL WHERE 句を適用するには、このアクションを使用します。 サーバー フィルターは、保存されているプロシージャのレコード ソースには適用できません。

注:

適切なデータを提供するフィルターを既に定義している場合は、 FilterName 引数を使用します。 WhereCondition 引数を使用して、制限条件を直接入力します。 両方の引数を指定した場合は、WHERE 句はフィルターの結果に適用されます。 2 つの引数のうち少なくとも 1 つは指定する必要があります。

フィルターまたはクエリは、 フォーム ビュー または データシート ビュー で開いているフォームに適用できます。

適用するフィルターと WHERE 条件は、フォームの Filter プロパティまたはレポートの ServerFilter プロパティの設定になります。

テーブルまたはフォームを保存すると、そのオブジェクトで現在定義されているすべてのフィルターが保存されますが、次回オブジェクトが開かれたときにフィルターは自動的に適用されません (ただし、オブジェクトに適用した並べ替えは保存前に自動的に適用されます)。

フォームを開いたときに自動的にフィルターを適用するには、"ApplyFilter/フィルターの実行" アクションが定義されたマクロを指定するか、またはフォームの "OnOpen/開く時" イベント プロパティの設定値として DoCmd オブジェクトの ApplyFilter メソッドが定義されたイベント プロシージャを指定します。 "OpenForm/フォームを開く" または "OpenReport/レポートを開く" アクション、あるいはそれらに対応するメソッドを使用してフィルターを適用することもできます。 テーブルを最初に開いたときに自動的にフィルターを適用するには、"OpenTable/テーブルを開く" アクションの直後に "ApplyFilter/フィルターの実行" アクションが定義されたマクロを使用してテーブルを開きます。

2 つある ApplyFilter の引数のうち、少なくとも 1 つは指定する必要があります。 両方の引数を指定すると、 WhereCondition がフィルターに適用されます。

引数 WhereCondition の最大長は 32,768 文字です (マクロ ウィンドウの WhereCondition アクション引数の最大長は 256 文字です)。

次の例では 、ApplyFilter メソッドを使用して、 LastName フィールドに "King" という名前を含むレコードのみを表示します。

DoCmd.ApplyFilter , "LastName = 'King'"

次の例は、 ApplyFilter プロパティを使用して 、tglFilter という名前のトグル ボタンが選択されたときに表示されるレコードをフィルター処理する方法を示しています。

Private Sub tglFilter_Click()
    With tglFilter
        If .Value = True Then
            .Caption = "P/T"
            .StatusBarText = "only full-timers"
            DoCmd.ApplyFilter , "[Hours]=40"
        ElseIf .Value = False Then
            .Caption = "All"
            .StatusBarText = "only part-timers"
            DoCmd.ApplyFilter , "[Hours]<40"
        Else
            .Caption = "F/T"
            .StatusBarText = "all employees"
            DoCmd.ShowAllRecords
            .SetFocus 'to activate the button's statusbar-text
        End If
    End With
End Sub

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。