Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Dos DBGrid, Uno que se filtre con la selección del otro (https://www.clubdelphi.com/foros/showthread.php?t=83775)

feliz-58 26-07-2013 16:50:18

Dos DBGrid, Uno que se filtre con la selección del otro
 
Mis mas Sinceros Saludos a todos.

Mi pregunta es la siguiente, ¿Es posible tener dos DBgrids y que por ejemplo, en el primero, que es la tabla "Clientes" tengo los siguientes campos:

ID, Cliente, Telefono, Direccion.

y en el Segunto DBgrid, que es la tabla "Equipos" Tengo los siguientes campos:
ID, Equipo, Marca, Modelo.

Puedo hacer que cuando seleccione el cliente en el DBGrid 1 "Tabla Clientes" automaticamente se Filtre en la tabla Numero 2 "Equipos" todos aquellos registros que sean Iguales al ID Del Cliente?

Datos Adicionales

Bases de Datos: MS Access
Componentes: ADOconnection, y ADOTable
____________________________________

Saludos! :D

ecfisa 26-07-2013 17:00:37

Hola feliz-58.
Cita:

Empezado por feliz-58 (Mensaje 464547)
...
Puedo hacer que cuando seleccione el cliente en el DBGrid 1 "Tabla Clientes" automaticamente se Filtre en la tabla Numero 2 "Equipos" todos aquellos registros que sean Iguales al ID Del Cliente?
...

Si, pero necesitas un campo mas en la tabla "Equipos" para establecer la relación, por ejemplo:
  • ID
  • Equipo
  • Marca
  • Modelo
  • Cliente_ID ( ID del cliente )

Saludos. :)

ecfisa 26-07-2013 17:25:23

Hola de nuevo.

Para no dejar las cosas en el aire, te pongo un ejemplo de como configurarlo. Lo hago mediante código por entenderse mas claramente, pero podes configurarlo en tiempo de diseño mediante el Object Inspector con el mismo resultado.

Agregá un TADOConnection, 2 TADOQuery, 2 TDataSource y dos TDBGrid.

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  dsClientes.DataSet := qyClientes; // TDataSource asociado a "CLIENTES"
  dsEquipos.DataSet  := qyEquipos;  // TDataSource asociado a "EQUIPOS"

  with qyClientes do
  begin
    Connection := ADOConnection1;
    Close;
    SQL.Text := 'SELECT * FROM CLIENTES';
    Open;
  end;

  with qyEquipos do
  begin
    Connection := ADOConnection1;
    DataSource := dsClientes; // TDataSource asociado a tabla "CLIENTES"
    // El nombre que sigue a los dos puntos (":ID") en la siguiente consulta,
    // deberá ser igual al nombre del campo ID de la tabla "CLIENTES"
    SQL.Text   := 'SELECT * FROM EQUIPOS WHERE CLIENTE_ID = :ID';
    Open;
  end;

  DBGrid1.DataSource := dsClientes; // DBGrid que visualiza a "CLIENTES"
  DBGrid2.DataSource := dsEquipos;  // DBGrid que visualiza a "EQUIPOS"
end;

Saludos. :)

feliz-58 26-07-2013 17:36:51

Cita:

Empezado por ecfisa (Mensaje 464551)
Hola de nuevo.

Para no dejar las cosas en el aire, te pongo un ejemplo de como configurarlo. Lo hago mediante código por entenderse mas claramente, pero podes configurarlo en tiempo de diseño mediante el Object Inspector con el mismo resultado.

Agregá un TADOConnection, 2 TADOQuery, 2 TDataSource y dos TDBGrid.

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  dsClientes.DataSet := qyClientes; // TDataSource asociado a "CLIENTES"
  dsEquipos.DataSet  := qyEquipos;  // TDataSource asociado a "EQUIPOS"

  with qyClientes do
  begin
    Connection := ADOConnection1;
    Close;
    SQL.Text := 'SELECT * FROM CLIENTES';
    Open;
  end;

  with qyEquipos do
  begin
    Connection := ADOConnection1;
    DataSource := dsClientes; // TDataSource asociado a tabla "CLIENTES"
    // El nombre que sigue a los dos puntos (":ID") en la siguiente consulta,
    // deberá ser igual al nombre del campo ID de la tabla "CLIENTES"
    SQL.Text   := 'SELECT * FROM EQUIPOS WHERE CLIENTE_ID = :ID';
    Open;
  end;

  DBGrid1.DataSource := dsClientes; // DBGrid que visualiza a "CLIENTES"
  DBGrid2.DataSource := dsEquipos;  // DBGrid que visualiza a "EQUIPOS"
end;

Saludos. :)

Excelente Ecfisa, estaba leyendo en delphiabout, ya lo había logrado en tiempo de diseño, pero Muchísimas gracias por el Código, también me sera útil, con unas cosas que tengo en mente.

link del Articulo en delphi About (Para quien le interece):
Master/Detail

Saludos! ecfisa!


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

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