window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Filtern und Suchen

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

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)

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar