Sortieren und Filtern von Listenfeldern

André Minhorst, Duisburg

Die meisten Windows-Anwendungen bieten komfortable Möglichkeiten, wenn es um die Sortierung von Listen geht. Der Windows Explorer verfügt beispielsweise über je ein Feld oberhalb jeder Spalte, mit dem Sie die Sortierung der gewünschten Spalte einstellen können. Listenfelder in Access haben keine solche Eigenschaft und sind diesbezüglich recht unkomfortabel. Im vorliegenden Beitrag erfahren Sie, wie Sie nicht nur komfortabel sortieren, sondern auch noch filtern können.

Listenfelder dienen der übersichtlichen Anzeige von Daten aus einer oder mehreren Tabellen. Die übersicht geht aber beizeiten verloren – beispielsweise, wenn die Anzahl der Datensätze so groß ist, dass die Höhe des Listenfeldes zur gleichzeitigen Anzeige aller Datensätze nicht ausreicht.

Auch die fehlende Sortierung kann zu einem Problem werden – vor allem in Kombination mit größeren Datenmengen. Damit sind auch bereits die Gegenmittel gefunden: Sortieren und Filtern. Bleibt die Frage, wie die Funktionalität zu realisieren ist.

Im Windows Explorer finden Sie z. B. geeignete Steuerelemente zum Sortieren der unterschiedlichen Felder in aufsteigender und absteigender Reihenfolge in der Kopfzeile der Liste (siehe Bild 1).

Bild 1: Sortierung im Windows Explorer

Durch einen Klick auf eine der überschriften können Sie erstens das Feld auswählen, nach dessen Inhalt sortiert werden soll, und zweitens die Richtung der Sortierung festlegen.

Daten sortieren

Die Sortierung von Daten kann z. B. nach dem Alphabet oder nach Zahlenwerten erfolgen -technisch handelt es sich dabei um den gleichen Vorgang. Sortierungen erfolgen nämlich in der Regel nach dem Zahlenwert der Anfangsbuchstaben, der in einer ASCII-Tabelle festgelegt ist.

Es kann in zwei Richtungen sortiert werden – aufwärts und abwärts. Da die Sortierung später per SQL durchgeführt wird, sind hier schon einmal die entsprechenden Schlüsselwörter:

ORDER BY <Feldname> ASC

sortiert eine Tabelle aufsteigend nach einem Wert, während

ORDER BY <Feldname> DESC

nach dem gleichen Wert in absteigender Reihenfolge sortiert.

Wenn Sie nach mehreren Werten sortieren möchten, können Sie die weiteren Feldnamen gefolgt von dem jeweiligen Schlüsselwort – also DESC oder ASC – durch Komma getrennt anhängen. Die Sortierung erfolgt dabei in der Reihenfolge der Angabe der Sortierkriterien.

Bild 2: Beispiel eines Listenfeldes mit Sortier- und Filterfunktion

Bild 3: Datenherkunft des Listenfeldes

Bild 4: Eigenschaften des Listenfeldes

Daten filtern

Das Filtern von Daten kann die Menge der angezeigten Daten in den meisten Fällen soweit einschränken, dass die Anzahl der betroffenen Datensätze überschaubar wird.

Das wird umso einfacher, wenn Sie nach mehreren Feldern gleichzeitig filtern können.

Die Aufgabenverwaltung aus dem Beitrag Aufgabenverwaltung mit Access in der vorliegenden Ausgabe von Access im Unternehmen bietet ein geeignetes Listenfeld zur Demonstration effektiven Filterns und Sortierens (siehe Bild 2).

Allerdings ist der Aufbau des dortigen Listenfeldes relativ umfangreich, sodass die Funktionalität für den Einstieg an einem einfacheren Beispiel erläutert werden soll.

Hinweis

Als Beispieldaten halten – wie so oft – die Tabellen der Nordwind-Datenbank her. Zum Nachvollziehen der nachfolgenden Beispiele erstellen Sie am besten eine neue Datenbank und importieren die Tabellen Artikel, Kategorien und Lieferanten.

Das FormularfrmArtikeluebersicht

Anschließend legen Sie ein neues Formular namens frmArtikeluebersicht an. Fügen Sie dem Formular ein neues Listenfeld hinzu und geben Sie ihm den Namen lstArtikel.

Erstellen Sie als Datensatzherkunft des Listenfeldes eine neue Abfrage namens qryArtikelMitDetailinformationen. Den Aufbau der Abfrage können Sie Bild 3 entnehmen.

Füllen des Listenfeldes

Anschließend weisen Sie den Namen der neuen Abfrage der Eigenschaft Datensatzherkunft des Listenfeldes hinzu.

Bild 5: Formularansicht des Formulars frmArtikeluebersicht

Private Sub txtAufgabeFilter_AfterUpdate()
    FilterUndSortierung
End Sub

Quellcode 1

Stellen Sie anschließend die Eigenschaften Spaltenanzahl und Spaltenbreiten so ein, dass alle gewünschten Informationen in der richtigen Breite angezeigt werden (siehe Bild 4).

Die Formularansicht sollte schließlich wie in Bild 5 aussehen.

Das Filtern der Listenfelder soll nach Kriterien erfolgen, die Sie mit entsprechenden Text- oder Kombinationsfeldern eingeben bzw. auswählen.

Nachdem Sie das Listenfeld erstellt, die Datensatzherkunft des Listenfeldes zugewiesen und die Spaltenbreiten justiert haben, legen Sie die gewünschten Steuerelemente oberhalb der entsprechenden Spalten an – natürlich in der gleichen Breite wie die Spaltenbreite des Listenfeldes.

Praxis-Tipp

Eine gute Hilfe beim Ausrichten und dem Einstellen der Steuerelementbreite ist die Eigenschaft Spaltenbreiten des Listenfeldes (siehe Bild 4). Aufgrund der hier angegebenen Zahlen können Sie die Position und die Breite der Steuerelemente sehr genau festlegen.

Je nach der Beschaffenheit des Inhalts einer Spalte des Listenfeldes werden Sie entweder ein Textfeld oder ein Kombinationsfeld zum Setzen des Filterwertes verwenden.

Bei Text- oder Memofeldern verwenden Sie in jedem Fall ein Textfeld, während Sie bei Feldern, deren Inhalt nicht in der eigentlichen, sondern einer verknüpften Tabelle gespeichert ist, vermutlich auch ein Kombinationsfeld verwenden.

Dieses Kombinationsfeld zeigt dann alle Werte der verknüpften Tabelle als Filteroptionen an. Wenn Sie Textfelder als Filteroption verwenden, können Sie natürlich auf Platzhalter wie Fragezeichen () oder Sternchen (*) zurückgreifen.

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

TestzugangOder bist Du bereits Abonnent? Dann logge Dich gleich hier ein. Die Zugangsdaten findest Du entweder in der aktuellen Print-Ausgabe auf Seite U2 oder beim Online-Abo in der E-Mail, die Du als Abonnent regelmäßig erhältst:

Schreibe einen Kommentar