Ver Mensaje Individual
  #1  
Antiguo 11-03-2010
[birmain] birmain is offline
Miembro Premium
 
Registrado: feb 2005
Ubicación: Albacete - España
Posts: 49
Reputación: 0
birmain Va por buen camino
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
Responder Con Cita