FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Procedimiento almacenado para obtener Rubros y subrubros
Hola a todos, estoy usando Firebird, en donde tengo la tabla Rubros(Id_Rubro, Nombre, Id_Padre), Id_Padre indica cual es el padre de un rubro. Está hecha así porque necesito mostrar jerárquimente los rubros, algo como,
R1 R11 R111 R12 R2 R21 Necesito imprimir esta estructura de árbol en un reporte y lo que pensé es hacer un procedimiento almacenado que me retorne un conjunto de registros en los cuales quiero colocar unos espacios en blanco para lograr la identación. Es decir, quiero obtener estos registros R1 bbR11 bbbbR111 bbR12 R2 bbR21 Donde b es un espacio en blanco. Lo que he hecho es lo siguiente pero no logro obtener lo que deseo CREATE PROCEDURE GET_ARBOLRUBROS ( ID_R INTEGER) RETURNS ( NOMB CHAR (50)) AS declare variable Id_Rub Integer; declare variable CantHijos Integer; BEGIN /* Para todos los rubros hijos de Id_R. */ for select "Id_Rubro", "Nombre" from "Rubros" where ("Id_Padre" = :Id_R) order by "Nombre" into :Id_Rub, :Nomb do begin suspend; select count(*) from "Rubros" where ("Id_Padre" = :Id_Rub) into :CantHijos; if (CantHijos = 0) then suspend; else begin execute procedure get_ArbolRubros(Id_Rub) returning_values :Nomb; suspend; end end END Esta no es la versión final de lo que deseo, pero primero estoy tratando de obtener los registros, después le agregaré los espacios en blanco al principio. Espero que alguien me pueda ayudar a resolverlo. Desde ya mucha gracias Guillermo |
|
|
|