elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Llenar un treeview desde varias tablas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Llenar un treeview desde varias tablas  (Leído 10,832 veces)
wolf_ca9

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Llenar un treeview desde varias tablas
« en: 1 Marzo 2008, 16:59 pm »

Hola a todos, tengo un problema con un treeview en vb .net, la cuestion es que tengo 5 tablas con los datos de una estrucutura y deseo llenar un treeview a partir de estas tablas,
como lo pongo a continuacion

'Tabla 1 Direccion General
ID   DireccionGral
01   DIRECCION GENERAL DE SERVICIOS EDUCATIVOS

'tabla 2 Subdirecciones
ID   DireccionGral   Direccion
00   01   DIRECCION GENERAL
01   01   DIRECCION TECNICA
02   01   DIRECCION DE PLANEACION
03   01   DIRECCION REGIONAL DE CENTRO
04   01   DIRECCION REGIONAL DE JUAREZ
05   01   DIRECCION REGIONAL DE SAN LORENZO TEZONCO
07   01   DIRECCION REGIONAL DE SAN MIGUEL TEOTONGO

'tabla3 Departamentos
ID   SubCoord   Departamento
01   01   DEPARTAMENTO DE PLANEACION EDUCATIVA
02   01   DEPARTAMENTO DE PROGRAMACION EDUCATIVA
03   02   DEPARTAMENTO DE INFORMATICA
04   02   DEPARTAMENTO DE SERVICIOS COMPLEMENTARIOS
05   02   DEPARTAMENTO DE CONTROL ESCOLAR
06   05   DEPARTAMENTO DE GESTION ESCOLAR
07   05   DEPARTAMENTO DE DESARROLLO PROFESIONAL
08   05   DEPARTAMENTO DE DESARROLLO CURRICULAR
09   05   DEPARTAMENTO DE APOYO AL DESARROLLO CURRICULAR
10   07   DEPARTAMENTO DE PERSONAL
11   07   DEPARTAMENTO DE RECURSOS FINANCIEROS
12   07   DEPARTAMENTO DE RECURSOS MATERIALES Y SERVICIOS
13   07   DEPARTAMENTO DE APOYO JURIDICO

'Tabla 5 Oficinas
ID   Departamento   Oficina
01   10   OFICINA DE ARCHIVO
02   10   OFICINA DE ACLARACION AL PAGO
03   10   OFICINA DE CARRERA MAGISTERIAL
04   10   OFICINA DE KARDEX
05   10   OFICINA DE PAGADURIA
06   10   OFICINA DE RECLUTAMIENTO Y SELECCION DE PERSONAL
07   10   OFICINA DE REGISTRO Y CONTROL DE INCIDENCIAS
08   10   OFICINA DE SERVICIOS AL PERSONAL
09   10   OFICINA DE SIAPSEP
10   10   OFICINA DE TECHO FINANCIERO
11   10   OFICINA DE EMPLEO Y REMUNERACIONES
12   12   OFICINA DE ADQUISICIONES
13   12   OFICINA DE ALMACEN
14   12   OFICINA DE DISENO GRAFICO
15   12   OFICINA DE EDIFICIOS
16   12   OFICINA DE INVENTARIOS
17   12   OFICINA DE SERVICIOS GENERALES

el id es el enlace entre las tablas
y el proposito es que queden  de la siguiente manera

Direccion gral
|-----Direccion
|----------Subdireccion
|---------------Departamento
|--------------------Oficina

sin embargo no lo he logrado










En línea

Hadess_inf
Desesperado
Colaborador
***
Desconectado Desconectado

Mensajes: 2.048


Nueva Vida


Ver Perfil WWW
Re: Llenar un treeview desde varias tablas
« Respuesta #1 en: 2 Marzo 2008, 01:41 am »

Has generado algo de codigo, alguna idea tienes de como hacerlo o no ¿?


En línea

wolf_ca9

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Llenar un treeview desde varias tablas
« Respuesta #2 en: 2 Marzo 2008, 13:15 pm »

de hecho si he generado un codigo y es este :

    Dim nodo As TreeNode
    Dim nodoDeps As TreeNode
    Dim nodoDirs As TreeNode
    Dim nodoSubs As TreeNode
    Dim nodoOfs As TreeNode

Private Sub CargarNodos()
        'conexion
        Dim Cnn As New MySqlConnection("Database=SIARH;Data Source=localhost;User Id=root;Password=wolfman")

        'cadenas sql
        Dim SQLStrDirGral As String = "Select ID, DireccionGral, Sigs from TAuxCTDireccionGral"
        Dim SQLStrDirecc As String = "Select ID, DireccionGral, Direccion, Sigs from TAuxCTDireccion"
        Dim SQLStrSubdD As String = "Select ID, Direccion, SubDireccionCoordinacion, Sigs from TAuxCTSubDirCoord"
        Dim SQLStrDepto As String = "Select ID, SubCoord, Departamento, Sigs from TAuxCTDeptos"
        Dim SQLStrOfna As String = "Select ID, Departamento, Oficina, Sigs from TAuxCTOficinas"

        'variables de busqueda

        'Adaptadores
        Dim daDirGral As New MySqlDataAdapter
        Dim daDir As New MySqlDataAdapter
        Dim daSubDir As New MySqlDataAdapter
        Dim daDeptos As New MySqlDataAdapter
        Dim daOfnas As New MySqlDataAdapter

        'El dataset
        Dim dsPlantilla As DataSet

        'vista de datos
        Dim dvDir As DataView
        Dim dvSubdir As DataView
        Dim dvDepto As DataView
        Dim dvOfnal As DataView

        dsPlantilla = New DataSet

        SQLStrDirGral = "Select ID, DireccionGral, Sigs from TAuxCTDireccionGral"
        daDirGral = New MySqlDataAdapter(SQLStrDirGral, Cnn)
        daDirGral.Fill(dsPlantilla, "TAuxCTDireccionGral")

        SQLStrDirecc = "Select ID, DireccionGral, Direccion, Sigs from TAuxCTDireccion"
        daDir = New MySqlDataAdapter(SQLStrDirecc, Cnn)
        daDir.Fill(dsPlantilla, "TAuxCTDireccion")

        SQLStrSubdD = "Select ID, Direccion, SubDireccionCoordinacion, Sigs from TAuxCTSubDirCoord"
        daSubDir = New MySqlDataAdapter(SQLStrSubdD, Cnn)
        daSubDir.Fill(dsPlantilla, "TAuxCTSubDirCoord")

        SQLStrDepto = "Select ID, SubCoord, Departamento, Sigs from TAuxCTDeptos"
        daDeptos = New MySqlDataAdapter(SQLStrDepto, Cnn)
        daDeptos.Fill(dsPlantilla, "TAuxCTDeptos")

        SQLStrOfna = "Select ID, Departamento, Oficina, Sigs from TAuxCTOficinas"
        daOfnas = New MySqlDataAdapter(SQLStrOfna, Cnn)
        daOfnas.Fill(dsPlantilla, "TAuxCTOficinas")

        'filas de datos se almacenan en esta categoria
        Dim drDir As DataTable
        Dim drSubDir As DataTable
        Dim drDeptos As DataTable
        Dim drOfnas As DataTable


        Dim Regs As DataRow
       
        'cargo las tablas que requiero
        drDir = dsPlantilla.Tables("TAuxCTDireccion")
        drSubDir = dsPlantilla.Tables("TAuxCTSubDirCoord")
        drDeptos = dsPlantilla.Tables("TAuxCTDeptos")
        drOfnas = dsPlantilla.Tables("TAuxCTOficinas")

        dvDir = drDir.DefaultView
        dvSubdir = drSubDir.DefaultView
        dvDepto = drDeptos.DefaultView
        dvOfnal = drOfnas.DefaultView

        'primer nivel del Nodo principal
        TreeView1.Nodes.Clear()
        TreeView1.Nodes.Add("DIRECCION GENERAL")

        ' deshabilita la actualización en pantalla del control TreeView
        TreeView1.BeginUpdate()

        Dim i As Integer
        Dim a As Integer
        Dim aa As Integer
        Dim b As Integer
        Dim bb As Integer

        For Each Regs In drDir.Rows
            i = 0
            ' agrego el nodo en el segundo nivel
            TreeView1.Nodes(i).Nodes.Add(Trim(Regs("Direccion")))

            ' realizo un filtro dentro de la vista
            dvSubdir.RowFilter = "Direccion = " & Regs("id")
            ' ciclo para recorrer la vista previamente filtrada
            aa = 0
            For a = 0 To dvSubdir.Count - 1
                ' agrego el nodo en el tercer nivel
                'aqui es en donde manda el error 
  TreeView1.Nodes(i).Nodes(aa).Nodes.Add(Trim(dvSubdir.Item(a).Row("SubDireccionCoordinacion")))
Specified argument was out of the range of valid values.
Parameter name: index

                ' realizo un filtro dentro de la vista
                dvDepto.RowFilter = "SubCoord = " & Regs("id")
                bb = 0
                For b = 0 To dvDepto.Count - 1
                    TreeView1.Nodes(i).Nodes(a).Nodes(bb).Nodes.Add(Trim(dvDepto.Item(b).Row("Departamento")))
                Next

            Next
            i = i + 1
        Next
        ' habilita la actualización en pantalla del control TreeView
        TreeView1.Nodes(i).ExpandAll()

        ' habilita la actualización en pantalla del control TreeView
        TreeView1.EndUpdate()

    End Sub
« Última modificación: 2 Marzo 2008, 13:22 pm por wolf_ca9 » En línea

Hadess_inf
Desesperado
Colaborador
***
Desconectado Desconectado

Mensajes: 2.048


Nueva Vida


Ver Perfil WWW
Re: Llenar un treeview desde varias tablas
« Respuesta #3 en: 2 Marzo 2008, 16:12 pm »

Hola nuevamente, bueno, es lo unico que queria saber, empezemos. Antes que nada decirte que particularmente me gusta usar la menor cantidad de variables posible. y trabajar por bloques. Si lo que deseas hacer es mostrar una subcategoria de una categoria solo es usar bucles (en este caso usare for), veamos un ejemplo:

Imports system.data.sqlclient
Public class formulario
Dim con as new sqlconnection("integrated security=sspi;data source=(local);initial catalog=DB")
Dim da as sqldataadapter
Dim dtb,d1,d2,d3,d4,d5 as Datatable

function Direccion() as datatable
da = new sqldataadapter("select id_direccion,direccion from direccion",con)
dtb = new datatable
da.fill(dtb)
return dtb
end function

function subdireccion(byval id as string) as datatable
da = new sqldataadapter("select id_subdireccion,direccion from subdireccion where id_direccion='" & id & "'",con)
dtb = new datatable
da.fill(dtb)
return dtb
end function

function departamento(byval id as string) as datatable
da = new sqldataadapter("select id_departamento,departamento from departamento where id_subdireccion='" & id & "'",con)
dtb = new datatable
da.fill(dtb)
return dtb
end function

function oficinas(byval id as string) as datatable
da = new sqldataadapter("select id_oficina,oficina from oficina where id_departamento='" & id & "'",con)
dtb = new datatable
da.fill(dtb)
return dtb
end function

'Esto es lo que puedes modificar, puedes reducirlo.
Citar
sub llenatreeview()
dim a,b,c,d as integer
dim id1,id2,id3,id4 as string 'variable para los codigos
dim ca1,ca2,ca3,ca4 as string 'variable para los textos
for a = 0 to direccion.rows.count-1
 id1 = direccion.rows(a)("id_direccion").tostring
 ca1 = direccion.rows(a)("direccion").tostring
 treeview1.nodes.add (ca1)
 for b = 0 to subdireccion(id1).rows.count-1
  id2 = subdireccion.rows(b)("id_subdireccion").tostring
  ca2 = subdireccion.rows(b)("subdireccion").tostring
  treeview1.nodes(treeview1.nodes.count-1).nodes.add (ca2)
  for c = 0 to departamento.rows.count-1
   id3 = departamento.rows(c)("id_departamento").tostring
   ca3 = departamento.rows(c)("departamento").tostring   
   treeview1.nodes(treeview1.nodes.count-1).nodes(treeview1.nodes(treeview1.nodes.count-1).nodes.count-1).nodes.add (ca3)
   for d = 0 to oficinas.rows.count-1
    id4 = departamento.rows(c)("id_departamento").tostring
    ca4 = departamento.rows(c)("departamento").tostring   

   end for
  end for
 end for
end for
end sub
end class

Tambien tener en cuenta que puedes usar recursividad, puedes mirar este post, y reducir el bloque de codigo. Saludos. Espero sirva.

http://foro.elhacker.net/index.php/topic,186323.0.html
En línea

userdavid77

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Llenar un treeview desde varias tablas
« Respuesta #4 en: 7 Octubre 2011, 10:57 am »

Hola, chicos! Estoy buscando un software de gestión de la escuela de mi consejo escolar. Me puse en contacto en línea, pero algunos profesionales que estaban pidiendo mucho dinero por sólo un poco de trabajo. Si alguien sabe donde puedo conseguir el software de gestión de las escuelas de cualquier tipo. Por favor, me pm.

Gestion escolar
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda] Unir varias tablas! :(
.NET (C#, VB.NET, ASP)
guillevcp 5 3,593 Último mensaje 14 Octubre 2011, 14:11 pm
por Novlucker
[Solucionado]Dudas Sql subconsultas relacionando varias tablas « 1 2 »
Bases de Datos
Anonymous250 11 17,545 Último mensaje 10 Enero 2012, 12:36 pm
por Anonymous250
Como llenar un char desde el teclado
Programación C/C++
Dacan 8 4,687 Último mensaje 23 Marzo 2013, 05:24 am
por rir3760
problema al hacer select de varias tablas sql
PHP
tecasoft 7 2,094 Último mensaje 20 Octubre 2015, 12:59 pm
por tecasoft
Como usar el insert Into en varias tablas con una condicion
.NET (C#, VB.NET, ASP)
_CrisiS_ 0 2,541 Último mensaje 1 Abril 2018, 16:56 pm
por _CrisiS_
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines