|
¡¡Ya lo tengo!!
He creado esta estructura de componentes:
* 3 TQuery con la consulta a la tabla correspondiente. Con la propiedad "Cached Updates" a true.
* 3 TDataSource para relacionar las consultas y mostrar los datos.
* 3 TUpdateSQL para controlar la inserción, relacionados con las consultas a través de la propiedad "UpdateObject".
He sustituido todas las inserciones en la base de datos por métodos apend en los correspondientes TQuery. Las modificaciones y borrados igual, primero un locate y después lo que corresponda.
Al finalizar todo el proceso, junto con la última grabación lanzo un procedimiento que inserta todos los datos en una única transacción.
Me soluciona todos los problemas:
* He tardado en encontrar la solución (y he intentado varias que no han servido) pero el resultado es simple y elegante... o eso me parece.
* Si no finaliza el proceso no graba nada.
* Permite consultar los datos en cualquier momento del proceso.
* La estructura de componentes está en un DataModule y es accesible para todos los formularios en cualquier momento.
* No tengo que redefinir nada en la BD.
* Me sirven los formularios tal y como están. Los cambios son mínimos.
* Me ahorro un móntón de consultas y chequeos que ahora están en un único punto.
|