Tipps "n" Tricks
Anwender-Software - Access

Last Update: 24. Dezember 2001/Webmaster

Formularfilter vollständig löschen

Thema:

Access 97/2000
Problem:

Wenn ich einen Filter definiert, zugewiesen und dann wieder entfernt habe, hat er zwar keine Auswirkungen mehr auf die angezeigten Datensätze, aber er bleibt anscheinend weiterhin gespeichert. Selbst nach dem Schliessen der Datenbank kann man wieder auf das Symbol "Filter/Sortierung anwenden" klicken und Access wendet den alten Filter erneut an. Das mag manchmal recht nützlich sein, aber ich nutze die Datenbank gemeinsam mit anderen Anwendern und möchte den alten Filter immer sofort löschen. Gibt es dazu eine Möglichkeit?

Lösung: Zunächst einmal müssen Sie wissen, wo Access einen Filter speichert: Öffnen Sie dazu ein beliebiges Formular und definieren Sie einen Filter. Anschliessend entfernen Sie ihn wieder und wechseln dann in den Entwurfsmodus des Formulars. Wenn Sie sich dann das Eigenschaften-Fenster anzeigen lassen, erscheint die Filterdefinition neben der Eigenschaft "Filter". Andere Anwender, die nach Ihnen mit dem Formular arbeiten, können also ganz einfach feststellen, welche Auswertung Sie als letztes vorgenommen haben. Um das zu verhindern, haben Sie zwei Möglichkeiten:
  • Sie löschen den Inhalt der Eigenschaft "Filter" manuell, sobald Sie die Arbeit mit der Datenbank beendet haben.
  • Sie verwenden eine VBA-Prozedur, die automatisch beim Aufruf des Formular ausgeführt wird.
Der Weg über die VBA-Prozedur ist zweifellos am schnellsten und zuverlässigsten:
  1. Wechseln Sie in den Entwurfsmodus des gewünschten Formulars, blenden Sie das Eigenschaften-Fenster ein und aktivieren Sie die Registerkarte "Ereignis".
  2. Klicken Sie in die Zeile "Beim Anzeigen" und dann auf die Schaltfläche mit den drei Punkten am Ende der Zeile.
  3. Wählen Sie im nachfolgenden Dialogfeld die Einstellung "Code-Editor" aus und geben Sie die VBA-Prozedur aus dem folgenden Listing ein. Anschliessend verlassen Sie den VBA-Editor und speichern die Änderungen im Formular. In Zukunft wird der alte Filter automatisch gelöscht, sobald Sie das so vorbereitete Formular aufrufen.
Sub Form_Current()
  If Me.FilterOn <> True Then
    Me.Filter=""
  End If
End Sub

 

Tipps "n" Tricks
Anwender-Software - Access