Form.ApplyFilter イベント (Access)

フィルターがフォームに適用されるときに発生します。

構文

ApplyFilter (Cancel, ApplyType)

expressionForm オブジェクトを表す変数です。

パラメーター

名前 必須 / オプション データ型 説明
Cancel 必須 整数型 (Integer) ApplyFilter イベントを発生させるかどうかを設定します。 引数 CancelTrue に設定すると、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 のサポートおよびフィードバックを参照してください。