Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: tazrebelraider en 28 Febrero 2012, 05:53 am



Título: Treeview VB.net
Publicado por: tazrebelraider en 28 Febrero 2012, 05:53 am
buenas dias a todos, compañeros foreros.
my duda es la siguiente: Tengo una tabla con los siguientes datos
nomcue,codcue los cuales deseo mostrar en un control treeview los datos son de esta forma
1 cuenta 1
11 hijo cuenta 1
1105 hijo de hijo cuenta 1
110505 hijo de hijo de hijo cuenta 1
11050505 este seria el ultimo nivel
1
--11
-----1105
--------110505
-----------11050505
normalmente trabajo directamente con codigo si usar dataset para filtrar siempre la información que recupero de la base de datos. bueno el problema es que cuando llego al nivel 4 me arroja un error de index

les anoto el codigo es un poco largo pero en resumidas necesito resumirlo y buscar la mejor forma de que muestre los datos

Private Sub FrmPUC_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim sql As String
        Dim nodo As TreeNode
        Dim consulta, consu, consul, consult As ADODB.Recordset
        Open_cn()
        'nivel 1
        sql = "Select codcue,nomcue,nivcue from con_cuentas where nivcue = 1 order by codcue ASC"
        consulta = cn.Execute(sql)
        If Not consulta.EOF Then
            nodescuentas.BeginUpdate()
            nodo = nodescuentas.Nodes.Add("Plan Unico de Cuentas")
            While Not consulta.EOF
                Dim nom1 As String = consulta.Fields("nomcue").Value
                Dim val1 As String = consulta.Fields("codcue").Value & " - " & QuitaEspaciosDobles(nom1)
                nodo.Nodes.Add(val1)
                Dim nodhijo As String
                Dim nopadre As String = consulta("codcue").Value
                nopadre = QuitaEspaciosDobles(nopadre)
                'nivel 2
                nodhijo = "Select codcue,nomcue from con_cuentas where nivcue=2 and codcue like '" & nopadre & "%'"
                consu = cn.Execute(nodhijo)
                While Not consu.EOF
                    Dim nombre As String = consu("codcue").Value
                    nombre = QuitaEspaciosDobles(nombre)
                    Dim compara As String = nombre.Substring(0, 1)
                    If compara = nopadre Then
                        Dim nom2 As String = consu.Fields("nomcue").Value
                        Dim val2 As String = consu.Fields("codcue").Value & " - " & QuitaEspaciosDobles(nom2)
                        nodo.Nodes(nodo.Nodes.Count - 1).Nodes.Add(val2)
                        Dim consunieto As String = "Select codcue,nomcue from con_cuentas where nivcue=3 and codcue like '" & nombre & "%'"
                        consul = cn.Execute(consunieto)
                        If Not consul.EOF Then
                            'nivel 3
                            While Not consul.EOF
                                Dim nodnieto As String = consul.Fields("codcue").Value
                                nodnieto = QuitaEspaciosDobles(nodnieto)
                                Dim nom3 As String = consul.Fields("nomcue").Value
                                Dim val3 As String = consul.Fields("codcue").Value & " - " & QuitaEspaciosDobles(nom3)
                                nodo.Nodes(nodo.Nodes.Count - 1).Nodes(nodo.Nodes(nodo.Nodes.Count - 1).Nodes.Count - 1).Nodes.Add(val3)
                                'nivel 4
                                Dim consunieto2 As String = "Select codcue,nomcue from con_cuentas where nivcue=4 and codcue like '" & nodnieto & "%'"
                                consult = cn.Execute(consunieto2)
                                If Not consult.EOF Then
                                    While Not consult.EOF
                                        Dim nom4 As String = consult.Fields("nomcue").Value
                                        Dim val4 As String = consult.Fields("codcue").Value & " - " & QuitaEspaciosDobles(nom4)
                                        Dim nomneto As String = consult.Fields("codcue").Value
                                        nodo.Nodes(nodo.Nodes.Count - 1).Nodes(nodo.Nodes(nodo.Nodes.Count - 1).Nodes.Count - 1).Nodes(nodo.Nodes(nodo.Nodes.Count - 1).Nodes.Count - 1).Nodes.Add(val4)
                                        consult.MoveNext()
                                    End While
                                End If
                                consul.MoveNext()
                            End While
                        End If
                    End If
                    consu.MoveNext()
                End While
                consulta.MoveNext()
            End While
            nodescuentas.EndUpdate()
        End If
    End Sub

espero e puedan colaborar para resumir el codigo y pasar hata el nivel 5

gracias.