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.