Hola:
Mi Consulta es como hacer el relacionamiento de maestro detalle de 2 clientDataset que obtienen datos desde un Query por medio de datasetProvider he intentado pero no pude lograrlo. Mi duda es como pasar los parametros de la consulta para que se reflejen en el clientdataset detalle y ademas como hacer para crear el campo datasetfield para relacionar los dos clientdataset.
Gracias.
Código Delphi
[-]
procedure TfrmSellGrid.Cliente;
var
providerMaster:TDataSetProvider;
cdsMaster,cdsDetail:TClientDataSet;
dsMaster,dsourceMaster,dSourceDetail:TDataSource;
SQLQuery1, SQLQuery2:TUniQuery;
str:TDataSetField;
begin
providerMaster:=TDataSetProvider.Create(nil);
cdsMaster:=TClientDataSet.Create(nil);
cdsDetail:=TClientDataSet.Create(nil);
dsMaster:=TDataSource.Create(nil);
dsourceMaster:=TDataSource.Create(nil);
dSourceDetail:=TDataSource.Create(nil);
SQLQuery1:=TUniQuery.Create(Self);
SQLQuery2:=TUniQuery.Create(Self);
dsMaster.DataSet:=SQLQuery1;
with SQLQuery1 do
begin
Connection:=dm.dbaseConn;
Close;
SQL.Clear;
SQL.Add('SELECT * FROM facturas');
Open;
end;
with SQLQuery2 do
begin
Connection:=dm.dbaseConn;
Close;
SQL.Clear;
SQL.Add('SELECT * FROM facturas_detalles');
SQL.Add('WHERE idFactura = :idFactura');
Open;
end;
providerMaster.DataSet:=SQLQuery1;
cdsMaster.SetProvider(providerMaster);
with TIntegerField.Create(Self) do
begin
Name := 'idFacturaa';
FieldKind := fkData;
FieldName := 'idFactura';
DataSet := cdsMaster;
Required := True;
end;
str := TDataSetField.Create(self);
str.Name:='llave';
str.FieldName := 'aa';
str.FieldKind := fkData;
str.Size := 10;
SQLQuery1.Fields.Add(str);
cdsDetail.DataSetField:=TDataSetField(FindComponent('llave'));
cdsMaster.Open;
SQLQuery2.MasterSource:=dsMaster;
cdsDetail.Open;
dsourceMaster.DataSet:=cdsMaster;
dSourceDetail.DataSet:=cdsDetail;
salesGrid.DataSource:=dsourceMaster;
invDetails.DataSource:=dSourceDetail;
end;