Numeración maestro-detalle en actualizaciones en caché
Un saludo a todos.
Mi cuestión es la siguiente: Utilizo Firebird 1.5, Delphi 7 y los componentes de acceso a Firebird son IBDAC de Devart. Realizo la unión maestro detalle de dos querys una cabecera y otra detalle de pedidos utilizando el siguiente esquema:
Querys autocommit a False
CaheUpdates True
Los Querys están perfectamente enlazados, y cuando asigno los valores de las claves en cabecera, se reasignan perfectamente en el detalle, activo ApplyUpdates y acepto la transacción. Todo funciona perfectamente. Pero tiene un inconveniente, esto es, si cancelo los cambios ya ha corrido el numerador y produce un hueco en la numeración. Para resolver esto he resuelto asignar un número especial paea el registro nuevo (-999) mientras está en caché, y antes de ApplyUpdate obtener el número de pedido, entonces renumero la cabecera y el detalle, o sea sustituyo -999 por el número obtenido del numerador, y aplico los cambios y termino la transacción. De esta forma evitaría que al cancelar corra la numeración.
Pero el problema es el siguiente: Que haciéndose perfectamente todo, solo me envía a la base de datos la cabecera. Desaparece el detalle. En firebird hay una clave foránea que relaciona cabecera y detalle. La clave consta de 5 campos, pero solo se altera el campo número de pedido.
Agradecería si alguien ha estudiado estos componentes o se ha visto en esta situación y la ha resulto, me facilitara alguna información.
Muchísimas gracias por anticipado
|