Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 26-08-2004
oliverinf oliverinf is offline
Miembro
 
Registrado: feb 2004
Posts: 65
Poder: 23
oliverinf Va por buen camino
Con el siguiente procedimiento almacenado logre hacer lo que quería

CREATE PROCEDURE GET_ARBOLRUBROS (
ID_R INTEGER,
NIVEL INTEGER)
RETURNS (
NOMBRE VARCHAR (200))
AS
declare variable Id_Rub Integer;
declare variable CantHijos Integer;
declare variable i Integer;
declare variable NivelNuevo Integer;
declare variable Espacios VarChar(200);
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, :Nombre
do begin
/* Agrego tanto espacios en blanco como indica Nivel. */
Espacios = '';
i = 1;
while (i <= Nivel) do begin
Espacios = Espacios || ' ';
i = i + 1;
end

if (not (Espacios is null)) then
begin
/* Retorno los espacios concatenados con el nombre del rubro. */
Nombre = Espacios || Nombre;
end

/* Con este suspend retorno el Nombre del rubro padre. */
suspend;
/* Obtengo la cantidad de hijos del rubro padre. */
select count(*) from "Rubros"
where ("Id_Padre" = :Id_Rub)
into :CantHijos;

/* Si tiene hijos, volver a llamar al procedimiento. */
if (:CantHijos > 0) then
begin
NivelNuevo = Nivel + 1;
for select Nombre from get_arbolrubros(:Id_Rub, :NivelNuevo)
into :Nombre
do begin
/* Con este suspend retorno el Nombre del rubro hijo. */
suspend;
end
end
end

END
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 19:17:29.


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