Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

5.10.7 Daten aus Tabellen im TreeView-Steuerelement darstellen

5.10.8 Daten aus verknüpften Tabellen anzeigen

Beim Anzeigen von Daten aus verknüpften Tabellen werden die in den Tabellen enthaltenen Datensätze entsprechend der Anzeige 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.

Das Füllen des TreeView-Steuerelements erfolgt am besten in der Ereignisprozedur, die beim Laden des Formulars ausgelöst wird. Als Basis für das folgende Beispiel dienen die Tabellen tblKunden und tblBestellungen sowie ein Formular mit einem TreeView-Steuerelement namens tvwKundenUndBestellungen. Damit Sie das TreeView-Steuerelement jederzeit mit dem Ausdruck objTreeView referenzieren können, fügen Sie folgende Zeilen in den Kopf des Formular-Moduls ein (Sie kennen diese Zeilen schon, aber diesmal verwenden diese einen anderen Namen für das TreeView-Steuerelement - ein bisschen Abwechslung muss sein):

Private mTreeView As MSComctlLib.TreeView

Property Get objTreeView() As MSComctlLib.TreeView
    If mTreeView Is Nothing Then
        Set mTreeView = Me.tvwKundenUndBestellungen.Object
    End If
    Set objTreeView = mTreeView
End Property

Die folgende Routine füllt das TreeView-Steuerelement mit den Daten der beiden Tabellen:

Private Sub Form_Load()
    Dim db As DAO.Database
    Dim rstKunden As DAO.Recordset2
    Dim rstBestellungen As DAO.Recordset2
    Dim objNode As MSComctlLib.Node
    Set db = CurrentDb
    Set rstKunden = db.OpenRecordset("tblKunden")
    objTreeView.Nodes.Clear
    Do While Not rstKunden.EOF
        Set objNode = objTreeView.Nodes.Add(, , "Kunde" _
            & rstKunden!KundeID, rstKunden!Firma)
        Set rstBestellungen = db.OpenRecordset("SELECT * FROM " _
            & "tblBestellungen WHERE KundeID = " & rstKunden!KundeID)
        Do While Not rstBestellungen.EOF

            objTreeView.Nodes.Add "Kunde" & rstKunden!KundeID, _
                tvwChild, "Bestellung" & rstBestellungen!BestellungID, _
                rstBestellungen!BestellungID & "/" _
                & rstBestellungen!Bestelldatum
            rstBestellungen.MoveNext
        Loop
        rstKunden.MoveNext
    Loop
    Set objNode = Nothing
    rstKunden.Close
    rstBestellungen.Close
    Set rstKunden = Nothing
    Set rstBestellungen = Nothing
    Set db = Nothing
End Sub

Listing 5.13: Diese Routine füllt das TreeView-Steuerelement mit Daten aus den zwei verknüpften Tabellen tblKunden und tblBestellungen

Dabei deklariert und instanziert die Routine zunächst ein Database- und zwei Recordset2-Objekte zum Referenzieren der beiden Tabellen tblKunden und tblBestellungen.

Die erste Do While-Schleife durchläuft die Kunden. Dabei legt die Routine für jeden Kunden ein Element im TreeView an. Innerhalb dieser Schleife wird außerdem das Recordset2-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.

Zu beachten ist dabei die Benennung der Key-Eigenschaft eines jeden Knotens. Dieser muss wie gehabt 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 - etwa über den Primärschlüssel. Diesen integriert man daher in den Wert der Key-Eigenschaft.

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 Datensatz geben, dessen Primärschlüssel den Wert 1 aufweist. Also lassen Sie den Key-Wert für jede Tabelle mit einer alternativen Zeichenfolge beginnen - etwa mit »Kunde...« und »Bestellung...«.

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

Abbildung 5.28: Kunden und ihre Bestellungen im TreeView-Steuerelement

Nächster Abschnitt:

5.10.9 Reflexive Daten im TreeView-Steuerelement

© 2006-2008 André Minhorst Alle Rechte vorbehalten.