Wie fülle ich ein TreeView von einer SQL Server CE Datenbank Tabelle

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Coldfire.

    Wie fülle ich ein TreeView von einer SQL Server CE Datenbank Tabelle

    Hallo zusammen,

    ich bin gerade dabei ein Programm in VB.NET zu schreiben, womit ich ein TreeView gemäss Daten von meiner Datenbank Tabelle (SQL Server CE) fülle.

    In der Datenbank habe ich folgende Tabelle:

    Brainfuck-Quellcode

    1. ID Country ReferenceIDNumber
    2. ----------------------------------------
    3. 1 England Null
    4. 2 France Null
    5. 3 Spain Null
    6. 4 Paris 2
    7. 5 Madrid 3
    8. 6 London 1
    9. 7 Lyon 2
    10. 8 Barcelona 3
    11. 9 Sights 5


    Das Ziel ist es, dass der TreeView in meinem Programm diese Daten folgendermassen anzeigt:


    Quellcode

    1. England
    2. -> London
    3. Spain
    4. -> Barcelona
    5. -> Madrid
    6. -> Sights
    7. France
    8. -> Paris
    9. -> Lyon


    Das Ausführen von SQL commands, und empfangen von Daten ist kein Problem.
    Jedoch kriege ich es leider nicht hin, diese Daten ordnungsgemäss in meiner TreeView Tabelle anzuzeigen.
    Diese Tabelle wird mit der Zeit wachsen und ich muss den VB.NET Code möglichst global schreiben, sodass beliebig viele unter Ebene hinzugefügt werden kann.

    Folgendes habe ich bereits probiert (nicht relevante Code habe ich als Kommentar geschrieben)

    Visual Basic-Quellcode

    1. Private Sub LoadContent()
    2. 'Datenbank Verbindung öffnen
    3. 'Folgender SQL Server CE Command ausführen:
    4. .CommandText = "SELECT * FROM tbl_Data WHERE ReferenceIDNumber = 'Null'"
    5. DR = .ExecuteResultSet(SqlServerCe.ResultSetOptions.Scrollable)
    6. Dim rsltFindData As Boolean = False
    7. Dim rootNode as TreeNode
    8. If DR.HasRows Then
    9. While DR.Read
    10. rootNode = Tree_View.Nodes.Add(DR(0), DR(1))
    11. LetsSearchSubData(DR(0), rootNode)
    12. End While
    13. End If
    14. 'Datenbank Verbindung schliessen
    15. End Sub
    16. Private Sub LetsSearchSubData(byval ID as integer, byval rootNode as TreeNode)
    17. 'Datenbank Verbindung öffnen
    18. 'Folgender SQL Server CE Command ausführen:
    19. .CommandText = "SELECT * FROM tbl_Data WHERE ReferenceIDNumber = '" & ID & "'"
    20. DR = .ExecuteResultSet(SqlServerCe.ResultSetOptions.Scrollable)
    21. If DR.HasRows Then
    22. While DR.Read
    23. rootNode = rootNode.Nodes.Add(DR(0), DR(1))
    24. LetsSearchSubData(DR(0), rootNode)
    25. End While
    26. End If
    27. 'Datenbank Verbindung schliessen
    28. End Sub


    Das Resultat in der TreeView ist nur 'Madrid'.
    Ich hoffe Ihr könnte mir helfen oder einen Tipp geben. ?(

    Vielen Dnak bereits im Voraus,
    LG BK

    bk__ schrieb:

    Das Ausführen von SQL commands, und empfangen von Daten ist kein Problem.
    So wie du's machst ist das doch ein Problem, denn du versaust dir alle Möglichkeiten von Databinding und einer Architektur, die Daten und Oberfläche trennt.
    Für einen reinen Reading-Viewer mag das hingehen, aber wenn du Daten auch verändern willst, gugge vier Views-Videos ein paar Varianten zur Read-Write-Präsentation, und wie man sie implementiert.
    Hallo
    Vielen Dank für deine Antwort. Ich werde es mir anschauen.
    Mich würde es trotzdem interessieren wie man dieses Problenm, basierend auf den oben erwähnten Code, lösen würde. Dieser TreeView wird am Schluss mehrheitlich als reading viewer fungieren.
    Vielen Dank.
    Auf obigem Code würde ich nix basieren lassen.
    Wie gesagt: Befüll eine typisierte DataTable mit einem DataAdapter, und befüll den Treeview mw. aus der DataTable.

    Dir fehlen auch noch grundlegendsten Grundlagen, machma Option Strict On! - ds dürfte dir so einige deiner Code-Sünden vor Augen führen.
    @ErfinderDesRades es mag sein, dass du auf diesem Code nichts basieren würdest. Aber lasse mir doch bitte den Freiraum, trortzdem zu erfahren wie man dieses Problem basierend auf meinem Code lösen könnte.
    Ich hoffe, dass ein weiterer Mitglied kann mir diesbezüglich weiter helfen.
    Ps: Danke wegen dem Tipp bzgl. Option strict on

    @Coldfire Danke, habe ich gemacht.Problem besteht leider noch.

    bk__ schrieb:

    ... lasse mir doch bitte den Freiraum, trortzdem zu erfahren wie man dieses Problem basierend auf meinem Code lösen könnte.
    Ich hoffe, dass ein weiterer Mitglied kann mir diesbezüglich weiter helfen.
    Ja, natürlich!
    Ich kann dir diesen Freiraum ja überhaupt nicht nehmen - selbst wenn ich wollte :saint: .