Toon posts:

[BC3] [VB] Treeview

Pagina: 1
Acties:
  • 132 views sinds 30-01-2008

Verwijderd

Topicstarter
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

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 13:54

Basszje

Reisvaap!]

Database kan je koppelen door ADO te gebruiken :

voeg bij je references ADO versie (wat je hebt ) toe , dan kan je nl gewoon een DB object creeren ( set bla = new ADODB.COnnection ) .

Voor docs over ADO zelf moet je maar ff bij de devguru o.i.d. kijken .

Treeview kan je gewoon standaard aanroepen met de MSCOMCTL.OCX Lib. ( help hiervoor staat in window\temp\mscomctl(?).chm ) .

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Verwijderd

Ik probeer een kind toe te voegen in VBa maar ik zou niet weten wat de variabele 'tvwChild' is, Access herkent hem namelijk ook totaal niet.

iemand enig idee?

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:46
Ik zou het ook niet weten met de info die jij verstrekt...
Misschien is het wel de TreeNode die je toevoegt...

https://fgheysels.github.io/


Verwijderd

Laat maar al gevonden het is een getal namelijk 4, ik had 0,1,2,3 al geprobeerd en 4 nog niet, bleek het te zijn.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

mjah blijft een beetje een loze kick voor dit topic

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.