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)
-   -   Unir dos DBgrids (https://www.clubdelphi.com/foros/showthread.php?t=29802)

Nbull 01-02-2006 19:07:55

Unir dos DBgrids
 
Hola,estoy programando en delphi7, base de datos MySql 3.23 y componentes zeos.Tengo un DbGrid donde muestro los equipos informaticos de mi empresa, y tengo otro donde quiero que aparezcan las aplicaciones instaladasen esos equipos.

Ejemplo:Pincho equipo1 en dbgrid1 y el dbgrid2 me muestra las aplicaciones del equipo1.Parece sencillo decirlo ¿eh? pues no soy capaz.

Tengo dos datasources, el primero para el dbgrid1(equipos) y el segundo para el dbgrid2(aplicaciones)y un zquery con la siguiente consulta sql:

Código SQL [-]
SELECT Equipos.* ,Software.*
FROM Equipos
LEFT JOIN Software
ON Software.NombreEquipo=Equipos.NombreEquipo

Donde NombreEquipo es la clave principal en los dos tablas.

El problema es que el dbgrid2 me muestra las aplicaciones instaladas en todos los equipos.Y cuando pincho en el dbgrid1 un equipo el indicador del dbgrid2 se coloca en la primera aplicacion instalada en este equipo, pero, siguen apareciendo todas las aplicaciones, aunque no esten en este equipo instaladas.

Despues de este ladrillo que he metido a ver si alguien me puede ayudar y me explica como se puede hacer esto que quiero.

Gracias un saludo

roman 01-02-2006 19:20:23

¿Tienes dos dbgrid y una sóla consulta? Faltó algo ¿no?

Yo creo que la consulta para el segundo dbgrid deber ser simplemente algo como

Código SQL [-]
select * from software
where NombreEquipo = :equipo

Si el Zeos es similar a otros query, tendrá una propiedad llamada DataSource que enlazas al del primer query. Esto hace que el parámetro :NombreEquipo automáticamente se enlace al que corresponda al registro actualmente seleccionado en el gri de equipos.

// Saludos

Nbull 02-02-2006 09:19:00

Muchas gracias Roman, ya aprendi a unir dos querys.Me funcionó a la perfección.;)

Lo explicare como lo hice para la gente que le pase lo mismo que a mi.

1º ) Un Datasource para cada Dbgrid con su correspondiente Zquery enlazado la consulta para el primer Zquery seria:

Código SQL [-]
SELECT  Equipos.*  ,Software.*
FROM Equipos
RIGHT JOIN Software
ON Software.NombreEquipo=Equipos.NombreEquipo

2º ) En el segundo Zquery pongo en Datasource el primer Zquery en MasterSource el primer Zquery también, luego en IndexFieldName pongo NombreEquipos_1 que es el indice de la tabla del Dbgrid2 y en MasterField pongo NombreEquipos que corresponde a la tabla del Dbgrid1. Y le añado la siguiente consulta SQL:

Código SQL [-]
SELECT Software.*, Equipos.NombreEquipo
FROM Software
LEFT JOIN Equipos
ON Software.NombreEquipo = Equipos.NombreEquipo

Asi cuando selecciono un registro del dbgrid1 me muestra los datos asociados a ese registro en el Dbgrid2

Un saludo.Y gracias de nuevo Roman.


La franja horaria es GMT +2. Ahora son las 18:43:23.

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