ApplyFilter アクションを使用すると、テーブル、フォーム、または レポート に、フィルター、クエリ、または SQL WHERE 句を適用して、テーブル内のレコード、またはフォームかレポートの基になるテーブルかクエリからのレコードを制限するか並べ替えることができます。 レポートでは、レポートの OnOpen イベント プロパティによって指定する マクロ でのみこのアクションを使用できます。
注: このアクションを使用して、サーバー フィルターを適用する場合にのみ、SQL WHERE 句を適用できます。 サーバー フィルターは、ストアド プロシージャのレコード ソースには適用できません。
注: ApplyFilter マクロ アクションは、Access Web App では使用できません。
設定
ApplyFilter アクションの引数は次のとおりです。
アクションの引数 |
説明 |
フィルター名 |
テーブル、フォーム、レポートのレコードを制限するか並べ替えるフィルターまたはクエリの名前。 [マクロ ビルダー] ウィンドウの [アクションの引数] セクションの [フィルター名] ボックスで、クエリとして保存された既存のクエリまたはフィルターのいずれかの名前を入力できます。 注: このアクションを使用してサーバー フィルターを適用する場合、[フィルター名] 引数は空白であることが必要です。 |
Where 条件式 |
有効な SQL WHERE 句 (単語 WHERE は含めません)、またはテーブル、フォーム、レポートのレコードを制限する式です。 注: [Where 条件] 引数の式では通常、式の左側には、フォームかレポートの基になるテーブルかクエリからのフィールド名が含まれます。 式の右側には通常、レコードを制限するか並べ替えるためにこのフィールドに適用する抽出条件が含まれます。 たとえば、条件としては、最初のフォーム内のレコードに対して照合する値を含む別のフォームのコントロールの名前を指定できます。 たとえば、コントロールの名前は完全に修飾されていることが必要です。 フォーム!フォーム名!コントロール名 フィールド名は二重引用符で囲み、文字列リテラルは一重引用符で囲む必要があります。 [Where 条件式] 引数の最大長は、255 文字です。 より長い SQL WHERE 句を入力する必要がある場合は、Visual Basic for Applications (VBA) モジュールで DoCmd オブジェクトの ApplyFilter メソッドを使用してください。 VBA では、SQL WHERE 句のステートメントを最大で 32,768 文字入力できます。 |
注: 適切なデータを提供するフィルターを既に定義している場合は、[フィルター名] 引数を使用できます。 制限条件を直接入力するために [Where 条件] 引数を使用できます。 両方の引数を使用した場合、Access ではフィルターの結果に WHERE 句が適用されます。 1 つまたは両方の引数を使用する必要があります。
解説
フォーム ビュー または データシート ビュー のフォームにフィルターまたはクエリを適用できます。
適用するフィルターおよび WHERE 条件は、フォームまたはレポートの Filter プロパティまたは ServerFilter プロパティの設定になります。
テーブルおよびフォームでは、このアクションは [レコード] メニューの [フィルター/並べ替えの実行] または [サーバー フィルターの適用] をクリックした場合に似ています。 このメニュー コマンドでは最後に作成したフィルターをテーブルまたはフォームに適用するのに対して、ApplyFilter アクションは指定のフィルターまたはクエリを適用します。
Access データベースで、ApplyFilter アクションを実行した後、[レコード] メニューの [フィルター] をポイントして [フィルター/並べ替えの編集] をクリックすると、フィルター/並べ替えの編集ウィンドウ ではこのアクションで選んだフィルター条件が表示されます。
フィルターを削除し、Access データベースのテーブルまたはフォームの全レコードを表示するには、[レコード] メニューの [ShowAllRecords] アクションまたは [フィルター/並べ替えの解除] コマンドを使用します。 Access プロジェクト (.adp) でフィルターを削除するには、フォーム サーバー フィルター ウィンドウに戻り、すべてのフィルター条件を削除した後、ツールバーの [レコード] メニューで [サーバー フィルターの適用] をクリックするか、ServerFilterByForm プロパティを False (0) に設定します。
Access では、テーブルまたはフォームを保存すると、該当オブジェクトに現在定義されているすべてのフィルターが保存されますが、次回オブジェクトを開いたときにフィルターが自動的に適用されることはありません (ただし、保存前にオブジェクトに適用したすべての並べ替えは自動的に適用されます)。 フォームを最初に開いたときにフィルターを自動的に適用したい場合は、ApplyFilter アクションを含むマクロ、またはフォームの OnOpen イベント プロパティの設定として DoCmd オブジェクトの ApplyFilter メソッドを含むイベント プロシージャを指定します。 また、OpenForm アクションか OpenReport アクション、または対応するメソッドを使用すると、フィルターを適用できます。 テーブルを最初に開いたときにフィルターを自動的に適用するには、ApplyFilter アクションの直後に OpenTable アクションを含むマクロを使用して、テーブルを開きます。
使用例
マクロを使用してフィルターを適用する
次のマクロには、それぞれが [顧客電話一覧] フォームのレコードをフィルター処理する一連のアクションが含まれます。 このマクロは、ApplyFilter アクション、ShowAllRecords アクション、GoToControl アクションの使用方法を示しています。 また、フォーム上でオプション グループ内のどのトグル ボタンが選択されているかを特定するための条件の使用方法を示します。 各アクション行は、先頭が A、B、C... のレコードのセット、またはすべてのレコードを選ぶトグル ボタンに関連付けられています。 このマクロは、CompanyNameFilter オプション グループの ”AfterUpdate/更新後処理” イベントに関連付ける必要があります。
条件 |
操作 |
引数: 設定 |
コメント |
[CompanyNameFilters]=1 |
ApplyFilter |
Where 条件式: [CompanyName] Like "[AÀÁÂÃÄ]*" |
先頭が A、À、Á、Â、Ã、または Ä の会社名をフィルター処理します。 |
[CompanyNameFilters]=2 |
ApplyFilter |
Where 条件式: [CompanyName] Like "B*" |
先頭が B の会社名をフィルター処理します。 |
[CompanyNameFilters]=3 |
ApplyFilter |
Where 条件式: [CompanyName] Like "[CÇ]*" |
先頭が C または Ç の会社名をフィルター処理します。 |
... D から Y のアクション行も、A から C と同じ形式です ... |
|||
[CompanyNameFilters]=26 |
ApplyFilter |
Where 条件式: [CompanyName] Like "[ZÆØÅ]*" |
先頭が Z、Æ、Ø、または Å の会社名をフィルター処理します。 |
[CompanyNameFilters]=27 |
ShowAllRecords |
すべてのレコードを表示します。 |
|
[RecordsetClone].[RecordCount]>0 |
GoToControl |
コントロール名: CompanyName |
選んだ文字に対してレコードが返される場合、CompanyName コントロールにフォーカスを移動します。 |