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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-03-2007
Naxoman Naxoman is offline
Registrado
 
Registrado: nov 2006
Posts: 1
Poder: 0
Naxoman Va por buen camino
Recorriendo un arbol de jerarquias Interbase

A ver... Tengo un pequeño problema. Tengo una tabla Temas con 3 campos, CodTema NomTema y Contenedor, siento Contenedor el TemaPadre de dixo tema.
Como puedo, tan solo usando sql, recorrer la tabla para que me muestre de un tema todos sus temas padres de manera recursiva???

Exadme un cablecillo anda...
Responder Con Cita
  #2  
Antiguo 16-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Antes de nada Bienvenido a ClubDelphi.

Podrías implementarlo con dos Querys en relación Maestra-Detalle:
QryMaestra:
Código SQL [-]
select CodTema, NomTema, Contenedor from temas 
order by contenedor

QryDetalle:
Código SQL [-]
  select Contenedor
  from temas
  Where Contenedor = :Contenedor
  order by contenedor

QryDetalle.MasterSource := QryMaestra;

Esa última línea es fundamental, le estas diciendo que los datos de QryDetalle dependen de los resultados de QryMaestra.

QryDetalle tiene un parámetro "Contenedor" que tiene el mismo nombre que en QryMaestra, así hará la relación Maestra-detalle.

Hasta donde veo, siempre necesitarás dos consultas, una para seleccionar el tema y otra para ver los contenedores de ese tema. Puedes usar Store Procedures, por ejemplo.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 16-03-2007 a las 13:03:02.
Responder Con Cita
  #3  
Antiguo 16-03-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Perdón por la intrusión.
Lepe: En el primer Query también saldrían los registros "detalle" ????

Yo tengo un ejemplo de tabla recursiva y lo arreglo haciendo un solo query, pero luego recorriendo la tabla y asígnando "maestro / detalle" que es en realidad donde creo que está la cuestión, en la representación de lo datos de una misma tabla.

El Query:
Código SQL [-]
select * from EMP_CONTACTOS_CARPETAS
ORDER BY CODIGO

El desarrollo de ese query está aquí... donde introduzco los datos en un Treeview
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO

Última edición por ArdiIIa fecha: 16-03-2007 a las 13:49:52.
Responder Con Cita
  #4  
Antiguo 16-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Intromisión niguna hombre, todo lo que se pueda aportar, mejor que mejor.

Ya ni me meto, verás que he editado mi mensaje (no concuerda con tus citas), así que mejor no reviso nada .

Saludos y gracias por tu aporte.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 16-03-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Cita:
Empezado por Lepe
Ya ni me meto, verás que he editado mi mensaje (no concuerda con tus citas), así que mejor no reviso nada .
Saludos y gracias por tu aporte.
Yo también he editado, porque realmente esa cita se correspondía a otro mensaje del hijo que he enlazado anteriormente...

Al o que iba... que en tu propuesta de los dos querys, el fallo que yo veo es que en el primer query se muestran todos los registros, es decir "maestro / detalle"..
Tal vez añadiendo una clausula semejante a:
Código SQL [-]
 Where Contenedor = is null
de este modo descartaríamos a los registros que tienen alguna dependencia. Sin embargo, también susceptible de ser erróneo porque el regístro podría depender de otro y a su vez tener otras dependencias.... por eso mi planteamiento es que para operar sobre una tabla recursiva, es recorrerla de principio a fin e ir asignando los diferentes nodos...
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Recorriendo todos los Edits fide API de Windows 3 25-01-2007 05:58:46
recorriendo un archivo de excel ronimaxh Conexión con bases de datos 5 21-12-2006 20:17:48
Problema con Jerarquias en un Componente chrids506 OOP 10 16-08-2006 19:42:00
Triggers - Recorriendo los campos Sick boy Firebird e Interbase 1 06-06-2006 09:55:43


La franja horaria es GMT +2. Ahora son las 15:22:17.


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