Form.ApplyFilter イベント (Access)
フィルターがフォームに適用されるときに発生します。
構文
式。ApplyFilter (Cancel, ApplyType)
expressionForm オブジェクトを表す変数です。
パラメーター
名前 | 必須 / オプション | データ型 | 説明 |
---|---|---|---|
Cancel | 必須 | 整数型 (Integer) | ApplyFilter イベントを発生させるかどうかを設定します。 引数 Cancel を True に設定すると、ApplyFilter イベントが取り消され、フィルターがフォームに適用されません。 |
ApplyType | 必須 | 整数型 (Integer) | 適用されたフィルターの種類を返します。 |
注釈
このイベントが発生したときに、マクロまたはイベント プロシージャを実行するには、" OnApplyFilter /フィルター実行時" プロパティをマクロ名または [イベント プロシージャ] に設定します。
ApplyFilter イベントを使用して、次の処理を行います。
適用されているフィルターが正しいことを確認します。 たとえば、 Orders フォームに適用されるフィルターに OrderDate フィールドを制限する条件が含まれていることを確認できます。 これを行うには、フォームの Filter または ServerFilter プロパティの値を調べて、この条件が WHERE 句式に含まれていることを確認します。
フィルターを適用する前にフォームの表示を変更します。 たとえば、特定のフィルターを適用する場合に、表示されるレコードに必要のないフィールドを非表示または使用不可にします。
Filter イベントが発生したときに実行した操作を元に戻すか変更します。 たとえば、ユーザーがフィルターを作成するときに、これらのコントロールをフィルター条件に含めないようにするため、フォームの一部のコントロールを無効または非表示にすることができます。 フィルターを適用した後で、これらのコントロールを有効または表示できます。
ApplyFilter イベント プロシージャまたはマクロのアクションは、フィルターが適用または削除される前、または [詳細なフィルター/並べ替え]、[フォームによるフィルター処理]、または [フォームによるサーバー フィルター] ウィンドウが閉じられた後、フォームが再表示される前に発生します。 新しく作成したフィルターに入力した条件は、Filter または ServerFilter プロパティの設定として ApplyFilter イベント プロシージャまたはマクロで使用できます。
注:
ApplyFilter イベントは、以下のいずれかの操作を実行したときには発生しません。
- マクロ内の ApplyFilter、OpenReport、または ShowAllRecords アクション、または Visual Basic の DoCmd オブジェクトの対応するメソッドを使用して、フィルターを適用または削除します。
- DoCmd オブジェクトの Close アクションまたは Close メソッドを使用して、[詳細なフィルター/並べ替え]、[フォームによるフィルター処理]、または [フォームによるサーバー フィルター] ウィンドウを閉じます。
- マクロまたは Visual Basic で Filter または ServerFilter プロパティ、 FilterOn プロパティ、 または ServerFilterByForm プロパティを設定します (ただし、これらのプロパティは ApplyFilter イベント プロシージャまたはマクロで設定できます)。
例
次の例は、適用されたフィルターによってレコードが支払われた注文のみに制限されている場合に、 Orders フォームの AmountDue、Tax、TotalDue コントロールを非表示にする方法を示しています。
この例を試すには、AmountDue、Tax、TotalDue コントロールを含む Orders フォームに次のイベント プロシージャを追加します。 支払い済みの受注のみを表示するフィルターを実行します。
Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
If Not IsNull(Me.Filter) And (InStr(Me.Filter, "Orders.Paid = -1")>0 _
Or InStr(Me.Filter, "Orders.Paid = True")>0)Then
If ApplyType = acApplyFilter Then
Forms!Orders!AmountDue.Visible = False
Forms!Orders!Tax.Visible = False
Forms!Orders!TotalDue.Visible = False
ElseIf ApplyType = acShowAllRecords Then
Forms!Orders!AmountDue.Visible = True
Forms!Orders!Tax.Visible = True
Forms!Orders!TotalDue.Visible = True
End If
End If
End Sub
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示