Home > Artikel > Ausgabe 9/2014 > Filtern und Suchen

Filtern und Suchen

  PDF ansehen

  Download PDF und Beispieldatenbank

Sobald Daten in größerem Umfang anfallen, sind Such- und Filtermechanismen in Datenbanken gefragt. Ohne Filtern geht der Überblick verloren und für Auswertungen sind Sie das A und O. Abseits der Möglichkeiten, die Abfragen und VBA bereitstellen, hat Access über seine Benutzeroberfläche mehr zu bieten, als auf den ersten Blick offenbar wird.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1409_FilternUndSuchen.mdb.

Individuelle Suchfunktion

Wenn Sie eine Datenbank für andere Benutzer bereitstellen, so ist es möglicherweise sinnvoller, ihnen über Formulare programmierte Such- und Filterfunktionen anzubieten, weil die über die Oberfläche von Access verfügbaren nicht so ohne weiteres auffallen und etwas der Schulung bedürfen.

In Formularen etwa wird erst über das Kontextmenü deutlich, dass Filter aufrufbar sind oder sich Datensätze durchsuchen lassen.

Bei Datenblattansichten ist sind die Funktionen schon deutlicher sichtbar, weil sich hier bei Klick auf die Spaltenköpfe – zumindest unter Access 2007 und neuer – ein entsprechendes Menü öffnet.

Arbeiten Sie selbst mit der Datenbank, dann sollten Sie jedoch die Filterfunktionen der Oberfläche einmal gründlicher durchforsten.

Anforderungen an zu filternde Tabellen

Egal, ob Filtern oder Suchen im Fokus steht: Indizierung ist das Zauberwort. Das Indizieren von Tabellenfeldern wurde eben für diesen Zweck geschaffen. Es beschleunigt Suchvorgänge ungemein. Nehmen Sie eine Tabelle mit Zigtausend Datensätze und einem Feld für den Nachnamen. Ohne Indizierung müsste die Access Database Engine jeden einzelnen Datensatz aufrufen und den Nachnamen mit einem gesuchten Begriff vergleichen. Das würde sehr viel Zeit kosten. Ist ein Index auf das Feld gesetzt, so legt Access intern eine Datenstruktur an, ein Indextabelle, die über die Oberfläche von Access allerdings nicht sichtbar wird. In diesem Index sind die Datensatzinhalte etwa alphabetisch angeordnet und mit Sprungadressen versehen.

Der Name "Sacher" wird gefunden, indem nur der Block zu "S" analysiert wird, der an einer bestimmten Adresse liegt. Zumindest ist das das Prinzip – in der Realität sieht die Sache weitaus komplizierter aus und die eingesetzten BTree-Algorithmen sind auf Performance optimiert.

In Bild 2 sehen Sie den Tabellenaufbau der Beispieldatenbank mit der Haupttabelle tblStammdaten. Bild 1 sind deren Indizes aus der Entwurfsansicht abgebildet. Es ist auf fast alle Felder ein Index gesetzt. Das bedeutet, dass für jedes dieser Felder Such-, Filter, Sortierungs- und Gruppierungsfunktionen schneller ablaufen.

Indizes der Tabelle tblStammdaten

Bild 1: Indizes der Tabelle tblStammdaten

Beziehungslayout der Beispieltdatenbank

Bild 2: Beziehungslayout der Beispieltdatenbank

Alle Tabellenfelder also, bei denen davon auszugehen ist, dass sie später Suchvorgängen unterzogen werden, sollten mit einem Index versehen werden. Beim Feld für die Hausnummer der Stammdatentabelle ist dies nicht anzunehmen.

Warum legt Access nicht einfach automatisch für jedes Feld einen Index an? Ganz einfach: die Indexstrukturen belegen viel Speicherplatz. Der Speicherbedarf der Indizes einer Tabelle kann sogar größer werden als deren Inhalte selbst!

Und außerdem bedarf es wesentlich mehr Rechenaufwand, um nicht nur etwa einen Namen in der Tabelle zu speichern, sondern diesen zusätzlich in eine Indexstruktur zu überführen und die in der Indextabelle an der richtigen Stelle unterzubringen.

Letzteres vollzieht Access übrigens beim Speichern eines Datensatzes aus Performancegründen nicht optimal. Sonst müssten die gesamten Indexstrukturen jedes Mal erneut aufgebaut werden.

Genau das passiert aber, wenn Sie die Anweisung Komprimieren und Reparieren für die Datenbank über das entsprechende Menü oder den Ribbon aufrufen. Deshalb sollte dieser Vorgang nach häufigen Speicher- oder Löschvorgängen in der Datenbank hin und wieder ausgeführt werden.

Filtern über das Menü und die Symbolleiste

Unter Access 2003 und früher finden sich die Funktionen zum Suchen und Filtern über den Hauptmenüeintrag Datensätze. Was sich hier ab Access 2007 geändert hat, erfahren Sie später.

Öffnen Sie die Tabelle tblStammdaten in der Datenblattansicht. Die Menüleiste erweitert sich dann unter anderem um den Popup-Button Datensätze, der bei Klick das verschachtelte Untermenü in Bild 3 öffnet. Der obere Teil davon ist den Filter- und Sortierfunktionen spendiert.

Der Menübereich zum Filtern und Sortieren (Access 2003)

Bild 3: Der Menübereich zum Filtern und Sortieren (Access 2003)

Gleichzeitig blendet sich eine zusätzliche Symbolleiste, den den Namen Tabellendatenblatt trägt. Ein Ausschnitt mit den für das Filtern relevanten Buttons ist in Bild 5 zu sehen. Wenn Sie deren Symbole mit denen des Menüs vergleichen, wird klar, was sie bedeuten. Es spielt auch keine Rolle, ob Sie eine Funktion über das Menü oder einen Symbolleisten-Button aufrufen.

Die Menüleiste mit den Symbolen zum Filtern und Sortieren (A2003)

Bild 4: Die Menüleiste mit den Symbolen zum Filtern und Sortieren (A2003)

Rätsel gibt indessen die Symbolleiste Filtern/Sortieren auf, die Sie optional einblenden können, nachdem Sie sie über Extras > Anpassen... in der Liste der verfügbaren Leisten aktiviert haben (Bild 4). Seltsamerweise finden sich sich hier weder Buttons zum Sortieren, noch die spezielleren für das Filtern.

Die optionale Symbolleiste Filtern/Sortieren (Access 2003)

Bild 5: Die optionale Symbolleiste Filtern/Sortieren (Access 2003)

Nur das eine Trichtersymbol verweist auf den Filter. Es ist allerdings deaktiviert, wenn das geöffnete Datenblatt keinen gespeicherten Filter besitzt – dazu später mehr. Sie können diese Leiste also zunächst vergessen.

An der Funktion zum Sortieren gibt es nichts zu erläutern. Die aufsteigende Sortierung A-Z sortiert die aktive Spalte, also jene, in der sich der Cursor befindet, alphabetisch oder bei numerischem Inhalt nach dem Zahlenwert. Liegt der Cursor hingegen in einem OLE-Feld, wie bei der Spalte Bild der Stammdatentabelle, so deaktivieren sich die Sortierschaltflächen und -menüeinträge.

Die Suchfunktionen (Fernglassymbol) sollen später noch beleuchtet werden.

Auswahlbasierter Filter

Die Funktion dieses Filters setzt voraus, dass Sie eine beliebige Zelle des offenen Datenblatts markiert haben, wie in Bild 6 für den Ort "Berlin".

Aktivieren des Auswahlbasierten Filters

Bild 6: Aktivieren des Auswahlbasierten Filters

Sobald Sie den Blitz-Button aktivieren, verschwinden alle Datensätze, bei denen Berlin nicht als Ort eingetragen war. Gleichzeitig wird der generelle Filter-Button (Trichter) markiert, um zu verdeutlichen, dass gerade ein Filter auf das Datenblatt gesetzt ist. Wenn Sie diesen markierten Button anklicken, wird der Filter wieder entfernt und alle Datensätze angezeigt.

Sie können aber auch die Zelle einer anderen Spalte markieren und erneut den Auswahlbasierten Filter aktivieren. Versuchen Sie das etwa für den Eintrag "Herr" in der Spalte Anrede der Stammdatentabelle. Nun werden alle Datensätze angezeigt, die Kunden mit der Anrede "Herr" aufweisen und in Berlin wohnen.

#Der Filter arbeitet also kumulativ. Diese Schritte können für eine beliebige Anzahl von Felder wiederholen und den Filter immer weiter kumulieren. Eine Rückgängig-Funktion dafür existiert allerdings nicht. Sie können die gesetzten Filter nur auf einen Schlag entfernen.

Auswahlausschließender Filter

Dieser Filter wirkt umgekehrt, wie der zuvor besprochene. Hätten Sie ihn im Beispiel von Bild 6 benutzt, so kämen alle Datensätze ohne den Ort Berlin auf den Schirm. Auch dieser Filter arbeitet kumulativ. Sie können so alle Herren ausschließen, und außerdem alle Kunden, die in Berlin wohnen.

Da eine derartige Filterung nicht so trivial ist und wohl auch seltener Anwendung findet, hat Microsoft ihr auch keinen eigenen Button in der Symbolleiste spendiert. Der Auswahlausschließende Filter lässt sich nur über das Menü oder Kontextmenü aufrufen.

Filter speichern

Es spielt keine Rolle, ob Sie im angezeigten Datenblatt gerade einen Filter aktiviert haben, oder ihn über Filter/Sortierung entfernen deaktiviert haben: Beim Schließen des Datenblatts über das Kreuzchen werden Sie gefragt, ob die Änderungen gespeichert werden sollen. Bejahen Sie dies. Nun sollte man erwarten, dass beim nächsten Öffnen der Filter wieder angewendet ist, wenn er zuvor aktiv war. Das ist jedoch nicht der Fall. Wohl aber tritt er wieder in Aktion, sobald Sie den Trichter anklicken. Wenn im Datenblatt kein Filter gespeichert wurde, so ist der Trichter-Button auch gar nicht erst aktivierbar. Damit erklärt sich auch, weshalb Access auch dann nach Speicherung fragt, wenn der Filter in der Ansicht "entfernt" wurde. Der Begriff ist schlicht irreführend. Korrekter wäre die Bezeichnung "Filter deaktivieren" gewesen.

Wenn sich der Filter aber nicht wirklich entfernen lässt, sitzt er dann auf alle Ewigkeit im Datenblatt fest? Nein! Öffnen Sie die Tabelle tblStammdaten im Entwurf und klicken auf Ansicht > Eigenschaften. im Eigenschaftendialog finden Sie eine Zeile Filter, die gewöhnlich leer ist, nun aber diesen Inhalt zeigt:

(((Lookup_IDOrt.Ort="Berlin"))) AND ((Lookup_IDAnrede.Anrede="Herr"))

Sie brauchen nur den Inhalt dieser Zeile zu leeren, um den Filter endgültig aus dem Datenblatt zu löschen.

So praktisch die automatische Speicherung des zuletzt aktivierten Filters ist, so unpraktisch ist leider sein Entfernen. Über die Oberfläche von Access lässt sich das nicht bewerkstelligen.

Formularbasierter Filter

Diese Bezeichnung führt etwas in die Irre, weil dieser Filter nichts mit Access-Formularen zu tun hat.

Öffnen Sie das Datenblatt tblStammdaten und aktivieren Sie den Filter über den Button mit dem kombinierten Trichter-Dialogfenster-Symbol. Ein Formular tritt nun nicht in Erscheinung. Stattdessen reduziert sich das Datenblatt auf nur eine Zeile ohne Inhalt, die so wirkt, als könne man hier einen neuen Datensatz eingeben – ein Beispiel, dass der Otto-Normal-Benutzer Ihrer Datenbank hier ohne Schulung überfordert ist.

Wie in Bild 7 zu sehen, haben sich in dieser Filteransicht die Felder in Kombinationssteuerelemente verwandelt, aus denen man Inhalte der zugrundeliegenden Datensätze auswählen kann – etwa die Bundesländer. Im Beispiel ist außerdem als Nation Deutschland ausgewählt. In dieser Ansicht blendet sich übrigens die Symbolleiste Filtern/Sortieren aus Bild 4 ein, deren Schaltflächen nun einen Sinn ergeben.

Der sogenannte Formularbasierte FIlter in Aktion

Bild 7: Der sogenannte Formularbasierte FIlter in Aktion

Das Kreuzchen entfernt die Auswahl in der Entwurfszeile, der Schließen-Button verlässt die Entwurfsansicht und kehrt zum normalen Datenblatt zurück... ohne den eingestellten Filter zu speichern! Das nämlich passiert erst, nachdem Sie den Trichter aktiviert haben. Die Entwurfsansicht wird dann ebenso verlassen, in der Datenblattansicht sind nun aber nur die ihren Filterregeln entsprechenden Zeilen zu sehen, im Beispiel also alle Kunden aus Bayern.

Worin soll hier nun der Unterschied zum Auswahlbasierten Filter bestehen, werden Sie fragen? Auch über jenen ließe sich ja diese Filterung vornehmen. Tatsächlich aber ist dieser Filter hier intelligenter. In den Kombinationsfeldern des Entwurfs zeigt er nur für solche Felder die Datenauswahl an, bei denen sich die Datenmenge in überschaubaren Grenzen hält. In Feldern, wie der Postleitzahl (PLZ), bei denen die Unmenge von Einträgen keine ergonomische Auswahl zuließe, finden sich stattdessen die Einträge Ist Null und Ist Nicht Null. Man kann hier also die Unterscheidung zwischen gefülltem und leerem Feldinhalt filtern, mehr nicht.

Erst bei genauerem Hinsehen wird man im Entwurf des formularbasierten Filters des veränderten Fußbereichs gewahr. Dort haben sich Laschen gebildet (Bild 8). Bei Klick auf ein Oder wird ein neue leere Zeile im Datenblatt eingeblendet, in der man eine zusätzliche Filterkombination angeben kann. Ein Und ergäbe keinen Sinn, weil dies bereits mit einem Filter möglich ist, da sich die Bedingungen hier ja per AND kumulieren.

Fußbereich des Datenblatts beim Formularbasierten Filter

Bild 8: Fußbereich des Datenblatts beim Formularbasierten Filter

Haben Sie auf diese Weise mehrere Filter ODER-verknüpft, so können Sie das Ergebnis im Eigenschaftenblatt des Tabellenentwurfs begutachten, etwa:

((Lookup_IDAnrede.Anrede="Herr") AND(tblStammdaten.Nat="CH")) OR((Lookup_IDAnrede.Anrede="Frau") AND(Lookup_IDLand.Land="Schleswig-Holstein"))

Ob der Mechanismus des Formularbasierten Filters und seine Umsetzung wirklich nützlich und ergonomisch sind, ist fraglich. Als Entwickler würde man eher gleich eine SQL-Abfrage auf die Tabelle formulieren und speichern, statt über den etwas kryptischen Filterentwurf zu gehen. Als Datenbankanwender muss man erst über die entsprechenden Skills verfügen, um ihn bedienen zu können. Und die sind in der Regel nicht vorhanden.

Spezialfilter

Um es gleich vorweg zu nehmen: Das eben Resümierte gilt genauso für den Spezialfilter, der über das Menü und sein Eintrag Spezialfilter/-sortierung... aufzurufen wäre. Dabei öffnet sich schlicht der Entwurfsbereich einer Abfrage, die zudem mit Konditionen vorbelegt ist, falls auf das Datenblatt bereits eine Filterung vorgenommen worden war.

Das könnte dann so aussehen, wie in Bild 9. Im Datenblatt war hier die Auswahl auf die Nation Schweiz und den Ort Zürich beschränkt worden. Die Abfrage kann nun beliebig weiterbearbeitet werden und ist damit flexibler, als etwa der Formularbasierte Filter.

Der Entwurfs- und Abfragebereich des Spezialfilters

Bild 9: Der Entwurfs- und Abfragebereich des Spezialfilters

Beliebig ist vielleicht nicht der richtige Ausdruck, denn der Abfrageentwurf ist nicht der reguläre. Sie können weder die SQL-Ansicht aktivieren, noch weitere Tabellen hinzufügen. Und woher kommt die Tabelle Lookup_IDOrt rechts in Bild 9? Verständlicher wird das, wenn Sie das Kontextmenü per rechte Maustaste aufrufen (siehe Bild 10) und Als Abfrage speichern... ausführen.

Das Kontextmenü des Spezialfilterentwurfs

Bild 10: Das Kontextmenü des Spezialfilterentwurfs

Im dann erscheinenden Dialog vergeben Sie der Abfrage einen Namen. Tatsächlich finden Sie danach die reguläre Abfrage im Datenbankfenster oder in der Navigationsleiste und können deren Entwurf genauer inspizieren. Dabei wird dann klar, dass es sich bei Lookup_IDOrt lediglich um einen Aliasnamen für die Tabelle tblOrte handelt.

Auch hier ist die Frage erlaubt, warum erst über Umwege eine Abfrage erstellt werden soll, deren Möglichkeiten zudem eingeschränkt sind, statt eine solche gleich originär zu formulieren und zu speichern? Für den produktiven Einsatz ist der Vorgang einfach zu unübersichtlich, für Lernzwecke – wie richte ich Bedingungen in einer Abfrage ein? – jedoch brauchbar.

Filtern über das Kontextmenü

Setzen Sie den Cursor in die Spalte Nachname des Datenblatts tblStammdaten und klicken Sie mit der Maus rechts. Es erscheint das Kontextmenü aus Bild 11, das dieselben Einträge aufweist, wie das Standardmenü. Mit einer Ausnahme: Zum Eintrag Filtern nach gibt es ein Textfeld, in das ein Suchbegriff eingegeben werden kann, nach dem die Tabelle dann gefiltert wird (ENTER-Taste).

Kontextmenü der Datenblattansicht

Bild 11: Kontextmenü der Datenblattansicht

Im Beispiel sind das dann alle Müllers. Genauso gut hätte man einen Müller in der Spalte markieren und den Auswahlbasierten Filter aktivieren können. Hier aber ist es möglich, nach einem Teilbegriff zu filtern. Geben Sie etwa "Müll*" ein, so stehen anschließend alle Datensätze zur Ansicht, bei denen die Nachnamen mit "Müll..." beginnen. Nach Speichern des Datenblatts findet sich im Tabellenentwurf für die Eigenschaft Filter dieser Ausdruck:

(tblStammdaten.Nachname Like "Müll*")

Filtern in Formularen

Da es sich bei der Datenblattansicht einer Tabelle imgrunde auch um ein Formular handelt – Screen.ActiveDatasheet ist im Objektkatalog von VBA als Form definiert -, nimmt es nicht Wunder, dass auch in anderen Formularansichten dieselben Menü- und Kontextmenüfunktionen zum Vorschein kommen. Überprüfen Sie das, indem Sie in der Beispieldatenbank eines der drei Stammdaten-Formulare öffnen. In allen drei Ansichten sind die möglichen Filterfunktionen verfügbar.

Das Layout des Formularbasierten Filters unterscheidet sich aber etwas und der Name bekommt nun mehr Sinn. Das Formular sieht nämlich in der Filterentwurfsansicht genau so aus, wie immer, nur die Eingabefelder haben sich wieder in Comboboxen verwandelt und im Fußbereich entstehen die Suchen nach|Oder-Laschen.

Wenn Sie das Formular nach Filterung schließen, wird wieder nach Speicherung gefragt. Bei Bejahung finden Sie den Filterausdruck im Formularentwurf in der entsprechenden Zeile (siehe Bild 12).

Automatisch gespeicherter Filterausdruck im Formularentwurf

Bild 12: Automatisch gespeicherter Filterausdruck im Formularentwurf

Suchfunktionen

Das Thema Suchen ist schnell abgehandelt. Hier gibt es keine komplizierteren Vorgänge. Die Suche aktivieren Sie durch Klick auf das Fernglassymbol in der Symbolleiste (Bild 5). Einen Eintrag im Kontextmenü dazu finden Sie nicht, wohl aber in der Menüleiste. Allerdings nicht unter dem Hauptmenüeintrag Datensätze, sondern im Bearbeiten-Menü.

Der Klick öffnet den Suchen-Dialog wie in Bild 13. Die Suchoptionen der Kombinationsfelder unten sind im Bild gesondert eingeblendet. Im obersten Feld geben Sie den Suchbegriff ein, hier "Hamburg". Nach Klick auf Weitersuchen springt der Cursor in das gefundene Feld, wobei das Datenblatt gegebenenfalls zum Datensatz mit der Fundstelle scrollt.

Der Suchen-Dialog von Access

Bild 13: Der Suchen-Dialog von Access

Findet Access keine passende Zelle, so quittiert es das mit einer Meldung. Suchen Sie anschließend nach "Berlin", bleibt "Hamburg" im obersten Kombinationsfeld als Auswahlmöglichkeit erhalten.

Nach welchen Kriterien die Suche vonstattengeht, bestimmen die unteren Comboboxen. Unter Suchen in lässt sich die Suche entweder auf die Spalte beschränken, in welcher sich der Cursor befindet (IDOrt), oder auf die ganze Tabelle ausdehnen (tblStammdaten: Tabelle).

Da diese Optionen für den Datenbankbenutzer eventuell unverständlich sind, lauten die Combobox-Einträge in den neueren Access-Versionen lediglich Aktuelles Feld und Aktuelles Dokument – im Bild rosa gerahmt. Gemeint ist aber dasselbe, wie oben erwähnt.

Die Optionen zum Item Vergleichen sind selbsterklärend. Übrigens können Sie es grundsätzlich bei der Einstellung Ganzes Feld belassen. Denn im Suchbegriff können auch Platzhalter verwendet werden. "Hamb*" findet also ebenfalls alle Hamburgs (entspricht Anfang des Feldinhalts), wie auch "*Hamb*" (Teil des Feldinhalts).

Ein Wort noch zur Checkbox Formatierung beachten. Sie werden sie wahrscheinlich nie aktivieren müssen, da sie nur dann relevant ist, wenn im Tabellenentwurf für eine Spalte dezidiert eine Formatierung angegeben wurde. Das macht man jedoch praktisch nur bei Datums- und Währungsfeldern. Beispiel wäre das Geburtsdatum der Stammdatentabelle, das als Datum, kurz formatiert ist. Trügen Sie stattdessen etwa Datum, lang als Formatierung ein, so würden alle Geburtsdaten mit ausgeschriebenen Monatsnamen erscheinen. Eine Suche mit aktiver Formatierung beachten ließe dann etwa den Suchbegriff "Febr" zu, sprich, das Datum würde als Text behandelt und so alle Februar-Zellen finden.

Filtern und Suchen ab Access 2007

In den neueren Versionen von Access fehlen Menü- und Symbolleisten, die durch das Ribbon ersetzt wurden. Die Filterfunktionen sind demnach anders aufzurufen, als bisher für Menüs beschrieben. Sie finden sie unter dem Tab (Reiter) Start im Bereich Sortieren und Filtern (siehe Bild 14).

Filtern-Bereich des Ribbon (Access 2010)

Bild 14: Filtern-Bereich des Ribbon (Access 2010)

Die Möglichkeiten zum Filtern sind prinzipiell zwar dieselben, wie unter Access 2003, wurden jedoch erweitert und kommen ergonomischer daher.

Öffnen Sie etwa den Dropdown-Button Auswahl (Auswahlbasierter Filter) im Ribbon, dann werden gleich Vorschläge für den Filterbegriff unterbreitet (siehe Bild 15). "Kurt" muss dazu im Datenblatt nicht komplett markiert sein. Das Dropdown-Menü integriert gleichzeitig den Auswahlausschließenden Filter (Ist ungleich) und die Filterung mit Platzhalter (Enthält).

Intelligenterer Auswahlfilter direkt im Ribbon

Bild 15: Intelligenterer Auswahlfilter direkt im Ribbon

Neu ab Access 2007 ist die Gestaltung der Spaltenköpfe im Datenblatt. Jeder Spaltenkopf integriert ein Pfeilchen, das auf Klick einen Filterdialog öffnet (Bild 16), der zudem in der Größe veränderbar ist (Greifer rechts unten). Die Auswahlliste unten im Dialog entnimmt ihren Inhalt aus den zugrundeliegenden Datensätzen. Sie erscheint allerdings nur dann, wenn die Datenmenge nicht zu groß ist. Für die Spalte PLZ etwa fehlt sie. Nach Aus- oder Abwahl bestimmter Inhalte über die Kontrollkästchen und Bestätigen per OK wird das Datenblatt entsprechend gefiltert. Das Verhalten dieses Dialogs entspricht damit in etwa dem des Formularbasierten Filters, nur dass die Sache sich hier wesentlich intuitiver handhaben lässt. Der Formularbasierte Filter existiert übrigens unverändert weiter. Sie gelangen zu ihm über den Erweitert-Dropdown-Button (Bild 14).

Neue Filterfunktionen im Spaltenkopf ab Access 2007

Bild 16: Neue Filterfunktionen im Spaltenkopf ab Access 2007

Im Dialog lässt sich der Eintrag Textfilter als Untermenü einblenden, der eine neue Form der Filtern nach-Funktion aus Bild 11 darstellt. Neben der Gleich-Filterung, gegebenenfalls mit Platzhaltern, stehen nun noch zahlreiche weitere Vergleichsoperatoren zur Verfügung (Bild 17). Bei numerischen Feldern ändert sich die Bezeichnung in Zahlenfilter, die Operatoren bleiben ähnlich. Richtig ausgeklügelt wird es bei Datumsfeldern, wie dem Geburtsdatum der Stammdatentabelle.

Untermenü Textfilter mit den Vergleichsoperatoren

Bild 17: Untermenü Textfilter mit den Vergleichsoperatoren

Die Bezeichnung ändert sich in Datumsfilter, und dieser hält nun eine Unmenge zusätzlicher Operatoren in einem weiteren Untermenü Alle Daten in diesem Zeitraum bereit. Wählen Sie hier etwa Juni aus, so werden nach Filterung nur noch die Kunden angezeigt, die in diesem Monat geboren wurden.

Die Filter aller Spalten werden auch hier kumuliert, wobei der Auswahlfilter für die nächste Spalte jeweils nur die Daten anzeigt, die zuvor schon herausgefiltert wurden.

Die gesamten kumulierten Filtereinstellungen lassen sich anschließend im Datenblatt abspeichern und stehen beim nächsten Öffnen bereit.

Der Filterausdruck kann dann sehr komplex werden. Als Beispiel bei Filterung, unter anderem, über das Geburtsdatum:

((([Lookup_IDLand].[Land] In ("Berlin","Brandenburg")) AND ([Lookup_IDAnrede].[Anrede]="Frau") AND ([tblStammdaten].[PLZ] Like "*10*"))) AND (Month([tblStammdaten].[Geburtsdatum])=7)

Für den Datumsfilter integrierte Access hier also die VBA-Funktion Month().

Berichte filtern

Bis Access 2007 konnte man Berichte nur über Entwurfseinstellungen oder VBA filtern, nicht aber in der Seitenansicht – das geht auch in den neuen Versionen nicht. Eingeführt wurde jedoch eine neue Ansichtsart, die sogenannte interaktive Berichtsansicht, die ein Mittelding zwischen Bericht und Formular darstellt.

Wird ein Bericht in dieser Ansicht geöffnet – der rptStammdaten der Beispieldatenbank etwa -, so können Felder markiert und über das Kontextmenü die bekannten Filterfunktionen aufgerufen werden (siehe Bild 18).

Filtermöglichkeiten in der Berichtsansicht (A2010)

Bild 18: Filtermöglichkeiten in der Berichtsansicht (A2010)

Beim Schließen des Berichts kann die Filtereinstellung abgespeichert werden und ist hernach im Entwurf unter der Eigenschaft Daten|Filter einsehbar.

Die Berichtsansicht ist damit die bessere Alternative zu Endlosformularen.