Establecer relación Padre-Hijo en una tabla

14/12/2005 - 00:33 por bonsweet | Informe spam
Hola, espero no complicar mucho mi explicacion... va ->

Tengo una Tabla con los campos :
MenuId, PadreId, Nombre, OrdenId
esta tabla me sirve para hacer un menú vertical por niveles donde por
ejemplo puedo tener los siguientes registros:

MenuId PadreId Nombre OrdenId
1 0 Archivo 1
2 0 Edicion 2
3 1 Nuevo 1
4 1 Abrir 2
5 2 Copiar 1
6 2 Pegar 2

Donde el PadreId viene siendo el menuId de aquel elemento al que pertenece
otro elemento. Ejem:

El elemento de Nombre Copiar tiene como padre al elemento de Nombre Edicio
(Copiar pertenece a Edicion) entonces su padre es el 2 porque 2 es el
MenuId de Edicion si me explico??? ... espero que si ... y el campo orden
se refiere al orden de los elementos con el mismo padre.

Ahora mi pregunta es: Tengo una página en ASP que me muestra todo este
contenido de la tabla pero quiero que de alguna manera grafica el usuario
pueda ver graficamente quien es hijo de quien y tambien modificar esta
relacion, es decir, por ejemplo... si el quiere que pegar ya no pertenezca
a Edicion sino que pertenezca a archivo que el lo pueda hacer con algun
boton o algo así... alguien ha visto algo parecido a esto???

Saludos!

Preguntas similare

Leer las respuestas

#1 bonsweet
14/12/2005 - 15:36 | Informe spam
Hola Matías!

Muchas gracias por la información, buscaré en el foro como me dices,
aunque si tu lo encuentras antes te agradezco si me dices...

muchas gracias..

Saludos! <><

Matías Iacono wrote:

Puedes buscar en el mismo foro (No tengo el codigo a mano ahora), donde creo
una funcion recursiva para mostrar los datos en forma de arbol para este
mismo caso.

Luego es cuestion de inventiva.

Debes buscar en varios meses atras. Si no puedes dar con el, rebuscare en mi
arcon del recuerdo para ver si te consigo el codigo.

Saludos.
Respuesta Responder a este mensaje
#2 Matías Iacono
14/12/2005 - 17:29 | Informe spam
Puedes buscar en el mismo foro (No tengo el codigo a mano ahora), donde creo
una funcion recursiva para mostrar los datos en forma de arbol para este
mismo caso.

Luego es cuestion de inventiva.

Debes buscar en varios meses atras. Si no puedes dar con el, rebuscare en mi
arcon del recuerdo para ver si te consigo el codigo.

Saludos.

Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3
Coordinador de evento Comunidad MSDN Bolivia
"Esmeralda" escribió en el mensaje
news:
Hola, espero no complicar mucho mi explicacion... va ->

Tengo una Tabla con los campos :
MenuId, PadreId, Nombre, OrdenId
esta tabla me sirve para hacer un menú vertical por niveles donde por
ejemplo puedo tener los siguientes registros:

MenuId PadreId Nombre OrdenId
1 0 Archivo 1
2 0 Edicion 2
3 1 Nuevo 1
4 1 Abrir 2
5 2 Copiar 1
6 2 Pegar 2

Donde el PadreId viene siendo el menuId de aquel elemento al que pertenece
otro elemento. Ejem:

El elemento de Nombre Copiar tiene como padre al elemento de Nombre Edicio
(Copiar pertenece a Edicion) entonces su padre es el 2 porque 2 es el
MenuId de Edicion si me explico??? ... espero que si ... y el campo orden
se refiere al orden de los elementos con el mismo padre.

Ahora mi pregunta es: Tengo una página en ASP que me muestra todo este
contenido de la tabla pero quiero que de alguna manera grafica el usuario
pueda ver graficamente quien es hijo de quien y tambien modificar esta
relacion, es decir, por ejemplo... si el quiere que pegar ya no pertenezca
a Edicion sino que pertenezca a archivo que el lo pueda hacer con algun
boton o algo así... alguien ha visto algo parecido a esto???

Saludos!

Respuesta Responder a este mensaje
#3 bonsweet
14/12/2005 - 18:37 | Informe spam
Hola, intenté relacionar este código que me pasas pero la verdad resultó
confuso para mi.

Creo que lo que me sería mas funcional sería que todos los elementos de la
tabla de mostraran así como en el explorador de Windows en donde se
muestran los archivos (los hijos) pertenecientes a determinada carpeta o
folder (padre).

Otro ejemplo sería este mismo foro en donde hay ramificaciones a partir de
la pregunta inicial.

Y que así como en Windows Explorer puedo tomar un archivo y arrastrarlo
hacia otra carpeta (cambiarlo de papá) asi sería lo que necesito.

Lo que estoy haciendo es una herramienta a partir de la cual yo puedo
construir un menu. En esta herramienta yo puedo dar de alta todos los
elementos del menú y le digo en que nivel debe de estar, pero quiero crear
una vista en donde me muestre quien es hijo de quien y poder, si yo
quiero, cambiar a cualquier hijo de papá y también porder cambiar el orden
entre los elementos pertenecientes a un mismo padre

Ya he buscado toda la mañana algo relacionado con esto (en Java) en
Internet, pero no encuentro nada =( ...

Agradezco mucho si alguien tiene algún dato sobre esto

Esmeralda <><



Matías Iacono wrote:

He aquí la magia :D

Function showTreeCategory(id, sc, sel)
SQL = "Select * From tblCategory Where Id_Depend=" & id
& " And Id_Company=" & Id_Company
Set rstCat = cnx.Execute (SQL)
While (Not rstCat.EOF)
strCad = ""
For i=1 To sc
strCad = strCad &
"    "
Next
If (rstCat("Active") = true) Then
strCad = strCad &
rstCat("Name_Category")
Else
strCad = strCad &
rstCat("Name_Category") & " (No Active)"
End If
strSelected = ""
If (rstCat("Id_Category")=sel) Then
strSelected = " Selected"
End If
Response.Write ("<option value='" &
rstCat("Id_Category") & "'" & strSelected & ">" & strCad & "</option>" &
vbcrlf)
Call showTreeCategory
(rstCat("Id_Category"), (CInt(sc)+1), sel)
rstCat.MoveNext
Wend
End Function



<select name="Id_Category" size="15" multiple onChange="selectsubmit()">
<%
Call
showTreeCategory(0,0,CInt(Id_Category)) 'level , space count , Selected
%>
</select>



Esto lo pone en un combo. Supongo que puedes adaptarla sin problemas.
Respuesta Responder a este mensaje
#4 Matías Iacono
14/12/2005 - 19:58 | Informe spam
He aquí la magia :D

Function showTreeCategory(id, sc, sel)
SQL = "Select * From tblCategory Where Id_Depend=" & id
& " And Id_Company=" & Id_Company
Set rstCat = cnx.Execute (SQL)
While (Not rstCat.EOF)
strCad = ""
For i=1 To sc
strCad = strCad &
"&nbsp;&nbsp;&nbsp;&nbsp;"
Next
If (rstCat("Active") = true) Then
strCad = strCad &
rstCat("Name_Category")
Else
strCad = strCad &
rstCat("Name_Category") & " (No Active)"
End If
strSelected = ""
If (rstCat("Id_Category")=sel) Then
strSelected = " Selected"
End If
Response.Write ("<option value='" &
rstCat("Id_Category") & "'" & strSelected & ">" & strCad & "</option>" &
vbcrlf)
Call showTreeCategory
(rstCat("Id_Category"), (CInt(sc)+1), sel)
rstCat.MoveNext
Wend
End Function



<select name="Id_Category" size="15" multiple onChange="selectsubmit()">
<%
Call
showTreeCategory(0,0,CInt(Id_Category)) 'level , space count , Selected
%>
</select>



Esto lo pone en un combo. Supongo que puedes adaptarla sin problemas.


Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3
Coordinador de evento Comunidad MSDN Bolivia
"Esmeralda" escribió en el mensaje
news:%
Hola Matías!

Muchas gracias por la información, buscaré en el foro como me dices,
aunque si tu lo encuentras antes te agradezco si me dices...

muchas gracias..

Saludos! <><

Matías Iacono wrote:

Puedes buscar en el mismo foro (No tengo el codigo a mano ahora), donde
creo
una funcion recursiva para mostrar los datos en forma de arbol para este
mismo caso.



Luego es cuestion de inventiva.



Debes buscar en varios meses atras. Si no puedes dar con el, rebuscare en
mi
arcon del recuerdo para ver si te consigo el codigo.



Saludos.





Respuesta Responder a este mensaje
#5 Matías Iacono
14/12/2005 - 22:51 | Informe spam
Justamente, si tienes los datos en la DB, la funcion que te pase hace lo que
necesitas.

Es cuestion de que modifiques el codigo resultante para que lo formatees
como quieras.

Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3
Coordinador de evento Comunidad MSDN Bolivia
"Esmeralda" escribió en el mensaje
news:%
Hola, intenté relacionar este código que me pasas pero la verdad resultó
confuso para mi.

Creo que lo que me sería mas funcional sería que todos los elementos de la
tabla de mostraran así como en el explorador de Windows en donde se
muestran los archivos (los hijos) pertenecientes a determinada carpeta o
folder (padre).

Otro ejemplo sería este mismo foro en donde hay ramificaciones a partir de
la pregunta inicial.

Y que así como en Windows Explorer puedo tomar un archivo y arrastrarlo
hacia otra carpeta (cambiarlo de papá) asi sería lo que necesito.

Lo que estoy haciendo es una herramienta a partir de la cual yo puedo
construir un menu. En esta herramienta yo puedo dar de alta todos los
elementos del menú y le digo en que nivel debe de estar, pero quiero crear
una vista en donde me muestre quien es hijo de quien y poder, si yo
quiero, cambiar a cualquier hijo de papá y también porder cambiar el orden
entre los elementos pertenecientes a un mismo padre

Ya he buscado toda la mañana algo relacionado con esto (en Java) en
Internet, pero no encuentro nada =( ...

Agradezco mucho si alguien tiene algún dato sobre esto

Esmeralda <><



Matías Iacono wrote:

He aquí la magia :D



Function showTreeCategory(id, sc, sel)
SQL = "Select * From tblCategory Where Id_Depend=" &
id
& " And Id_Company=" & Id_Company
Set rstCat = cnx.Execute (SQL)
While (Not rstCat.EOF)
strCad = ""
For i=1 To sc
strCad = strCad &
" "
Next
If (rstCat("Active") = true) Then
strCad = strCad &
rstCat("Name_Category")
Else
strCad = strCad &
rstCat("Name_Category") & " (No Active)"
End If
strSelected = ""
If (rstCat("Id_Category")=sel) Then
strSelected = " Selected"
End If
Response.Write ("<option value='" &
rstCat("Id_Category") & "'" & strSelected & ">" & strCad & "</option>" &
vbcrlf)
Call showTreeCategory
(rstCat("Id_Category"), (CInt(sc)+1), sel)
rstCat.MoveNext
Wend
End Function





<select name="Id_Category" size="15" multiple onChange="selectsubmit()">
<%
Call
showTreeCategory(0,0,CInt(Id_Category)) 'level , space count , Selected
%>
</select>





Esto lo pone en un combo. Supongo que puedes adaptarla sin problemas.






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida