Form.ApplyFilter イベント (アクセス)

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

構文

ApplyFilter (キャンセルApplyType)

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

パラメーター

名前 必須 / オプション データ型 説明
Cancel 必須 整数型 (Integer) ApplyFilter イベントを発生させるかどうかを設定します。 引数 CancelTrue に設定すると、ApplyFilter イベントが取り消され、フィルターがフォームに適用されません。
ApplyType 必須 整数型 (Integer) 適用されたフィルターの種類を返します。

注釈

このイベントが発生したときに、マクロまたはイベント プロシージャを実行するには、" OnApplyFilter /フィルター実行時" プロパティをマクロ名または [イベント プロシージャ] に設定します。

ApplyFilter イベントを使用して、以下の操作を行います。

  • 適用しているフィルターが正しいことを確認します。 たとえば、[ 受注] フォームに適用されるフィルターに、[ 受注日 ] フィールドを制限する条件が含まれていることを確認したい場合があります。 これを行うには、フォームの Filter プロパティまたは ServerFilter プロパティの値をチェックして、この条件が WHERE 句式に含まれていることを確認します。

  • フィルターを適用する前にフォームの表示を変更します。 たとえば、特定のフィルターを適用する場合に、表示されるレコードに必要のないフィールドを非表示または使用不可にします。

  • Filter イベントの発生時に実行した操作を元に戻すか、変更します。 たとえば、フォーム上の一部のコントロールをフィルター条件に含めたくないため、ユーザーがフィルターを作成するときに、これらのコントロールを無効にしたり、非表示にしたりできます。 フィルターを適用した後、これらのコントロールを有効または表示できます。

ApplyFilter イベント プロシージャまたはマクロのアクションは、フィルターが適用または削除される前、または [高度なフィルター/並べ替え]、[フォームでフィルター]、または [フォームでサーバー フィルター] ウィンドウが閉じた後、フォームが再表示される前に実行されます。 新しく作成したフィルターに入力した条件は、 ApplyFilter イベント プロシージャまたはマクロで Filter または ServerFilter プロパティの設定として使用できます。

注:

ApplyFilter イベントは、以下のいずれかの操作を実行したときには発生しません。

  • マクロの ApplyFilter、OpenReport、ShowAllRecords アクション、または Visual Basic の DoCmd オブジェクトの対応するメソッドを使用して、フィルターを適用または削除します。
  • DoCmd オブジェクトの Close アクションまたは Close メソッドを使用して、[高度なフィルター/並べ替え]、[フォームでフィルター]、または [フォームでサーバー フィルター] ウィンドウを閉じます。
  • マクロまたは Visual Basic の Filter プロパティ、 ServerFilter プロパティ、 FilterOn プロパティ、 ServerFilterByForm プロパティを設定します (ただし、これらのプロパティは、 ApplyFilter イベント プロシージャまたはマクロで設定できます)。

次の例は、適用されたフィルターによって支払済注文のみにレコードが制限されている場合に、[ 受注 ] フォームの [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 のサポートおよびフィードバックを参照してください。