Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-08-2004
oliverinf oliverinf is offline
Miembro
 
Registrado: feb 2004
Posts: 65
Poder: 21
oliverinf Va por buen camino
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
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 02:07:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi