No sé cómo hacerlo con un clientdataset, no lo he usado nunca de esa forma.
En casos de maestro/detalle como el que comentas, siempre he usado un query para el detalle, ejemplo:
Tengo un querydetalle con la sentencia:
Código SQL
[-]select * from tabladetalle where codigomaestro= :codigo
Y cada vez que se cambia de registro en el maestro se ejecuta esa sentencia con el parámetro del código maestro, ejemplo:
Código Delphi
[-]querymaestroOnChange
begin
querydetalle.close;
querydetalle.parambyname('codigomaestro').asinteger := querymaestroCodigo.asinteger;
querydetalle.open;
end;
De esa forma, añadir más parámetros es algo sencillo, por ejemplo la fechas que te interesa:
Código SQL
[-]select * from tabladetalle where codigomaestro= :codigo and fecha between :fechainicio and :fechafinal
Código Delphi
[-]querymaestroOnChange
begin
querydetalle.close;
querydetalle.parambyname('codigomaestro').asinteger := querymaestroCodigo.asinteger;
querydetalle.parambyname('fechainicio').asdate := datetimepickerinicio.asdate;
querydetalle.parambyname('fechafinal').asdate := datetimepickerfinal.asdate;
querydetalle.open;
end;
De todas formas, seguramente puedes hacerlo con el clientdataset, sólo que yo prefiero querys para hacer eso.