Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   programar relación de tablas (https://www.clubdelphi.com/foros/showthread.php?t=74268)

jfrancho 08-06-2011 21:08:34

programar relación de tablas
 
Buenas tardes: tengo tres tablas, una llamada articulos, la segunda proveedores, y la tercera es la intermedia(que hace de nexo entre); el problema consiste en como programo la relación en delphi, ya que si son dos tablas, no hay problema por que en la tabla detalles programo la propiedad del componente ttable mastersource y masterfield y quedaria la relación maestro-detalle, ahora cuando intervienen tres tablas como lo programo.Desde ya muchas gracias.-

Casimiro Notevi 08-06-2011 21:30:50

Creo que no se entiende lo que has preguntado, pon la estructura de las tablas, la relación que hay entre ellas, lo que quieres conseguir, etc.

jfrancho 09-06-2011 01:41:22

programar relación de tablas
 
Tengo tres tablas, una llamada Tarticulos(con los sig. campos:id_articulos....clave principal), otra llamada Tproveedores(con los sig. campos:id_proveedores.....clave principal), y por último la que hace de nexo entre ambas tablas Tnexo(articulos y proveedores; con los sig. campos:id_nexo, clave principal; id_articulos, clave foranea; id_proveedores...clave foranea)para romper la relación muchos a muchos; entonces engancho la tabla Tarticulos con la tabla Tnexo por medio del campo id_articulos y lo mismo con la tabla Tproveedores, esto lo hago en access, pero como la hago en delphi, para que me muestre los datos en un dbgrid; trabajo con delphi 7 y access-Desde ya muchas gracias.-

Casimiro Notevi 09-06-2011 12:06:24

Esta mañana ando algo espeso, será porque no he tenido tiempo de tomarme un buen café.
Sigo sin comprender exactamente qué quiéres saber: ¿preguntas cómo hay que relacionar las tablas?, ¿preguntas cómo hacer el sql?, ¿preguntas si se puede hacer lo que quieres?, ¿preguntas si está bien o no?... disculpa mi torpeza :o

roman 09-06-2011 15:56:22

Cita:

Empezado por jfrancho
pero como la hago [...] para que me muestre los datos en un dbgrid;

Pero, ¿qué datos? ¿Los artículos? ¿Los proveedores? La verdad es que no lo dejas claro, pero hasta donde veo, en una relación muchos-muchos, cualquiera de las dos entidades puede hacer de maestro de la otra, según lo que te interese conocer:

a) Los proveedores de un posible artículo o
b) los articulos de un proveedor

Por ejemplo, en el caso (b), puedes tener una rejilla con los proveedores y otra con los artículos del proveedor seleccionado. ¿Cómo haces esto?

Pones a proveedor como maestro de nexo y enlazas la segunda rejilla a la tabla nexo, sólo que a ésta, al componente, le agregas un campo lookup que apunte al campo de la tabla artículo que quieras mostrar.

O bien, usas un query que haga la relación:

Código SQL [-]
select nexo.proveedor_id, articulo.* from nexo
left join articulo on articulo.id = nexo.articulo_id

y pones a proveedor como maestro de este query.

// Saludos

Caro 09-06-2011 17:18:57

Hola jfrancho, en el caso de relación muchos a muchos es mejor que hagas tu maestro-detalle con Querys y sigas lo que te ha indicado Roman.

Para la relación maestro detalle:

Necesitas dos Querys donde cada query tiene su respectivo datasource, Query1->datasource1 y query2->datasource2, para que tengan la relación maestro detalle, el query2 que hara de detalle, en su propiedad datasource debe apuntar al datasource1

Para el ejemplo de roman (los articulos de un proveedor).
En el Query1 tendríamos esta consulta
Código SQL [-]
SELECT * FROM TProveedores

En el Query 2 tedríamos
Código SQL [-]
SELECT N.id_proveedores, A.Articulo
FROM TArticulos A, TNexo N
WHERE N.id_articulo=A.id_articulos and N.id_proveedores=:idProv

Saluditos


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

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