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. |