ApplyFilter メソッドは、Visual Basic で ApplyFilter アクションを実行します。
構文
式。ApplyFilter (FilterName, WhereCondition, ControlName)
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 メソッドを使用して、[ 姓 ] フィールドに "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 のサポートおよびフィードバックを参照してください。