Me respondo yo mismo esta es la forma con lo que consegui si alguno le sirve. saludos.
Código Delphi
[-]
procedure TfrmSellGrid.facturasMasterDetail;
var
providerMaster:TDataSetProvider;
cdsMaster,cdsDetail:TClientDataSet;
dsRelacion,dsourceMaster,dSourceDetail:TDataSource;
SQLQuery1, SQLQuery2:TUniQuery;
dsfKey:TDataSetField;
begin
providerMaster:=TDataSetProvider.Create(nil);
cdsMaster:=TClientDataSet.Create(nil);
cdsDetail:=TClientDataSet.Create(nil);
dsRelacion:=TDataSource.Create(nil);
dsourceMaster:=TDataSource.Create(nil);
dSourceDetail:=TDataSource.Create(nil);
SQLQuery1:=TUniQuery.Create(Self);
SQLQuery2:=TUniQuery.Create(Self);
SQLQuery2.Name:='SQLQuery2';
dsRelacion.DataSet:=SQLQuery1;
SQLQuery2.MasterSource:=dsRelacion;
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 := 'idFactura';
FieldKind := fkData;
FieldName := 'idFactura';
DataSet := cdsMaster;
Required := True;
end; with TDateField.Create(Self) do
begin
Name := 'fecha';
FieldKind := fkData;
FieldName := 'fecha';
DataSet := cdsMaster;
Required := True;
end; with TDataSetField.Create(Self) do
begin
Name := 'cdsMasterSQLQuery2';
FieldKind:=fkData;
FieldName := 'SQLQuery2'; DataSet := cdsMaster;
end;
cdsDetail.DataSetField:=TDataSetField(FindComponent('cdsMasterSQLQuery2'));
cdsMaster.Open;
cdsDetail.Open;
dsourceMaster.DataSet:=cdsMaster;
dSourceDetail.DataSet:=cdsDetail;
salesGrid.DataSource:=dsourceMaster;
invDetails.DataSource:=dSourceDetail;
end;