Form.Filter-Ereignis (Access)

Tritt auf, wenn der Benutzer ein Filterfenster öffnet, indem er Nach Formular filtern, Erweiterter Filter/Sortierung oder Serverfilter nach Formular auswählt.

Syntax

Ausdruck. Filter (Cancel, FilterType)

expression Eine Variable, die ein Form-Objekt darstellt.

Parameter

Name Erforderlich/Optional Datentyp Beschreibung
Abbrechen Erforderlich Integer Diese Einstellung bestimmt, ob das Filterdefinitionsfenster geöffnet wird. Durch Festlegen des Cancel-Arguments auf True (1) wird verhindert, dass das Filterfenster geöffnet wird. Sie können das Öffnen des Filterdefinitionsfensters auch mit der CancelEvent -Methode des DoCmd -Objekts unterbinden.
FilterType Erforderlich Integer Das Filterdefinitionsfenster, das der Benutzer zu öffnen versucht. Das FilterType-Argument kann eine der folgenden systeminternen Konstanten sein:
  • acFilterByForm
  • acFilterAdvanced
  • acServerFilterByForm

HinwBemerkungeneise

Wenn beim Auftreten dieses Ereignisses ein Makro oder eine Ereignisprozedur ausgeführt werden soll, legen Sie die OnFilter-Eigenschaft auf den Namen des Makros oder auf [Ereignisprozedur] fest.

Verwenden Sie das Filter-Ereignis für Folgendes:

  • Remove any previous filter for the form. Legen Sie dazu die Filter - oder ServerFilter-Eigenschaft des Formulars in der Filter-Makro - oder Ereignisprozedur auf eine leere Zeichenfolge (" ") fest. Dies ist besonders nützlich, wenn Sie sicherstellen möchten, dass im neuen Filter keine überflüssigen Kriterien angezeigt werden. Wenn Sie z. B. das Feature Nach Auswahl filtern verwenden, werden die verwendeten Kriterien (der ausgewählte Text im Formular) dem WHERE-Klauselausdruck der Filter - oder ServerFilter-Eigenschaft hinzugefügt und sowohl im Fenster Nach Formular filtern als auch im Fenster Erweiterter Filter/Sortierung oder Im Fenster Serverfilter nach Formular angezeigt. You can remove these old criteria by using the Filter event.

  • Geben Sie die Standardeinstellungen für den neuen Filter ein. Legen Sie dazu die Filter - oder ServerFilter-Eigenschaft so fest, dass sie diese Kriterien enthält. Beispielsweise können Sie möchten, dass alle Filter für ein Formular Produkte nur aktuelle Produkte anzeigen (Produkte, für die das Steuerelement Nicht mehr im Formular Produkte ausgewählt ist).

  • Verwenden Sie Ihr eigenes benutzerdefiniertes Filterfenster anstelle eines der Microsoft Access-Filterfenster. Wenn das Filter-Ereignis eintritt, können Sie Ihr eigenes benutzerdefiniertes Formular öffnen und die Einträge in diesem Formular verwenden, um die Filter - oder ServerFilter-Eigenschaft festzulegen und das ursprüngliche Formular zu filtern. Wenn der Benutzer dieses benutzerdefinierte Formular schließt, legen Sie die FilterOn - oder ServerFilterByForm-Eigenschaft des ursprünglichen Formulars auf True (1) fest, um den Filter anzuwenden. Durch das Abbrechen des Filter-Ereignisses wird verhindert, dass das Access-Filterfenster geöffnet wird.

  • Verhindern Sie, dass bestimmte Steuerelemente im Formular im Fenster Nach Formular filtern oder Serverfilter nach Formular angezeigt oder verwendet werden. Wenn Sie ein Steuerelement in der Filter-Ereignisprozedur oder dem Makro ausblenden oder deaktivieren, wird das Steuerelement im Fenster Nach Formular filtern oder Serverfilter nach Formularen ausgeblendet oder deaktiviert und kann nicht zum Festlegen von Filterkriterien verwendet werden. You can then use the ApplyFilter event to show or enable this control after the filter is applied, or when the filter is removed from the form.

Beispiel

Das folgende Beispiel zeigt, wie das TotalDue-Steuerelement in einem Bestellformular deaktiviert wird, wenn der Benutzer versucht, einen Filter zu erstellen, sodass der Benutzer nicht nach diesem Feld filtern kann. Alle Datensätze, die über einen TotalDue-Wert verfügen und die anderen Filterkriterien erfüllen, werden immer im gefilterten Formular angezeigt. Darüber hinaus wird der Benutzer gezwungen, das Fenster Formularbasierter Filter statt des Fensters Spezialfilter-/sortierung zu verwenden.

Um dieses Beispiel auszuprobieren, fügen Sie die folgende Ereignisprozedur zu einem Orders-Formular hinzu, das ein TotalDue-Steuerelement enthält. Versuchen Sie, einen Filter mithilfe des Fensters Erweiterter Filter/Sortierung zu erstellen, in dem das TotalDue-Steuerelement verwendet wird. Testen Sie außerdem das Erstellen des gleichen Filters mithilfe des Fensters Formularbasierter Filter.

Private Sub Form_Filter(Cancel As Integer, FilterType As Integer) 
    If FilterType = acFilterByForm Then 
        Forms!Orders!TotalDue.Enabled = False 
    ElseIf FilterType = acFilterAdvanced Then 
        MsgBox "The best way to filter this form is to use the " _ 
            & "Filter By Form command or toolbar button.", vbOKOnly + vbInformation 
        Cancel = True 
    End If 
End Sub

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.