Form.Filter-Ereignis (Access)

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

Syntax

Ausdruck verwendet werden. Filter (Abbrechen, 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. Wenn Sie das Argument Abbrechen auf True (1) festlegen, wird das Öffnen des Filterfensters verhindert. 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 Argument FilterType kann eine der folgenden systeminternen Konstanten sein:
  • acFilterByForm
  • acFilterAdvanced
  • acServerFilterByForm

Hinweise

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 Filterereignis für Folgendes:

  • Remove any previous filter for the form. Setzen Sie dazu die Filter - oder ServerFilter-Eigenschaft des Formulars im Filtermakro oder in der Ereignisprozedur auf eine leere Zeichenfolge (" "). Dies ist besonders nützlich, wenn Sie sicherstellen möchten, dass irrelevante Kriterien im neuen Filter nicht angezeigt werden. Wenn Sie beispielsweise die Funktion "Nach Auswahl filtern " verwenden, wird das von Ihnen verwendete Kriterium (der ausgewählte Text im Formular ) dem WHERE-Klauselausdruck der Filter- oder ServerFilter-Eigenschaft hinzugefügt und erscheint sowohl im Fenster "Nach Formular filtern " als auch im Fenster "Erweiterter Filter/Sortierung" oder im Fenster "Serverfilter nach Formular ". You can remove these old criteria by using the Filter event.

  • Geben Sie Standardeinstellungen für den neuen Filter ein. Legen Sie dazu die Filter - oder ServerFilter-Eigenschaft fest, um diese Kriterien einzuschließen. Sie möchten beispielsweise, dass alle Filter für ein Formular "Produkte" nur aktuelle Artikel anzeigen (Artikel, für die das Steuerelement "Nicht mehr verfügbar " im Formular "Artikel" nicht aktiviert ist).

  • Verwenden Sie ein eigenes benutzerdefiniertes Filterfenster anstelle eines der Microsoft Access-Filterfenster. Wenn das Filterereignis auftritt, können Sie ein 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 Abbrechen des Filterereignisses wird verhindert, dass das Access-Filterfenster geöffnet wird.

  • Verhindern Sie, dass bestimmte Steuerelemente des Formulars im Fenster "Nach Formular filtern " oder " Serverformularbasierter Filter " angezeigt oder verwendet werden. Wenn Sie ein Steuerelement in der Ereignisprozedur oder dem Makro Filter ausblenden oder deaktivieren, wird das Steuerelement im Fenster "Nach Formular filtern " oder " Serverfilter nach Formular " 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

Im folgenden Beispiel wird gezeigt, wie Sie das Steuerelement "Gesamtfälligkeit " in einem Formular "Bestellungen " deaktivieren, wenn der Benutzer versucht, einen Filter zu erstellen, sodass der Benutzer nicht nach diesem Feld filtern kann. Alle Datensätze, die einen TotalDue-Wert haben 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.

Fügen Sie zum Testen dieses Beispiels die folgende Ereignisprozedur zu einem Bestellformular 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.