![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Aqui tengo una nueva opcion, pero tienes que seguir algunas instrucciones:
1. Que los niveles no superen a los 15. Porque en el procedimiento GET_ARBOLRUBROS se agrega dos espacios en blanco por c/nivel. 2. Que la estructura este en el orden adecuado para que pueda funcionar. 3. En el IBDataSet llamar al procedimiento GET_ARBOLRUBROS asi: SELECT NOMBRE FROM GET_ARBOLRUBROS(0). /*Este procedimiento devuelve el Nª de nivel del registro.*/ CREATE PROCEDURE GET_NIVEL(ID INTEGER) RETURNS(NIVEL INTEGER) AS DECLARE VARIABLE OID INTEGER; DECLARE VARIABLE PADRE INTEGER; BEGIN NIVEL:=0; OID:=:ID; WHILE (:OID > 0) DO BEGIN SELECT ID_PADRE FROM RUBROS WHERE ID=:OID INTO :PADRE; OID:=:PADRE; NIVEL:=:NIVEL+1; END SUSPEND; END /*Ten en cuenta el tamaño de tu campo NOMBRE*/ CREATE PROCEDURE GET_ARBOLRUBROS(ID_PADRE INTEGER) RETURNS(NOMBRE VARCHAR(80)) AS DECLARE VARIABLE ID INTEGER; DECLARE VARIABLE NOMB VARCHAR(50); DECLARE VARIABLE NIVEL INTEGER; BEGIN FOR SELECT ID, NOMBRE FROM RUBROS WHERE ID_PADRE=:ID_PADRE ORDER BY ID INTO :ID, :NOMB DO BEGIN NOMBRE:=''; EXECUTE PROCEDURE GET_NIVEL(:ID) RETURNING_VALUES(:NIVEL); WHILE (:NIVEL > 1) DO BEGIN NOMBRE:='__' || :NOMBRE; /*'__'=espacios en blanco*/ NIVEL:=:NIVEL - 1; END NOMBRE:=:NOMBRE || :NOMB; SUSPEND; /*AQUI SE USA LA RECURSIVIDAD PARA OBTENER LOS HIJOS.*/ NOMBRE:=''; FOR SELECT NOMBRE FROM GET_ARBOLRUBROS(:ID) INTO :NOMBRE DO BEGIN SUSPEND; END END END Ojala te sirva, saludos. Última edición por JulioGO fecha: 27-08-2004 a las 00:43:25. |
|
#2
|
||||
|
||||
|
Hola.
A quienes han participado en este hilo, les recomiendo el uso de las etiquetas [code ], [delphi ] y [sql ] para publicar trozos de código, ya que sin estas, se hace realmente dificil leer el código. Dado que existen, se me hace un gran desperdicio no usarlas.
Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate Última edición por jachguate fecha: 27-08-2004 a las 01:28:48. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|