bent ik weer 
ik heb laatst in vba een treeview gemaakt die hierachisch was opgebouwd, ik wil nu precies hetzelfde in VB doen. En het liefst dezelfde code gebruiken (wat volgens mij ook kan) ik moet nu alleen ook de database eraan koppelen (wat bij Access-vba niet nodig was) dat met dus ook ergens in de code ergens gebeuren,
de code die ik nu heb is:
Private Sub Form_Load()
Me!xTree.Nodes.Clear
''==========================================================================================
''========================Form_Load voor TreeView control (xTree)===========================
''==========================================================================================
''Maximaliseer het beeld.
DoCmd.Maximize
On Error GoTo ErrForm_Load
Dim SQL As String
Dim db As Database
Dim rst As Recordset
Dim NodCurrent As node, nodRoot As node
Dim objTree As TreeView
Dim strText As String, bk As String
Set db = CurrentDb
Set rst = db.OpenRecordset("Systemen_qry", dbOpenDynaset, dbReadOnly)
''Maken van reference naar de TreeView control.
Set objTree = Me!xTree.Object
''Vind de eerste Systeem welke een Hoofdsysteem is.
rst.FindFirst "[Afhankelijk] is Null"
''Bouw de TreeView van de Hoofdsystemen en hun Subsystemen.
Do Until rst.NoMatch
''Extract de Hoofdsysteemnaam.
strText = rst![Systeemnaam] & (", " + rst![Code])
''Add een root level node naar de Tree voor het Hoofdsysteem.
Set NodCurrent = objTree.Nodes.Add(, , "a" & rst!SysteemID, strText)
''Gebruik een Placeholder om dit te bewaren in de recordset.
bk = rst.Bookmark
''Start een recursive procedure om alle child nodes toe te voegen
''voor Subsystemen welke onder een Hoofdsysteem staan.
Addchildren NodCurrent, rst
''Ga terug naar de Placeholder.
rst.Bookmark = bk
''Zoek de volgende Hoofdsysteem.
rst.FindNext "[Afhankelijk] is null"
Loop
''====================================Foutafhandeling======================================
ExitForm_Load:
Exit Sub
ErrForm_Load:
MsgBox Err.Description, vbCritical, "Form_Load"
Resume ExitForm_Load
End Sub
''============================================================================================
''Deze procedure voegt childnodes toe aan de tree voor alle subsystemen
''welke onder een bepaald hoofdsysteem vallen, en zichzelf recursively
''noemt voor het toevoegen van alle childnodes voor alle andere Subsystemen
''die ze onder zich hebben.
''Merk op dat deze procedure de open recordset Systemen accepteert by reference
''zo hoef je niet elke keer een nieuwe recordset te openen bij elke aanroep.
''============================================================================================
Sub Addchildren(nodBoss As node, rst As Recordset)
On Error GoTo ErrAddChildren
Dim NodCurrent As node
Dim objTree As TreeView
Dim strText As String, bk As String
''Maak een reference naar de TreeView control.
Set objTree = Me!xTree.Object
''Zoek het eerste systeem welke naar een hoofdsysteem verwijst voor deze node.
rst.FindFirst "[Afhankelijk]=" & Mid(nodBoss.Key, 2)
''Bouw de lijst van systemen welke naar een hoofdsysteem verwijzen.
Do Until rst.NoMatch
''Extract de systeemnaam
strText = rst![Systeemnaam] & (", " + rst![Code])
''Toevoegen aan de tree als chilnode.
Set NodCurrent = objTree.Nodes.Add(nodBoss, tvwChild, "a" & rst!SysteemID, strText)
''Bewaar de plaats in de recordset.
bk = rst.Bookmark
''Voeg de systemen toe welke de currentnode hoofdsysteem is.
Addchildren NodCurrent, rst
''Ga terug naar de plaats in de recordset and ga verder met zoeken.
rst.Bookmark = bk
''Zoek de volgende systeem welke onder een hoofdsysteem valt.
rst.FindNext "[Afhankelijk]=" & Mid(nodBoss.Key, 2)
Loop
''=====================================Foutafhandeling======================================
ExitAddChildren:
Exit Sub
ErrAddChildren:
MsgBox "Cant add child: " & Err.Description, vbCritical, _
"AddChildren(nodBoss As Node) Error: "
Resume ExitAddChildren
Me.Refresh
End Sub
1. kan ik deze code gewoon weer gebruiken?
2. hoe link ik de database er nu aan (waarschijnlijk enorm simpel?)
dank u alvast
ik heb laatst in vba een treeview gemaakt die hierachisch was opgebouwd, ik wil nu precies hetzelfde in VB doen. En het liefst dezelfde code gebruiken (wat volgens mij ook kan) ik moet nu alleen ook de database eraan koppelen (wat bij Access-vba niet nodig was) dat met dus ook ergens in de code ergens gebeuren,
de code die ik nu heb is:
Private Sub Form_Load()
Me!xTree.Nodes.Clear
''==========================================================================================
''========================Form_Load voor TreeView control (xTree)===========================
''==========================================================================================
''Maximaliseer het beeld.
DoCmd.Maximize
On Error GoTo ErrForm_Load
Dim SQL As String
Dim db As Database
Dim rst As Recordset
Dim NodCurrent As node, nodRoot As node
Dim objTree As TreeView
Dim strText As String, bk As String
Set db = CurrentDb
Set rst = db.OpenRecordset("Systemen_qry", dbOpenDynaset, dbReadOnly)
''Maken van reference naar de TreeView control.
Set objTree = Me!xTree.Object
''Vind de eerste Systeem welke een Hoofdsysteem is.
rst.FindFirst "[Afhankelijk] is Null"
''Bouw de TreeView van de Hoofdsystemen en hun Subsystemen.
Do Until rst.NoMatch
''Extract de Hoofdsysteemnaam.
strText = rst![Systeemnaam] & (", " + rst![Code])
''Add een root level node naar de Tree voor het Hoofdsysteem.
Set NodCurrent = objTree.Nodes.Add(, , "a" & rst!SysteemID, strText)
''Gebruik een Placeholder om dit te bewaren in de recordset.
bk = rst.Bookmark
''Start een recursive procedure om alle child nodes toe te voegen
''voor Subsystemen welke onder een Hoofdsysteem staan.
Addchildren NodCurrent, rst
''Ga terug naar de Placeholder.
rst.Bookmark = bk
''Zoek de volgende Hoofdsysteem.
rst.FindNext "[Afhankelijk] is null"
Loop
''====================================Foutafhandeling======================================
ExitForm_Load:
Exit Sub
ErrForm_Load:
MsgBox Err.Description, vbCritical, "Form_Load"
Resume ExitForm_Load
End Sub
''============================================================================================
''Deze procedure voegt childnodes toe aan de tree voor alle subsystemen
''welke onder een bepaald hoofdsysteem vallen, en zichzelf recursively
''noemt voor het toevoegen van alle childnodes voor alle andere Subsystemen
''die ze onder zich hebben.
''Merk op dat deze procedure de open recordset Systemen accepteert by reference
''zo hoef je niet elke keer een nieuwe recordset te openen bij elke aanroep.
''============================================================================================
Sub Addchildren(nodBoss As node, rst As Recordset)
On Error GoTo ErrAddChildren
Dim NodCurrent As node
Dim objTree As TreeView
Dim strText As String, bk As String
''Maak een reference naar de TreeView control.
Set objTree = Me!xTree.Object
''Zoek het eerste systeem welke naar een hoofdsysteem verwijst voor deze node.
rst.FindFirst "[Afhankelijk]=" & Mid(nodBoss.Key, 2)
''Bouw de lijst van systemen welke naar een hoofdsysteem verwijzen.
Do Until rst.NoMatch
''Extract de systeemnaam
strText = rst![Systeemnaam] & (", " + rst![Code])
''Toevoegen aan de tree als chilnode.
Set NodCurrent = objTree.Nodes.Add(nodBoss, tvwChild, "a" & rst!SysteemID, strText)
''Bewaar de plaats in de recordset.
bk = rst.Bookmark
''Voeg de systemen toe welke de currentnode hoofdsysteem is.
Addchildren NodCurrent, rst
''Ga terug naar de plaats in de recordset and ga verder met zoeken.
rst.Bookmark = bk
''Zoek de volgende systeem welke onder een hoofdsysteem valt.
rst.FindNext "[Afhankelijk]=" & Mid(nodBoss.Key, 2)
Loop
''=====================================Foutafhandeling======================================
ExitAddChildren:
Exit Sub
ErrAddChildren:
MsgBox "Cant add child: " & Err.Description, vbCritical, _
"AddChildren(nodBoss As Node) Error: "
Resume ExitAddChildren
Me.Refresh
End Sub
1. kan ik deze code gewoon weer gebruiken?
2. hoe link ik de database er nu aan (waarschijnlijk enorm simpel?)
dank u alvast