Das folgende Beispiel zeigt, wie man in Access mit Hilfe eines TreeView-Controls, 2-Tabellen einer 1:n Relation in Ebenen darstellen kann. Der Verwendungszweck ist vielseitig einsetzbar z.B. in einer kleinen Dokumentenablage, die in der ersten Ebene das eigenliche Dokument darstellt und in der zweiten Ebene den Link zu einem Dokument wiederspiegelt. Allgemeine Informationen/ benötigte Steuerelemente:
Hinweise: Vorgehensweise 1. Neues Formular erstellen und unter "weitere Steuerelemente" der Toolbox das ImageListControl 6.0 (SP6) sowie das TreeViewControl 6.0 (SP2) in das Formular einbringen. 1.1 Tragen Sie in den Eigenschaften der Steuerelmente jeweilig den Namen der Steuerelemente ein. Standardmäßig ist dieser schon vergeben, kann aber geändert werden. 1.2 Durch einen Doppelklick auf das TreeViewControl gelangen Sie in die "Eigenschaften von TreeCtl". Registrieren Sie dort unter dem Punkt "ImageList" das ImageListControl 1.3 Durch einen Doppelklick auf das ImageListControl gelangen Sie in die "Eigenschaften von ImageListControll". Klicken Sie die Registerkarte "Image" an und wählen Sie unter "insert Image" ihre Bildsymbole aus. 2. Erstellen Sie ein neues Modul und tragen Sie folgenden Code ein (Code dürfte ausreichend beschrieben sein): Option Compare Database Option Explicit ' Autor: Christoph Wruck/ Intracs Development© 2001 Public Function fncFillListView(FirstDomain As String, _ SecondDomain As String, _ Ctrl As Object, Expand As Boolean) Dim ObjTreeView As Object Dim NodeLevel1 As Node Dim NodeLevel2 As Node Dim Node As Node Dim db As Database Dim RsLevel1 As Recordset Dim RsLevel2 As Recordset Dim ValueCount1 As Long Dim ValueTotCount1 As Long Dim ValueCount2 As Long Dim ValueTotCount2 As Long Set db = CurrentDb() ' db Setzen Set ObjTreeView = Ctrl ' Steuerelement zuordnen ObjTreeView.Sorted = True ' Sortierung ja/nein ' Setze den Recordset unter Berücksichtigung der FirstDomain(1. Tabelle) Set RsLevel1 = db.OpenRecordset(FirstDomain, dbOpenDynaset) RsLevel1.MoveLast ' gehe zum letzten Datensatz der Tabelle ValueTotCount1 = RsLevel1.RecordCount ' zähle die Datensätze RsLevel1.MoveFirst ' gehe zum ersten Datensatz ' lösche alle Einträge des Steuerelementes ObjTreeView.Nodes.clear ' öffne die "For/Next"- Schleife und setze Einträge/Datensätze ' der 1. Tabelle in die erste Ebene des TreeView For ValueCount1 = 1 To ValueTotCount1 Set NodeLevel1 = ObjTreeView.Nodes.Add(, , RsLevel1!Item, RsLevel1!Item, 1) ' lade das Image mit dem Index "2" aus dem ImageListControl ' bei Expansion des Knotenpunktes NodeLevel1.ExpandedImage = 2 ' Setze den Recordset unter Berücksichtigung der SecondDomain(2. Tabelle) Set RsLevel2 = db.OpenRecordset(SecondDomain, dbOpenDynaset) RsLevel2.MoveLast ValueTotCount2 = RsLevel2.RecordCount RsLevel2.MoveFirst ' öffne die "For/Next"- Schleife und setze Einträge/Datensätze ' der 2. Tabelle in die zweite Ebene des TreeView For ValueCount2 = 1 To ValueTotCount2 If RsLevel1!ID = RsLevel2!ID Then Set NodeLevel2 = ObjTreeView.Nodes.Add(NodeLevel1, tvwChild, , RsLevel2!Item, 3) RsLevel2.MoveNext Else RsLevel2.MoveNext End If Next RsLevel1.MoveNext Next ' schließe die Recordsets RsLevel1.Close RsLevel2.Close db.Close Set db = Nothing ' alle Elternknoten werden Expandiert For Each Node In Ctrl.Nodes Node.Expanded = Expand Next End Function 3. Erstellen Sie 2 Tabellen und vergeben Sie Namen an die Tabellen 4. Tragen Sie nun im Formularereignis "Bei Laden" folgenden Funktionaufruf an: Call fncFillListView("DeineTabelle1", "DeineTabelle2", Me!DeinSteuerelement, True) Hier wird die Funktion aufgerufen unter Berücksichtigung der Tabellen und des Namens deines Steuerlementes. Das war es und viel Spaß mit dem Code. Dieser Tipp wurde bereits 33.775 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Tipp des Monats Dezemeber 2024 Roland Wutzke MultiSort im ListView-Control Dieses Beispiel zeigt, wie sich verschiedene Sortierfunktionen für ein ListView Control realisieren lassen. TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |