|
|
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:
- Wechseln Sie in den Entwurfsmodus
des gewünschten Formulars, blenden Sie das
Eigenschaften-Fenster ein und aktivieren Sie die Registerkarte
"Ereignis".
- Klicken Sie in die Zeile
"Beim Anzeigen" und dann auf die Schaltfläche mit den
drei Punkten am Ende der Zeile.
- 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
|
|