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...;) |
Antes de nada Bienvenido a ClubDelphi.
Podrías implementarlo con dos Querys en relación Maestra-Detalle: QryMaestra:
QryDetalle:
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 |
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:
El desarrollo de ese query está aquí... donde introduzco los datos en un Treeview |
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 :D. Saludos y gracias por tu aporte. |
Cita:
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: 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... |
La franja horaria es GMT +2. Ahora son las 22:08:28. |
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