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.