En tu primer código veo algunas cosas:
La query de Clientes es : SELECT * FROM TABLACLIENTES
La de Facturas SELECT * FROM TABLAFACTURAS where Cliente = :Cliente
Se supone que la tabla cliente tiene un campo que se llama "Cliente" es decir, exactamente igual que el parámetro que he añadido en el Where. Esto se hace para que al seleccionar un cliente, automáticamente salgan en CDSFactura
sólo las facturas de ese cliente, y la relación Maestro-detalle funcione correctamente.
Por lo general, primero se abre la tabla Maestra y después la tabla detalle.
Código Delphi
[-]
CDCliente.Close;
CDFacturas.close;
CDFacturas.MasterSource := dataSourceCLIENTES;
CDFacturas.MasterField := 'CLIENTE';
CDFacturas.indexName := 'CLIENTE';
CDClientes.open;
CDFacturas.Open;
Este código puede estar en el evento OnCreate del Form, ya que solo hace falta ejecutarlo una vez. Desde ahora, al hacer clic en el grid de clientes, ya se mostrará las facturas de ese cliente seleccionado.
Saludos