Treeview-Steuerelement mit Daten füllen

Zusammenfassung

Füllen Sie das Treeview-Steuerelement mit Daten aus einer oder mehreren Tabellen.

Techniken

Formulare, Treeview-Steuerelement, VBA

Voraussetzungen

Access 2002 und höher oder Access 97/2000 und Developer Edition oder Visual Studio 6.0

André Minhorst, Duisburg

Das Treeview-Steuerelement eignet sich wie kein anderes zur Anzeige von hierarchischen Daten. Dieser Beitrag zeigt Ihnen, wie Sie es mit Daten aus einer oder mehreren Tabellen füllen und wie Sie mit kleinen Tricks einiges an Performance herausholen können. Dabei kommen nicht nur Daten aus mehreren verknüpften Tabellen zum Zuge, sondern auch solche aus reflexiven Beziehungen.

Der Beitrag Das Treeview-Steuerelement (s. Shortlink 319) zeigt, wie Sie die Add-Methode der Nodes-Auslistung eines Treeview-Steuerelements verwenden, um Knoten an einen Baum anzufügen.

Das Ganze macht natürlich nur wenig Sinn, wenn Sie keine Daten haben, die Sie in das Treeview einpflegen können. Die bekannteste Anwendung des Treeview-Steuerelements ist wohl der Windows Explorer. Hier finden Sie auf der linken Seite das Treeview-Steuerelement zur Anzeige der Verzeichnisse und auf der rechten Seite das ListView-Steuerelement für die im aktuell markierten Verzeichnis enthaltenen Unterverzeichnisse und Dateien.

Vermutlich wollen Sie unter Access nicht gerade den Windows Explorer nachbauen, sondern die in Ihrer Datenbank enthaltenen Daten anzeigen.

Das macht nur Sinn, wenn der anzuzeigende Ausschnitt der Daten hierarchisch aufgebaut ist. Die Daten können dabei aus einer einzelnen oder auch aus mehreren Tabellen stammen.

Wenn die Daten mehrerer Tabellen angezeigt werden sollen, müssen diese per 1:n-Beziehung miteinander verknüpft sein.

Auf diese Weise können Sie dann beispielsweise Kunden, Bestellungen und bestellte Artikel abbilden.

Bei einer einzelnen Tabelle kann es sich beispielsweise um eine Mitarbeitertabelle handeln, die etwa über ein Feld namens VorgesetzterID mit sich selbst verknüpft ist und die Hierarchie der Mitarbeiter abbildet.

In dem Fall zeigt das Treeview-Steuerelement nur die Mitarbeiter an. Die Verknüpfung einer Tabelle mit sich selbst heißt reflexive Verknüpfung.

Beim Anzeigen von Daten aus verknüpften Tabellen werden die in den Tabellen enthaltenen Datensätze entsprechend der Abbildung im Treeview-Steuerelement durchlaufen.

Bei zwei Tabellen bedeutet dies, dass in einer äußeren Schleife die Datensätze der Haupttabelle und in einer inneren Schleife die Datensätze der untergeordneten Tabelle durchlaufen werden.

Beispiel: Kunden und Bestellungen

Am besten lässt sich das an einem Beispiel erklären. Dazu fügen Sie einem leeren Formular ein neues Treeview-Steuerelement hinzu und nennen es tvwTreeview.

Anschließend benötigen Sie nur noch eine Routine, die beim öffnen des Formulars ausgelöst wird und die Kunden- und Bestelldaten in das Treeview-Steuerelement schreibt. Diese Routine sieht wie in Quellcode 1 aus.

Die Routine deklariert und instanziert ein Database- und zwei Recordset-Objekte zum Referenzieren der beiden Tabellen Kunden und Bestellungen.

In der ersten Do While-Schleife werden die Kunden durchlaufen. Dabei wird für jeden Kunden ein Knoten im Treeview angelegt. Innerhalb dieser Schleife wird außerdem das Recordset-Objekt rstBestellungen mit den Bestellungen gefüllt, die zum aktuellen Kunden gehören. Diese werden in einer weiteren Do While-Schleife unterhalb des aktuellen Kunden in das Treeview-Steuerelement eingefügt.

Werte der Key-Eigenschaft

Zu beachten ist dabei die Benennung der Key-Eigenschaft eines jeden Knotens. Dieser muss aus einer Zeichenkette mit einem Buchstaben am Anfang bestehen und eindeutig sein. Außerdem sollte man aus dieser Eigenschaft möglichst den zugrunde liegenden Datensatz identifizieren können, also den Primärschlüssel oder einen anderen eindeutigen Wert in den Key-Wert integrieren.

Normalerweise könnte man einfach einen beliebigen Buchstaben (etwa “a”) verwenden und hinten den Wert des Primärschlüsselfeldes der Tabelle anhängen:

"a" & rst!ID

Wenn Sie es aber wie im vorliegenden Fall mit mehr als einer Tabelle zu tun haben, ist die Eindeutigkeit der Primärschlüsselfelder nicht mehr gewährleistet: Es kann ja durchaus in beiden Tabellen einen Primärschlüssel mit dem Wert 1 geben.

Also müssen Sie sich etwas anderes einfallen lassen. Die Lösung ist allerdings recht einfach: Da der Key-Wert eine beliebige Zeichenkette beinhalten darf, können Sie diesen einfach je Tabelle mit einem anderen Wert beginnen lassen. Im vorliegenden Fall beginnen die Key-Werte dementsprechend mit “Kunde” und “Bestellung”.

Das Ergebnis der Routine sieht wie in Abb. 1 aus. Per Doppelklick auf einen der Kunden zeigen Sie die zu dem Kunden gehörenden Bestellungen an.

Abb. 1: Einfache hierarchische Daten im Treeview-Steuerelement

Die Tabelle Personal der Nordwind-Datenbank liefert ein gutes Beispiel für eine reflexive Beziehung. Einige der Datensätze sind über das Feld Vorgesetzte(r) mit Feldern der gleichen Tabelle verknüpft und liefern damit Informationen über die Hierarchie der Mitarbeiter.

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

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar