![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
Resp
No entiendo cual es tu problema. La tansaccion no termina hasta hacer commit o rollback.
Si tienes una integridada referencial entre master y detalles exister el registro relacionado con el master. Primero ten cuidado con el procedimiento qu eincremnte el codigo. Me imagino que usas un generador ya que este no respeta las transacciones y asi te evitas codigos duplicados en un hanbiente multiusuario. Te doy un ejemplo de como puedes hacer. Master 1: Lees el codigo del master Asiganas los dados y ejecutas el master Detalles 1 master 1 Asiganas los dados y ejecutas el detalle Detalles 2 master 1 Asiganas los dados y ejecutas el detalle y asi sucesivamente. Igual para el master 2 y sus detalles. Luego de todo esto puedes hacer el commit. Pero tambien puedes hacer el commit despues de insertar el ultimo detalle de un master. Asi puedes insertar todos los detalles que quieres a un master. Pero una vez mas te recuerdo lo del control d etransacciones ay que si el codigo no lo controlar con un generador te puede dar un error de bloqueo muerto o conflitos de calves primarias. Espero te sirva de ayuda.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
|
#2
|
|||
|
|||
|
Este es el procedimiento
El problema es que en el bucle, no se incrementa el 'FDM.CodigosFAMILIA.AsInteger' y me sale violación clave primaria al insertar el siguiente registro. 'FDM.CodigosFAMILIA.AsInteger' se refresca después del commit. Gracias. |
|
#3
|
||||
|
||||
|
Hola.
En mi opinion deberias llevar el incremento del Codfamilia fuera del procedimiento.Me refiero a que lo Incrementes tu por codigo Saludos |
|
#4
|
||||
|
||||
|
resp
Usa un generador.
Si el generador se llama gen_Id_familia Haces Un select El primero te saca el valor actual y el otro incrmente en uno. y el error te ocurre ya que el valor se esta incrementando dentro del procedimiento y no fuera como te didjeron anteriormente.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
|
#5
|
|||
|
|||
|
Muchas gracias por las respuestas.
Me inclinaré por uno de los métodos indicados. Saludos. |
|
#6
|
||||
|
||||
|
Recomiendo
Te Recomiendo usar la propiedad CachedUpdates en los IBDataSet sobre la realción maestro detalle que comentas, cuando guardes en vez de usar el POST lo cambias por CachedUpdates, y cuando vayas a aceptar la transacción primero Grabas el Detalle y posteriormente el Maestro, si me preguntas porque, te respondo asi me funcionó, que debería de ser primero el Maestro y después el Detalle y por último Aceptas la transacción....
Saludos.... |
|
#7
|
|||
|
|||
|
¡ ya lo conseguí !. No se si es muy ortodoxo pero...
Gracias por todo. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|