Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

treeview y bases

Estas en el tema de treeview y bases en el foro de Visual Basic clásico en Foros del Web. hola amigos estoy tratando de encarar un proyecto con visual basic 6 y base de datos en access, estoy interesado en usar treeview: quisiera lograr ...
  #1 (permalink)  
Antiguo 14/04/2009, 21:02
 
Fecha de Ingreso: noviembre-2008
Mensajes: 29
Antigüedad: 15 años, 6 meses
Puntos: 0
treeview y bases

hola amigos estoy tratando de encarar un proyecto con visual basic 6 y base de datos en access, estoy interesado en usar treeview:
quisiera lograr q en los nodos principales me aprezcan todos los registros de un campo "nombre " de una tabla1, y en las ramas la relacion de este campo, q provengan de una tabla2...

equipos (tabla1)
..pc(tabla2)
..impresora(tabla2)

insumo(tabla1)
..cartucho(tabla2)
..cd(tabla2)

se puede lograr?
gracias
  #2 (permalink)  
Antiguo 14/04/2009, 22:21
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: treeview y bases

Hola, si se puede simplemente cuando cargas el treeview con los datos..hay un parametro en la propiedad Add que le indicas cual es el nodo padre...

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #3 (permalink)  
Antiguo 15/04/2009, 09:53
 
Fecha de Ingreso: noviembre-2008
Mensajes: 29
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: treeview y bases

Y de q forma se lo indico??? quisiera hacer una especie de bucle... q me los cargue automaticamente... si me podrias direccionar a un ejemplo, te agradeceria mucho.
muchas gracias por tu ayuda amigo
  #4 (permalink)  
Antiguo 15/04/2009, 18:04
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: treeview y bases

pues si con un bucle...recorres el recordset y cargas primero los padres y le añadis a cada uno un identificador asi cuando agreges los hijos sabrasa cual padre agregarselo...para eso obviamente debe haber un campo en tu tabla que le diga al hijo cual es el padre...te paso un ejemplo de un programa que tenia de como los cargaba...de esta forma podes cargarle la profundidad que quieras de hijos y padres...supongamos que tengo una tabla llamada padres y tengo un idpadre y un nombre...y otra llamada hijos donde tenemos los campos idpadre(que relaciona con la tabla padre, un padre puede tener varios hijos) , idhijo, nombre...esta es un afuncion que habia realizado para cargar los padres:

Código vb:
Ver original
  1. Private Function CargaNodoPadre(ByVal Tv As TreeView) As Boolean
  2.     Dim nodo As Node
  3.     mRsAux.Open "SELECT idpadre,nombre FROM padres", mConexion, adOpenForwardOnly, adLockReadOnly, adCmdText
  4.     If mRsAux.EOF Then
  5.         CargaNodoPadre = False
  6.     Else
  7.         Do Until mRsAux.EOF
  8.             Set nodo = Tv.Nodes.Add("abuelo", tvwChild, "Padre " & mRsAux("idpadre"), mRsAux("nombre"), ImageTV.ListImages(2).Key)
  9.             mRsAux.MoveNext
  10.         Loop
  11.         CargaNodoPadre = True
  12.     End If
  13.     Set nodo = Nothing
  14.     mRsAux.Close
  15. End Function

el primer parametro es el que le dice a que nodo "padre" se va a agregar el nodo, fijate que aca dice "abuelo", eso es asi porque yo antes de cargar el padre cargaba un unico nodo principal con el nombre "abuelo"....fijate en el explorador de windows arriba de todo dice "escritorio" ese seria el que yo llamo abuelo porque contiene todos los padres...hijos...nietos jeje...es el principal...se puede obviar pero yo lo hice asi...

fiajte que cada vez que se agrega un nodo se esta agregando un identificador donde dice "Padre " & mRsAux("idforopadre"), entonces queda algo asi dependiendo del id de cada padre internamente se vana llamar:

Padre 1
Padre 2
Padre 3


etc...

ahora para cargar los hijos a cada padre..es lo msimco casi pero indicando el idpadre que tenemos relacionado...

Código vb:
Ver original
  1. Private Function CargaHijos(ByVal Tv As TreeView) As Boolean
  2.     Dim nodo As Node
  3.     mRsAux.Open "SELECT idpadre,idhijo,nombre FROM hijos", mConexion, adOpenForwardOnly, adLockReadOnly, adCmdText
  4.     If mRsAux.EOF Then
  5.         CargaHijos= False
  6.     Else
  7.         Do Until mRsAux.EOF
  8.             Set nodo = Tv.Nodes.Add("Padre " & mRsAux("idpadre"), tvwChild, "Hijo " & mRsAux("idhijo"), mRsAux("nombre"), ImageTV.ListImages(3).Key)
  9.             mRsAux.MoveNext
  10.         Loop
  11.         CargaHijos= True
  12.     End If
  13.     Set nodo = Nothing
  14.     mRsAux.Close
  15. End Function

fijate en el primer parametro le estoy dicendo que carge el hijo en su padre correspondiente dependiendo del campo idpadre que tengo relacionada donde dice "Padre " & mRsAux("idpadre")

y hasta le podes agregar un hijo al hijo si queres y asi sucesivamente...

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #5 (permalink)  
Antiguo 15/04/2009, 20:20
 
Fecha de Ingreso: noviembre-2008
Mensajes: 29
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: treeview y bases

te pasaste con la explicacion, voy a ver q puedo hacer... debo confesar q es un control muy dificil... y aun tengo algunas dudas...
gracias seba
  #6 (permalink)  
Antiguo 15/04/2009, 21:41
 
Fecha de Ingreso: noviembre-2008
Mensajes: 29
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: treeview y bases

Seba el ultimo favor! me podrias hacer una captura de como te quedo el arbol? me quisera sacar una duda...
Set nodo = Tv.Nodes.Add("abuelo", tvwChild, "Padre " & mRsAux("idpadre"), mRsAux("nombre"), ImageTV.ListImages(2).Key)

en esta sentencia "abuelo", y "padre" te quedarian como titulos de los nodos?¿
  #7 (permalink)  
Antiguo 16/04/2009, 20:11
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: treeview y bases

"abuelo" no es lo que dice, es el identificador del nodo, y asi despues le digo qeu ponga los padres en el "abuelo" , a los hijos les digo que los ponga en los padre 1, padre 2..etc...algo asi me queda...para no liarte empeza creando por lo menos un nodo y de ahi proba manualmente ingresarle nodos y asi lo vas a entender...despues si usa la base de datos...



el que yo llamo "abuelo" es el que dice "paginas" arriba de todo...los padres son lo que tienen el icono con los cuadraditos...los hijos son los que tienen el icono con las carpetas y las estrellas son los "nietos"..y asi podes seguir agregando...

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #8 (permalink)  
Antiguo 17/04/2009, 15:01
 
Fecha de Ingreso: noviembre-2008
Mensajes: 29
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: treeview y bases

mi nueva pregunta es de donde llamas a esas funciones, las tenes en modulo, como haces? desde donde las inicias, y como!?
pq segui todos tus pasos pero no logro visualizar el arbol aun....
mil gracias nuevamente....
  #9 (permalink)  
Antiguo 11/11/2009, 07:46
 
Fecha de Ingreso: octubre-2009
Mensajes: 63
Antigüedad: 14 años, 6 meses
Puntos: 0
De acuerdo Respuesta: treeview y bases

Esta bueno el Tema, creo que es muy dificil tambien el control.

Mis dudas son las siguientes
Estoy programando en vb.net con sql 2000

#
Dim nodo As Node
#
mRsAux.Open "SELECT idpadre,idhijo,nombre FROM hijos", mConexion, adOpenForwardOnly, adLockReadOnly, adCmdText

que es mRsAux?

que es adOpenForwardOnly?

que es adLockReadOnly?

que es adCmdText?

Como lo puedo programar en vb.net

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:26.