En el primero estás asignando un DataSet a un DataSource. Son cosas distintas y no funciona.
En el segundo estás asignando el DataSource de Query al DataSource del Grid... eso son dos DataSources distintos.
Debes pensar que el DataSource de un componente es por donde entra el dato.
- En el caso de un DBEdit es por donde entra el valor de un campo
- En el caso de un DBGrid es por donde entra una lista de registros a mostrar.
- En el caso de un DataSet es por donde entran valores de campos para rellenar parámetros en el SELECT.
Por lo tanto la estructura debería ser
Código Delphi
[-]
DSFiltro : TDataSource;
DSFiltro.DataSet := QryFiltro;
QryFiltro.DataSource := null
DBEdit.DataSource := DSFiltro;
DBEdit.FieldName := 'CAMPO1';
DBGrid.DataSource := DSFiltro;
Código:
DataSet_Cabecera --> DataSource --+---> DBGrid
|
+---> DBEdit
|
+---> DataSet_Detalle