Opgelost treeview in Userform

  • Onderwerp starter Onderwerp starter snb
  • Startdatum Startdatum
Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

snb

Verenigingslid
Lid geworden
12 jun 2008
Berichten
20.289
Ik heb een form ("snb") in een database (mdb).

Die open ik met

CSS:
Sub M_snb()
  DoCmd.OpenForm "snb"
End Sub

Ik probeer de Treeview te vullen in de Form_Load gebeurtenis.
Het lijkt of dit event niet plaatsvindt bij opening van het form.
Noch 'Stop', noch een 'breakpoint' schijnt effekt te hebben.

Iemand een suggestie ?
Bij voorbaat dank.
 
Laatst bewerkt:
Beetje moeilijk te beoordelen als we niet weten wat er in de gebeurtenis staat.
 
Er staan stop en een onderbrekingspunt in.
 
Je getoonde code gebruik je alleen om het formulier te openen. Een formulier heeft echter allerlei gebeurtenissen (Bij Laden, Bij Openen, Bij aanwijzen etc) die elk op een ander moment acties triggeren. Dus de gegeven code doet verder niets, tenzij je dus bij één van de specifieke gebeurtenissen ook een procedure gebruikt.
En het zou dus kunnen dat de code die je nu bij <Bij Laden> gebruikt wél werkt bij een andere eigenschap/gebeurtenis.
Post anders de database, want het kan best werken. Ik heb als het goed is ook nog wel een werkend voorbeeld, al heb ik die al een tijdje niet meer uit de kast gehaald.
 
Het lijkt of dit event niet plaatsvindt bij opening van het form.
Een simpele manier om te controleren of de gebeurtenis afgaat is om op de eerste regel iets te zetten als
Code:
MsgBox "laden"
Zie je het bericht, dan ligt het mogelijk aan de code in de gebeurtenis.
Maar nogmaals, zonder code (en vooral zonder voorbeeldbestand) blijft het koffiedik kijken. En dat zou een vetraan als jij toch moeten weten ;)
 
Is dit zo onduidelijk ?
Ik probeer de Treeview te vullen in de Form_Load gebeurtenis.
Het lijkt of dit event niet plaatsvindt bij opening van het form.
Noch 'Stop', noch een 'breakpoint' schijnt effekt te hebben.

CSS:
Private Sub Form_Load()
    Stop
    MsgBox "snb"
End Sub
 
Is dit zo onduidelijk ?
Ja.

De code die je laat zien is, zoals gezegd, alleen om het formulier met de naam snb te openen. De gemiddelde lezer verwacht dat die code onder een knop op een ander formulier staat. Immers: op een formulier zet je geen knop om het formulier zelf te openen.

Een code om een treeview met de gebeurtenis "Bij laden" te vullen ziet er in z'n meest eenvoudige vorm zo uit:
Code:
Private Sub Form_Load()
    Dim tv As MSComctlLib.TreeView
    Dim rs As Recordset
    
    Set rs = CurrentDb.OpenRecordset("tblVulling")
    Set tv = Me.Boom.Object
    
    tv.Nodes.Clear
    While Not rs.EOF
        If IsNull(rs!ParentID) Then
            tv.Nodes.Add , , "x" & rs!Id, rs!Tekst
        Else
            tv.Nodes.Add "x" & rs!ParentID, tvwChild, "x" & rs!Id, rs!Tekst
        End If
        
        rs.MoveNext
    Wend

End Sub
Dus....................................
 
Vertel dan eens hoe/waardoor de gebeurteniscode Form_Load geactiveerd wordt.

De macro
CSS:
Sub M_snb()
  DoCmd.OpenForm "snb"
End Sub

doet dat blijkbaar niet.
 
Door het formulier te openen.
 
Vertel dan eens hoe/waardoor de gebeurteniscode Form_Load geactiveerd wordt.
Altijd. Er is denk ik nog steeds spraakverwarring: vanuit formulier A kun je prima met jouw code formulier B openen. Op formulier B kun je dan middels de verschillende gebeurtenissen op verschillende momenten acties laten uitvoeren. Dat doe jij dus niet (goed). Alleen een Stop en Msgbox draaien op een formulier is zinloos; alles wat er verder zou moeten gebeuren, gebeurt toch wel.
 
@snb: je hebt heel wat sneller een bruikbaar antwoord als je de database post :). Of de code van Peter gebruikt. Die van mij is niet veel anders.
 
Na de opdracht
DoCmd.OpenForm "Formulier1"
worden alle drie de events getriggerd, ik krijg keurig drie messageboxen te zien.
Code:
Option Compare Database

Private Sub Form_Activate()
    MsgBox "Activate"
End Sub

Private Sub Form_Load()
    MsgBox "Load"
End Sub

Private Sub Form_Open(Cancel As Integer)
    MsgBox "Open"
End Sub
 
Je hebt een database met alleen een formulier gepost zonder code, zonder tabel en dus ook zonder data. Hoe denk je die Treeview te gaan vullen?
 
Ik ben net terug van vakantie en nog niet helemaal opgestart, maar hier een mooi voorbeeldje waar je wel wat verder mee kunt, denk ik.
 

Bijlagen

Hierbij ook mijn voorbeeldje. Inclusief formulier waar je snb mee opent.
 

Bijlagen

Knap zonder data :D.
 
Mijn vraag ging niet over het vullen van een treeview,, maar over het aktiveren van een gebeurteniscode van een form.
 
Volgens mij is vraag afdoende beantwoord. Nog maar een keer dan. De gebeurtenis "Bij laden" wordt automatisch geactiveerd als je een formulier opent. Of er dan gebeurt wat je wilt, hangt er uiteraard vanaf welke (VBA) code je in de gebeurtenis zet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan