Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0625: Inhalt einer Datenbank in einem Treeview anzeigen

 von 

Beschreibung 

Das folgende Beispiel beschreibt, wie man den Inhalt einer Datenbank in einem Treeview darstellen kann.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [7,13 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'-------------- Anfang Projektdatei tvwdb.vbp  --------------
' Es muss ein Verweis auf 'Microsoft ActiveX Data Objects 2.5 Library' gesetzt werden.
' Die Komponente 'Microsoft Windows Common Controls 6.0 (SP6) (MSCOMCTL.OCX)' wird benötigt.

'------- Anfang Formular "frmMain" alias frmMain.frm  -------
' Steuerelement: Bilderlistenelement "il"
' Steuerelement: Baumstrukursteuerelement "tvw"

Option Explicit

Private db As ADODB.Connection

Private Sub Form_Load()
    'Deklarieren der Variablen für die NodeObjekte
    Dim sGruppe As String
    Dim sGruppenid As String
    Dim sKey As String
    
    Dim i As Integer
    Dim nNode As Node
    Dim rs As Recordset
    Dim comm As ADODB.Command
    
    Set db = New ADODB.Connection
    db.CursorLocation = adUseClient
    
    'Für ACCESS 97
    db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data " & _
            "Source=" & App.Path & IIf(Right(App.Path, 1) = "\", "", "\") & "Personal.mdb;"
    
    'Für ACCESS 2000
    'db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data " & _
            "Source=" & App.Path & IIf(Right(App.Path, 1) = "\", "", "\") & "Personal.mdb;"
    
    'Mit Command Objekt auf Tabelle zugreifen
    Set comm = New ADODB.Command
    With comm
        .ActiveConnection = db
        .CommandType = adCmdText
        .CommandText = "Select * From Gruppe"
    End With
    Set rs = comm.Execute
    
    'Datensätze auslesen
    While Not rs.EOF
        For i = 0 To rs.Fields.Count - 1
            'Feldnamen auslesen
            'Groß und Kleinschrift beachten!
            Select Case rs.Fields(i).Name
                Case "GRUPPEN_NAME"
                    sGruppe = rs.Fields(i).Value
                Case "GRUPPEN_ID"
                    sGruppenid = rs.Fields(i).Value
            End Select
        Next i
      
        'Deklarieren des Schlüssels für die Untergruppe
        sKey = "ID," & sGruppenid
        
        Set nNode = tvw.Nodes.Add(, tvwChild, sKey, sGruppe, 1)
        Call AddPersonal(sGruppenid, sKey)
        rs.MoveNext
    Wend
    
    Set rs = Nothing
    Set comm = Nothing
    Set nNode = Nothing
End Sub

Public Sub AddPersonal(sGruppenid, sKey)
    Dim sPersonalname As String
    Dim sPersonalid As String
    Dim sTelefonid As String
    Dim comm As ADODB.Command
    Dim rs As ADODB.Recordset
    Dim i As Integer
    Dim nNode As Node
    
    Set comm = New ADODB.Command
    
    With comm
        .ActiveConnection = db
        .CommandType = adCmdText
        .CommandText = "Select * From PERSONAL Where GRUPPEN_ID =" & CVar(sGruppenid)
    End With
    Set rs = comm.Execute
    
    'Datensätze auslesen
    While Not rs.EOF
        For i = 0 To rs.Fields.Count - 1
            Select Case rs.Fields(i).Name
                Case "PERSONAL_NAME"
                    sPersonalname = rs.Fields(i).Value
                Case "PERSONAL_ID"
                    sPersonalid = rs.Fields(i).Value
            End Select
        Next i
        
        sTelefonid = sKey & "," & sPersonalid
        Set nNode = tvw.Nodes.Add(sKey, tvwChild, sTelefonid, sPersonalname, 1)
        
        Call AddTelefon(sPersonalid, sTelefonid)
        rs.MoveNext
    Wend
    
    Set nNode = Nothing
    Set rs = Nothing
    Set comm = Nothing
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    db.Close
    Set db = Nothing
End Sub

Private Sub tvw_Collapse(ByVal Node As MSComctlLib.Node)
  Node.Image = 1
End Sub

Private Sub tvw_Expand(ByVal Node As MSComctlLib.Node)
  Node.Image = 2
End Sub

Public Sub AddTelefon(sPersonalid, sTelefonid)
    Dim sTelefon As String
    Dim comm As ADODB.Command
    Dim nNode As Node
    Dim rs As Recordset
    Dim i As Integer
    
    Set comm = New ADODB.Command
    With comm
        .ActiveConnection = db
        .CommandType = adCmdText
        .CommandText = "Select * From TELEFON Where PERSONAL_ID =" & CVar(sPersonalid)
    End With
    Set rs = comm.Execute
    
    'Datensätze auslesen
    While Not rs.EOF
        For i = 0 To rs.Fields.Count - 1
            Select Case rs.Fields(i).Name
                Case "TEL_NUMBER"
                    sTelefon = rs.Fields(i).Value
            End Select
        Next i
            
        Set nNode = tvw.Nodes.Add(sTelefonid, tvwChild, , sTelefon, 3)
        rs.MoveNext
    Wend
    
    Set rs = Nothing
    Set comm = Nothing
    Set nNode = Nothing
End Sub

'-------- Ende Formular "frmMain" alias frmMain.frm  --------
'--------------- Ende Projektdatei tvwdb.vbp  ---------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 3 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von martin am 30.08.2005 um 02:32

Muy bueno, very good

Kommentar von Martin K. am 20.12.2004 um 00:52

Hallo,

Leider schaffe ich es nicht den Tipp 0625: Inhalt einer Datenbank in einem Treeview anzeigen in die aktuelle .NET umgebung einzubinden, könnten sie mir helfen?

Beste Grüße

Martin

Kommentar von flo am 11.10.2004 um 10:57

UND WIE PSEICHERT MAN DES?