Relanzar actualizaciones


([N1] Giuseppe::Komenco) #1

Hola a todos,

Hoy he visto un bug en una de mis aplicaciones, y lo he corregido, pero ahora tengo que solventar todo lo registrado con anterioridad.

El bug afecta a una acumulación y cálculo que deberían hacer unas actualizaciones de una tabla. Una tabla de movimientos tenía que acumular un importe an un campo en cuestión de una tabla maestra (partiendo del valor de otro campo). Puesto no tenía contemplado un valor en particular, me encuentro con ciertas cabeceras que su total no es correcto (debido a que su plural no actualizó por mi metedura de pata).

Ahora he corregido que no se escape ese valor, pero claro, ahora tengo que recorrer todos los registros, para que las actualizaciones que en determinados registros no acumulaban, ahora si lo harán.

Me he creado un proceso a lo burro, que recorre toda la tabla, modificando un campo importe, para ver si así, lanza la actualización a la tabla maestra, y los campos fórmula de ésta se recalculan, pero no lo hace.

En cambio, en la aplicación, si abro en edición una ficha (de las que deberían acumular y no acumularon) y simplemente acepto sin hacer nada más, al cerrar el formulario si puedo ver que que la actualización se ha realizado y ha actualizado el valor Total de la cabecera que me interesa.

Como puedo lanzar un recálculo masivo? No me importa si el proceso tarda 10 seg, o 10min, es un proceso que sólo tengo que hacer una vez en un par de clientes nada más, por lo que no necesito ninguna optimización especial.

Espero haberme explicado correctamente.


([N1] samuelblanquez.net) #2

Sería la bomba una instrucción que lanzase las actualizaciones, eh!

Pues no está, (ahora vendran un monton de filosofos que te dirán… que donde cortas… que si hay calculos que depende de calculos se deberian de hacer o no… y un monton de cosas de esas)

Este tipo de cosas son a las que me refiero cuando hablo con la gente de velneo y les digo que para este tipo de cosas en producción sería la bomba disponer de SQL, en el que seguramente con una sentencia arreglarías un buen desagisado…

Nada hijo, a recorrer la tabla y multipartir para calcular las cabeceras…

(recuerda además como funcionan las atualizaciones, que para deshacer un valor no tienen en cuenta el calculo que las generó, sino el valor anterior)

Salu2.

(a ver si alguno que sepa más que yo te da algo mejor)


([N3] blavan) #3

Hola, alguna vez me ha sucedido y lo solucione sin problema con un simple proceso lanzado desde Mantenimiento

Cargo históricos calculo el valor real y modifico campo de cabecera y ningún problema, esto es diferente a intentar re-actualizaciones.

Si tienes que corregir cabeceras en cascada entonces puedes crear una campo booleano Mant y a las actualizaciones ponerlas la condición MANT=0

En el proceso primero pones el campo MANT=1 y una vez terminado MANT=0

Es más este tipo de procesos los tengo para comprobar que no tengo error en la actualizaciones

No entiendo lo expuesto por samuel, los procesos son muy simples y las ACTUALIZACIONES muy potentes así que…


([N1] Giuseppe::Komenco) #4

Aham, es decir, que no vale lo que estaba haciendo, digamos que tengo que mandar la actualización yo a mano a los campos de la cabecera, es así?

Saludos.


([N1] abel) #5

“Me he creado un proceso a lo burro, que recorre toda la tabla, modificando un campo importe, para ver si así, lanza la actualización a la tabla maestra, y los campos fórmula de ésta se recalculan, pero no lo hace.”

Si Giusepe, efectivamente es como dices, tiene que hacertelo.

Lo normal es poner a cero todos los calculados, y si después lanzas un proceso, sumando 1 y restando 1 en el importe, te debe relanzar todas las actualizaciones y dejartelo correcto y actualizado. (Siempre que importe, intervenga en la actualziacion , naturalmente)

O como te comenta Blavan, pones un nuevo booleano que intevenga en la actualizacion, haces un proceso que lo modifique le cambias el valor y se relanzara masivamente

http://velneo.es/cuando-se-disparan-las-actualizaciones/


([N1] Pepeto) #6

En realidad, si que es posible:

Aquí , si queremos evitar que se calculen los contenidos iniciales
http://velneo.es/info_v7_712_es/velneo_vdevelop_v7/proyectos_objetos_y_editores/proceso/comandos/bases_de_datos/campos_grupo_de_comandos/modificar_campo_solamente

Aquí, para recalcular todos los contenidos iniciales
http://velneo.es/info_v7_712_es/velneo_vdevelop_v7/proyectos_objetos_y_editores/proceso/comandos/bases_de_datos/campos_grupo_de_comandos/calcula_campos_dependientes

Si bien es cierto, que podría ser interesante poder recalcular el contenido inicial de un solo campo, y no estar obligado a recalcular todos.
Pero esta funcionalidad esta orientada mas a dar altas en masa, más que a solucionar errores.

un saludo
José Luis


([N1] Giuseppe::Komenco) #7

Hola Pepeto, vi esas funciones pero…

Tengo unos campos con contenidos inciales para “inicializar” cuando se muestra la ficha, pero que el usuario puede modificar.

Lanzar el proceso de campos dependientes, volverá al valor original? Ej: Campo con precio por defecto como contenido inicial, pero que el usuario ha cambiado.

Saludos.