vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
Re: Treeview aus Datenbank erzeugen 
Autor: Dirk
Datum: 09.04.10 16:23

Hier mal eine etwas kürzere und "schönere" Version mit meinen Testdaten:
Option Explicit
 
 
Private Const c_KeyPrefix As String = "KEY_"
 
Private Const c_ID As String = "ID"
Private Const c_PID As String = "Parent_ID"
Private Const c_TITEL As String = "Titel"
 
Dim m_rs As ADODB.Recordset
 
 
Private Sub Form_Load()
 
  Set m_rs = New ADODB.Recordset
 
  m_rs.Fields.Append c_ID, adInteger
  m_rs.Fields.Append c_TITEL, adChar, 255
  m_rs.Fields.Append c_PID, adInteger
 
  m_rs.Open
 
  AddRs 1, "Menu 1", 0
  AddRs 2, "Menu 2", 0
  AddRs 3, "Menu 1.1", 1
  AddRs 4, "Menu 1.2", 1
  AddRs 5, "Menu 1.1.1", 3
  AddRs 6, "Menu 2.1", 2
 
  generateTree
 
End Sub
 
Private Sub AddRs(ByVal vID As Long, vName As String, vPID As Long)
 
  m_rs.AddNew
  m_rs(c_ID) = vID
  m_rs(c_TITEL) = vName
  m_rs(c_PID) = vPID
 
End Sub
 
Private Sub generateTree()
 
  Dim boDone    As Boolean
  Dim nd        As Node
 
  boDone = True
 
  Do
 
    m_rs.MoveFirst
 
    Do While Not m_rs.EOF
 
      boDone = True
      On Error Resume Next
      If m_rs(c_PID) = 0 Then
 
        boDone = Not NodeAdd()
 
      Else
 
        If NodeExists(m_rs(c_PID)) Then
          boDone = Not NodeAdd()
        End If
 
      End If
 
      m_rs.MoveNext
 
    Loop
 
  Loop Until boDone = True
 
End Sub
 
Private Function NodeExists(ByVal vID As Long) As Boolean
 
  On Error GoTo NotExist
 
  NodeExists = True
  If Not TreeView1.Nodes(c_KeyPrefix & CStr(vID)) Is Nothing Then
    'dummy abfrage
  End If
 
  Exit Function
NotExist:
  NodeExists = False
 
End Function
 
Private Function NodeAdd() As Boolean
 
  Dim nd As Node
 
  NodeAdd = False
 
  On Error Resume Next
 
  If Not NodeExists(m_rs(c_ID)) Then
 
    Set nd = Nothing
 
    If m_rs(c_PID) = 0 Then
      Set nd = TreeView1.Nodes.Add(, tvwFirst, c_KeyPrefix & CStr(m_rs(c_ID)), _
        m_rs(c_TITEL))
    Else
      Set nd = TreeView1.Nodes.Add(c_KeyPrefix & m_rs(c_PID), tvwChild, _
        c_KeyPrefix & CStr(m_rs(c_ID)), m_rs(c_TITEL))
    End If
 
    Debug.Assert Err = 0
    nd.Expanded = True
    NodeAdd = Not nd Is Nothing
 
  End If
 
End Function

Gruß
Dirk

--
?Get it right the first time

Beitrag wurde zuletzt am 09.04.10 um 16:26:10 editiert.

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Treeview aus Datenbank erzeugen1.228svnofeic09.04.10 14:51
Re: Treeview aus Datenbank erzeugen620wb-soft09.04.10 15:31
Re: Treeview aus Datenbank erzeugen644Dirk09.04.10 16:14
Re: Treeview aus Datenbank erzeugen633Dirk09.04.10 16:23

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel