Actualización No Reversa Valor Alfabetico


([N3] blanyi) #1

Hola buenos días a todos.
Se me presenta la siguiente situación: desde una tabla de detalle hago una actualización a un campo de una tabla maestra relacionada y le asigno un valor absoluto (tipo alfabético) al al campo actualizado. También actualizo otros campos que son numericos en modo ACUMULAR.

Cuando borro el registro de la tabla detalle los campos numéricos actualizados de la tabla maestra se recalculan bien y restan el valor que tenía el detalle y el valor del campo maestro es correcto. El problema está con el campo alfabético, ese no cambia aun después de haber borrado el registro detalle.

Agradezco a quien me pueda ayudar diciéndome como debe plantear entonces la actualización para que al borrar el registro del detalle cambie el valor en el campo alfabético maestro relacionado.

Adjunto imagen para mayor claridad.

Cordialmente,
YIMY MORA ACONCHA



([N1] wikan) #2

Me paso lo mismo con las existencias, la actualización es valor absoluto y al eliminar el ultimo movimiento libera la ficha para que el anterior pueda modificar las existencias.


([N3] pacosatu) #3

Hola Yimy.

Yo creo que el funcionamiento es correcto. Las actualizaciones de modo Acumular usan de forma implícita un histórico de cambios porque es una simple operación aritmética de suma/resta. Las actualizaciones de modo Valor Absoluto guardan el último dato recibido sin guardar el histórico de cambios, es decir, no sabe cuál ha sido el valor anterior para reponerlo.

Tendrás que recurrir al “Trigger de baja” del registro de Detalle para limpiar el campo de actualización de la tabla padre.
Si el valor absoluto puede tener varios valores tendrás que guardar en otro campo de la tabla maestra el valor Actual antes de que se produzca la Actualización y reponer ese valor en caso de borrado en el Trigger correspondiente.

Saludos
Paco Satué


([N3] blanyi) #4

Buenos días.

Buscando en el foro encontré este articulo de Jose Arboleya http://velneo.es/cuando-se-disparan-las-actualizaciones/#more-7010609072698 que me ayudó a resolver esta situación.

Y lo resolví de tal forma que con la actualización planteada de esta forma me sirve tanto si doy de alta una ficha, la modifica o la elimino.

El asunto consiste en lo siguiente:

  • En la condición puse #ID=#ID, según Arboleya, de esta forma se obliga a que la actualización se dispara ya sea en el alta, la edición o eliminación.

  • En formula no coloque el valor absoluto como la vez pasada sino que use una función para devolver un valor absoluto dependiendo del valor que tiene un campo que evalúo. Si se cumple la condición se retorno un valor, pero sino se cumple se devuelve otro.

Adjunto imagen para que se entienda mejor la solución encontrada.

Gracias a todos los que hicieron su aporte para ayudarme.

YIMY MORA ACONCHA



([N3] blanyi) #5

Para Manuel (Wikan) y los demás participantes, en el comentario anterior les hago saber como solucioné la situación que se presentaba, por si a alguien le sucede lo mismo sepan como solucionarlo.

Feliz día.

YIMY MORA ACONCHA


([N3] pacosatu) #6

Hola YIMY.

Un buen artículo, como siempre, de Jesús Arboleya.

Pero viendo el dibujo adjunto, creo que no es aplicable la técnica de Jesús Arboleya a tu caso.
En tu caso, usas en la fórmula del Valor Absoluto el campo #ID_CUOTA.SALDO_TOTAL y es este campo el que provoca la Actualización en ID_CUOTA.
La condición #ID=#ID se cumple siempre y desde luego en la modificaciones no dispara la Actualización, porque el #ID no cambia en este caso. En los borrados habría que probarlo.

Prueba a quitar la condición #ID=#ID y mira si funciona de igual manera.

Saludos
Paco Satué