Newsgroup: it.comp.appl.access
Titolo: [TreeView]: Errore run time -  chiave errata

Ciao,
scusate la mia ignoranza ma mi trovo di fronte a qualcosa + grosso di me!
Ho una tabella che utilizzo per popolare una treeview con un campo "key" i
cui record assumono la forma seguente:
01
02
03
03.01
03.02
03.03.01
03.03.02
03.04
04
05
etc..
Ho ricavato il codice necessario (cercando di studiarlo) dall'esempio di MS
x il db Northwind.
Alla riga (*) ricevo l'errore come in oggetto
Questo è il codice con procedura ricorsiva che vi riporto... "Chiave errata"
Dove sbaglio?
----------------------------------------------------------------------------
------
Private Sub Form_Load()
    'Popola la TreeVieW
    On Error GoTo ErrForm_Load
    Dim db As Database
    Dim rst As Recordset
    Dim stKey As String
    Dim stText As String
    Dim nodCurrent As Node
    Dim nodPrec As Node
    Dim objTree As TreeView
    Dim bk As String
    Dim inCurrLevel As Integer
    Dim inPrecLevel As Integer
    'Apre la tabella "tbl_Gerarchia" e ordina in base alla chiave
    Set db = CurrentDb
    Set rst = db.OpenRecordset("SELECT * FROM tbl_Gerarchia ORDER BY Key")
    rst.MoveFirst
    'Create a reference to the TreeView Control.
    Set objTree = Me!TreeView.Object
    'Build the TreeView list
    Do Until rst.NoMatch
        'Estrai gli attributi necessari
        stKey = rst![Key]
        stText = rst![Text]
        inCurrLevel = Len(stKey)
        'Determina il livello
        If inPrecLevel = 0 Then
            'Si tratta del primissimo nodo da inserire
(*)        Set nodCurrent = objTree.Nodes.Add(, , stKey, stText)
        ElseIf inCurrLevel = inPrecLevel Then
            'Si tratta di aggiungere un nodo di pari livello
            Set nodCurrent = objTree.Nodes.Add(, , stKey, stText)
        ElseIf inCurrLevel > inPrecLevel Then
            'Si tratta di aggiungere un nodo figlio
            'Si chiama ricorsivamente la procedura
            bk = rst.Bookmark
            AddChildren nodCurrent, rst
            rst.Bookmark = bk
        End If
        inPrecLevel = Len(stKey)
        rst.MoveNext
    Loop
    rst.Close
ExitForm_Load:
    Exit Sub
ErrForm_Load:
    MsgBox Err.Description, vbCritical, "Form_Load"
    Resume ExitForm_Load
End Sub
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
    'Create a reference to the TreeView control.
    Set objTree = Me!xTree.Object
    'Build the list of employees who report to this supervisor.
    Do Until rst.NoMatch
        stKey = rst![Key]
        stText = rst![Text]
        inLevel = Len(stKey)
        'Determina il livello
        If inCurrLevel = inPrecLevel Then
            'Si tratta di aggiungere un nodo di pari livello
            Set nodCurrent = objTree.Nodes.Add(, , stKey, stText)
        ElseIf inCurrLevel > inPrecLevel Then
            'Si tratta di aggiungere un nodo figlio
            'Si chiama ricorsivamente la procedura
            bk = rst.Bookmark
            Set nodCurrent = objTree.Nodes.Add(nodBoss, tvwChild, stKey,
stText)
            rst.Bookmark = bk
        End If
        inPrecLevel = Len(stKey)
        .MoveNext
    Loop
ExitAddChildren:
    Exit Sub
ErrAddChildren:
    MsgBox "Can't add child:  " & Err.Description, vbCritical, _
        "AddChildren(nodBoss As Node) Error:"
    Resume ExitAddChildren
End Sub
-- 
Massimiliano Pratelli

 ha scritto nel messaggio news:4384856e$0$7311$4faf...@reader4.news.tin.it...

Entrambi i campi [Key] e [Text] sono pieni (non nulli)? Magari al treeview da fastidio un valore nullo...
Ciao.
-- 
Sergio MAZZA 


Si, sono pieni...
Perň ho appena provato cosě e sembra funzionare.
Invece della forma
Set nodCurrent = objTree.Nodes.Add(, , stKey, stText)
ho usato
Set nodCurrent = objTree.Nodes.Add(, , "_" & stKey, stText)
Cioč sembra che il parametro Key voglia non ami una variabile diretta...
possibile?
Massimiliano

 Massimiliano
Non lo so' Massimiliano; io non l'ho mai utilizzato...
Ciao.
-- 
Sergio MAZZA