Ver la Versión Completa : Dos DBGrid, Uno que se filtre con la selección del otro
feliz-58
26-07-2013, 16:50:18
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.
...
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.
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
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.
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 (http://delphi.about.com/od/database/l/aa071001c.htm)
Saludos! ecfisa!
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.