Quantcast
Channel: Foros de Velneo » Todas las publicaciones
Viewing all articles
Browse latest Browse all 5035

Respuesta a: Actualizaciones a través de Enlaces Indirectos Reales

$
0
0

Hola Esfero.

Creo que la Idea no puede prosperar porque implicaría cambiar la esencia del funcionamiento de las fórmulas en las tablas de Velneo: “Una fórmula se recalcula en Actualizaciones y valores Iniciales” cuando uno de sus componentes, siempre que sea un campo de la misma tabla, haya sido modificado en la transacción”.

Tienes que tener claro algunos conceptos:
– Los campos de un puntero (maestro, puntero real, virtual, …) son siempre de solo lectura y no entran en la transacción. Únicamente se verá implicado en la transacción el campo ID (o el puntero real, virtual) que es el enlace entre la tabla principal y la enlazada.
– Dices:

… (Ej.: GRUPO=#CABECERAS.GRUPO), este no se recalculará correctamente cuando cambie el campo GRUPO en la tabla #CABECERAS.

Efectívamente, cuando el campo #CABECERAS.GRUPO cambia, la tabla LINEAS ni se entera. Es imposible que se entere y además debe ser así. Imagina que #CABECERAS.GRUPO se usa en cientos de fórmulas. Es sencillamente imposible de forma automática a no ser que tú lo programes manualmente.
– Aunque falta una explicación más a fondo por parte de Velneo, me imagino que las fórmulas se actualizan usando la función #CAMPO:isModified(), por lo tanto, solo es capaz de interrogar por los campos de la propia tabla y entre ellos está el campo ID o el puntero Real, pero no los campos de dichos punteros.

Para los valores Iniciales entenderás que este sea el comportamiento lógico. Si yo eligo un Artículo ID, se guardará el valor inicial ID.PRECIO. No quiero que ese precio se sobreescriba cuando ID.PRECIO se actualize por cambio de temporada por ejemplo. Solo quiero que se actualize el valor inicial cuando elegimos otro artículo en una modificación de la LINEA, es decir, cuando cambiamos el ID del puntero a ARTICULO.

– Tú has resuelto el Puntero Real con #CABECERAS.GRUPO, pero imagina que quieres resolverlo con #CABECERAS.GRUPO.ZONA.PERIODO.FRANJA, entonces ¿tendríamos que controlar los cambios en GRUPO, ZONA, PERIODO y FRANJA? ¡¡Imposible!!.

Conclusión: Este es un caso concreto en el que tendrás que duplicar los campos enlazados en la tabla principal para que las fórmulas puedan ejecutar un #CAMPO:isModified() y actualizarse en el caso de que devuelva TRUE. Y como bien dices, usar los Triggers para pasar los valores de GRUPO de Cabeceras a Líneas y así desencadenar la Transacción en la tabla LINEAS que actualize las fórmulas de valores iniciales y/o actualizaciones.

Es cierto que al principio este tema desconcierta un poco, pero una vez lo controlas es potentísimo y una de las grandes bazas de la Base de datos de Velneo.

Saludos
Paco Satué


Viewing all articles
Browse latest Browse all 5035

Trending Articles