Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1

    [VB6] treeview caricata da ADO

    Ciao sto caricando una treeview con ADO ma sono fermo al secondo nodo ...

    codice:
    Private Sub cForm_EsitoRicerca(xRs As ADODB.Recordset)
    On Error Resume Next
    Dim nInd As Long
        Dim N As Node
        '**************PRIMO NODO**********************************
        Do While Not xRs.EOF
        'relative = vuoto se principale //
            Set N = trvAlbero.Nodes.Add()
            N.Bold = True
            N.Text = xRs!Gruppo & " - " & xRs!Descrizione
            N.Tag
            nInd = N.Index
        '*****************SECONDO NODO******************************
                Dim cRs As New ADODB.Recordset
                cRs.Open "SELECT * FROM CLASSE WHERE ID_GRUPPO = " & xRs!ID, Cn, adOpenForwardOnly, adLockReadOnly, adCmdText
                Do While Not cRs.EOF
                    Set N = trvAlbero.Nodes.Add(nInd, tvwChild)
                    N.Text = cRs!Classe & " - " & cRs!Descrizione
        '****************TERZO NODO*********************************
                    Dim sRs As New ADODB.Recordset
                    sRs.Open "", Cn, adOpenForwardOnly, adLockReadOnly, adCmdText
                    Do While Not sRs.EOF
                        'qui cosa scrivo
                        qui volevo caricare un altro sottonodo
                        cioe' quello popolato prima
                    sRs.MoveNext
                    Loop
                cRs.MoveNext
                Loop
                cRs.Close
                Set cRs = Nothing
        xRs.MoveNext
        Loop
        trvAlbero.BorderStyle = ccFixedSingle
    End Sub
    In pratica genero un nodo con dei sottonodi, che sono delle child io voerrei che fossero a loro lvolta dei nodi.

    Chi mi aiuta?

  2. #2
    Dovrebbe essere così, ma non ho potuto controllare:
    codice:
    Private Sub cForm_EsitoRicerca(xRs As ADODB.Recordset)
        On Error Resume Next
        Dim nInd As Long
        Dim nInd2 As Long
        Dim N As Node
        '**************PRIMO NODO**********************************
        Do While Not xRs.EOF
        'relative = vuoto se principale //
            Set N = trvAlbero.Nodes.Add()
            N.Bold = True
            N.Text = xRs!Gruppo & " - " & xRs!Descrizione
            N.Tag
            nInd = N.Index
        '*****************SECONDO NODO******************************
                Dim cRs As New ADODB.Recordset
                cRs.Open "SELECT * FROM CLASSE WHERE ID_GRUPPO = " & xRs!ID, Cn, adOpenForwardOnly, adLockReadOnly, adCmdText
                Do While Not cRs.EOF
                    Set N = trvAlbero.Nodes.Add(nInd, tvwChild)
                    N.Text = cRs!Classe & " - " & cRs!Descrizione
                    nInd2 = N.Index
        '****************TERZO NODO*********************************
                    Dim sRs As New ADODB.Recordset
                    sRs.Open "", Cn, adOpenForwardOnly, adLockReadOnly, adCmdText
                    Do While Not sRs.EOF
                        Set N = trvAlbero.Nodes.Add(nInd2, tvwChild)
                        N.Text = ...
                        sRs.MoveNext
                    Loop
                cRs.MoveNext
                Loop
                cRs.Close
                Set cRs = Nothing
        xRs.MoveNext
        Loop
        trvAlbero.BorderStyle = ccFixedSingle
    End Sub
    Chi non cerca trova.

  3. #3
    Scusa grazie mille ci sono arrivato oggi alle 15:00

    guarda un po' che bello:

    codice:
    Private Sub cForm_EsitoRicerca(xRs As ADODB.Recordset)
    On Error Resume Next
    Dim nInd As Long
    Dim N As Node
    Dim M As Node
    Dim O As Node
    Dim Q As Node
        '**************PRIMO NODO**********************************
        Do While Not xRs.EOF
        'relative = vuoto se principale //
            Set N = trvAlbero.Nodes.Add()
            N.ForeColor = vbRed
            N.Text = xRs!Gruppo & " - " & xRs!Descrizione
            N.Tag = xRs!Gruppo
            N.Key = "NN" & xRs!ID
           ' N.Tag
            nInd = N.Index
            nsub = N.Child
        '*****************SECONDO NODO******************************
                Dim cRs As New ADODB.Recordset
                cRs.Open "SELECT * FROM CLASSE WHERE Annullamento = False AND ID_GRUPPO = " & xRs!ID, Cn, adOpenForwardOnly, adLockReadOnly, adCmdText
                Do While Not cRs.EOF
                    Set M = trvAlbero.Nodes.Add(nInd, tvwChild)
                    M.Text = cRs!Classe & " - " & cRs!Descrizione
                    M.Tag = cRs!Classe
                    M.Key = "MM" & cRs!ID
                    mInd = M.Index
        '****************TERZO NODO*********************************
                    Dim sRs As New ADODB.Recordset
                    sRs.Open "SELECT * FROM CONTO WHERE Annullamento = False AND ID_CLASSE = " & cRs!ID, Cn, adOpenForwardOnly, adLockReadOnly, adCmdText
                    Do While Not sRs.EOF
                        'qui cosa scrivo
                        Set O = trvAlbero.Nodes.Add(mInd, tvwChild)
                        O.Text = sRs!Conto & " - " & sRs!Descrizione
                        O.Tag = sRs!Conto
                        O.Key = "OO" & sRs!ID
                        oInd = O.Index
        '****************QUARTO NODO********************************
                        Dim oRs As New ADODB.Recordset
                        oRs.Open "SELECT * FROM CENTRO WHERE Annullamento = False AND ID_CONTO = " & sRs!ID, Cn, adOpenForwardOnly, adLockReadOnly, adCmdText
                        Do While Not oRs.EOF
                            Set Q = trvAlbero.Nodes.Add(oInd, tvwChild)
                            Q.Text = oRs!CENTRO & " - " & oRs!Descrizione
                            Q.Tag = oRs!CENTRO
                            Q.Key = "QQ" & oRs!ID
                            qInd = Q.Index
                        oRs.MoveNext
                        Loop
                        oRs.Close
                        Set oRs = Nothing
                    sRs.MoveNext
                    Loop
                    sRs.Close
                    Set sRs = Nothing
                cRs.MoveNext
                Loop
                cRs.Close
                Set cRs = Nothing
        xRs.MoveNext
        Loop
        'cRs.Close
        'Set cRs = Nothing
        'sRs.Close
        'Set sRs = Nothing
        trvAlbero.BorderStyle = ccFixedSingle
    End Sub
    Funzia benone

    Grazie ancora!!


  4. #4

    treeview

    scusate ragazzi ripro la discussione
    anch'io dovrei fare la stessa cosa in net
    ma per rendere i nodi infiniti come si può fare???
    forse tramite un'array multidimensionale............
    Ma sarà..... ma io ci credo poo....

  5. #5
    Esatto!

    Poi puoi beccare i nodi in vari modi

    codice:
    For each nodes in ...
    Per gli indici dovrai usare proprio gli array

    codice:
    Nodo(0)
    Nodo(1)
    Nodo(2) ...
    :tongue:

  6. #6

    ciao

    raffaeu
    in che senso devo bloccare i nodi....
    ma in quella maniera i nodi sono infiniti....

    La struttura della mia tabella è così

    id_cat cat p_id
    dove il livello lo trovo da p_id dove specifico l'appartenenza al nodo principale....
    Mi aiuteresti inizialmente come potri fare....
    Ciao e grazie
    Ma sarà..... ma io ci credo poo....

  7. #7
    Ho detto beccare non bloccare, mmm
    Si usa gli array() e i nodi sono infiniti.

    Io splitto delle stringhe

    es

    1.01.01.03
    2.034.342.12

    Non sapendo che lunghezza avranno, ad ogni punto creo un nodo ..
    I numeri sono gli ID di alcuni recordset.

  8. #8

    scusa

    >bloccato
    avevo sbagliato a scrivere.
    Ma io inizio in serata o domani a farlo.
    Capisco cosa vuoi dire generi sempre una stringa che intervalla gli id da un punto o una barra eccc poi trovi la profondità e l'id della categoria principale tramite la funzione split.
    A me restano indigesti gli array (porca miseria).
    Ciao
    Ma sarà..... ma io ci credo poo....

  9. #9

    a scusa

    ma come fai a determinare in che sottoalbero collocare la stringa (livello)
    Ma sarà..... ma io ci credo poo....

  10. #10
    bEH SE TI SONO CHIARI GLI ARRAY ...

    codice:
        Do While Not xRs.EOF
        'relative = vuoto se principale //
            Set N(0) = trvAlbero.Nodes.Add()
            N(0).ForeColor = vbRed
            N(0).Text = xRs!Gruppo & " - " & xRs!Descrizione
            N(0).Tag = xRs!Gruppo
            N(0).Key = "NN" & xRs!ID
           ' N(0).Tag
            nInd = N(0).Index
            nsub = N(0).Child

    L' array lo dichiari cosi'
    codice:
    Dim N() as Nodes
    Set N() = indice ... Split(stringa,".")

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.