Problema actualizacion DW

Tengo 2 data windows, una maneja una tabla principal conm claves únicas(cuentas de un banco por ejm.); Y otra data windows, que maneja las transacciones que se hacen en esa cuenta. Cuando se desea cambiar el numero de cuenta del usuario por ejemplo, de hecho que se tienen que actualizar todos las transacciones. Cuando realizo una modificación lo acepta, pero inmediatamente después hago otra modificación con otra cuenta y me sale el mensaje "Row changed beetween retrieve and update " y no se pueden actualizar los cambios y la información se malogra.

2 respuestas

Respuesta
1
Por como planteas el problema yo te diría que el modelo de datos no está muy bien. Si un valor es variable entonces es mejor tenerlo como dato (atributo) de una tabla que como clave principal. En tu caso lo ideal seria tener una clave física en vez del número de cuenta y el número como un dato más de la cuenta.
Si no podes corregir el modelo entonces probá esto:
Lo que debe estar pasando es que al modificar la segunda cuenta y hacer update PB este queriendo hacer update a la 1er cuenta nuevamente.
Después de hacer el update(true, false) asegurate de hacer resetUpdate()
También existe la posibilidad que otro usr este modificando simultáneamente el mismo registro en cuyo caso podrías hacer:
En las update properties selecciona la opcion "solo claves" para decirle a PB como armar la sentencia UPDATE. (Ojo con esto porque quita sensibilidad a la sentencia update)
Si esto no funciona decime por favor más detalladamente los pasos que haces.
Respuesta
1
Disculpa la demora, pero he sido padre de nuevo y estuve muy ocupado...
Mira, por lo que me dices, lo que sucede es que realizas un UPDATE (o tal vez lo realiza la propia base de datos) "por detrás" de las DW, entonces, en la DW tienes datos que no se coinciden con los de la base de datos.
Para solucionar esto, después de hacer el cambio, tendrías que realizar un RETRIEVE nuevamente de ellos.
Por ejemplo:
Supongamos que tienes una DW1 con las cuentas y al lado otra DW2 con los movimientos.
Supongamos que la DW1 hace referencia a la tabla CUENTAS y la DW2 hace referencia a la tabla MOVIMIENTOS.
Supongamos, además, que entre ambas tablas hay una clave foránea que indica que se deben realizar UPDATE en cascada.
Al leer la DW1 leyó cuentas 1, 2 y 3.
Al leer la DW2 leyó cuentas 1, 2 y 3 con movimientos para cada una de ellas.
Al realizar un cambio en la DW1, sobre la cuenta 1, que ahora sea cuenta 4, el cambio se refleja en la DW1 porque es allí donde lo has ingresado.
En la base, al haber cambiado el código, por medio de la CLAVE FORÁNEA, se cambio en cascada los datos de la tabla MOVIMIENTOS, pero en la DW2, no se reflejan estos cambios, por lo tanto esta "Desactualizada", entonces, deberías realizar un RETRIEVE de esta DW.
En definitiva, yo realizaría un UPDATE de DW2 (por si hubo cambios), un UPDATE de DW1 (por el mismo motivo) y un retrieve de DW2 (que traería los cambios guardados previamente por esta DW y por el UPDATE en CASCADA generado por la otra DW)
Espero que mi respuesta te sirva, se entienda y llegue a tiempo...
Y mucha suerte!
Muchas gracias amigo, Dios et dio la dicha de volver a ser Padre me alegra que puedas tener un aespsa a quien seguro debes querer mucho, y tengas una familia. Dios te bendiga a ti y a los tuyos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas