|
hola,
si es para edición de un maestro-detalle, primero me deberias decir con que base de datos trabajas, es decir, ¿ es Firebird ? Si es así, mirate el tema del DataSetProvider y los tipos de campos tDataSetField, que no es otra cosa, que la tabla detalle. Como montarlo, pues dos tSQLQuery, uno para el maestro y otro para el detalle, relacionados los dos por un tDataSource, el tSQLQuery de la cabecera de la factura conectado a un tDatasetProvider, luego dos tClientDataSet conectando el de cabecera al tDatasetProvider, y el tClientDataSet del detalle se conectará al tClientDataSet de la cabecera mediante un campo del tClientDataSet de la cabecera ( del tipo tDataSetField ). Para que lo veas claro, te pongo un ejemplo según tus tablas:
tSQLQueryCab.SQL( 'SELECT * FROM factura_enca ORDER BY COD_FACTURA' );
tDataSourceCab.DataSet := tSQLQueryCab;
tSQLQueryDet.SQL( 'SELECT * FROM FACTURA_DETALLE where ( COD_FACTURAD = :COD_FACTURA ) ORDER BY COD_ARTCULO' );
donde :COD_FACTURA significa que es un parametro que recibe del componente tSQLQueryCab al estar relacionado tSQLQueryDet mediante la propiedad DataSource, es decir tSQLQueryDet.DataSource := tDataSourceCab;
Luego tDataSetProviderCab.DataSet := tSQLQueryCab;
Luego tClientDSCab.ProviderName := tDataSetProviderCab;
Activas tClientDSCab con tClientDSCab.Active := TRUE;
Añades los campos de la tabla al componente tClientDSCab ( botón derecho Fields Editor, luego botón derecho Add All Fields ). Fijate que el ultimo campo es del tipo tDataSetField, cojes el nombre de este campo y seleccionas el componente tClientDSDet y se lo asignas a la propiedad DataSetField. Ahora desactiva la tabla tClientDSCab y vuelvela a activar, verás que se activan tanto la tabla cabecera como detalle.
Espero te sirva, en el foro hay muchos hilos al respecto, pero qte queria introducir un poco, si desconocias esto.
Un saludo
|