Redondeo con variables globales


([N2] overall) #1

Buenos días,

Me ha surgido un problema a raíz de utilizar variables globales para el redondeo de los decimales.

En la primera imagen se puede ver el campo formula numérica que utiliza la variable para redondear, el valor de la variable es 2 (numérica sin decimales). La segunda imagen es igual que la primera pero añadiendo otra variable al final para mostrar el símbolo de la moneda.

Pues bien, comprobando que los valores de las variables son correctos, nunca me redondea a dos decimales, el valor que me coge es de CERO, en cambio la variable que muestra la moneda es correcto (120,00 €).

Antes de hacer los cambios utilizaba una constante para el redondeo y todo funcionaba, ahora con las variables globales no funciona.

A que se debe este comportamiento?, tengo contenidos iniciales con variables globales y funcionan, pero aquí no funciona.

Las variables están en la misma solución, pero no en el mismo proyecto. Pero cambiando las variables al mismo proyecto de datos tampoco funciona.

Corrección: El redondeo mientras doy de alta la línea del pedido lo hace bien, es cuando lanza la actualización a la cabecera del pedido que no tiene en cuenta los decimales de la variable.

Saludos

 


 

Overall

Luis Palomo

overall@massoicb.com

www.overall-bcn.com/v7

[attachment=10582,1011] [attachment=10582,1012]

 


([N4] eic) #2

Hola.

¿Estás usando una variable global en memoria? Las variables globales en memoria tienen problemas para mantener los valores en tercer plano. 

¿Estás usando una variable global en disco? No están optimizadas y ralentizan mucho más de lo esperable.

Solución: en vez de usar una variable, utiliza una función que te devuelva el nº de decimales, y asunto resuelto. Pienso que lo adecuado es lo que haces tú, pero dadas las circunstancias, quizá sea esto lo mejor.

Saludos,

Fran Varona

 


([N2] overall) #3

Muchas gracias Fran, lo probaré utilizando una función. Las variables que utilizo son en memoria dado lo que tu comentas sobre el rendimiento de las de disco.

Saludos


Overall

Luis Palomo

overall@massoicb.com

www.overall-bcn.com/v7


([N2] overall) #4

Está claro que si a la función le paso las variables del redondeo sigue sin funcionar, y la solución no está en llamar constantemente a la tabla que contiene los decimales de redondeo, ya que se tienen que hacer muchos cálculos en muchos campos y esto ralentiza enormemente la aplicación.

Esto complica enormemente la configuración sobre el redondeo de los decimales por parte del usuario final. Está claro que este comportamiento lo tendremos en muchos campos que utilizamos las variables globales en memoria.

Veo un gran problema

Saludos


Overall

Luis Palomo

overall@massoicb.com

www.overall-bcn.com/v7


([N4] eic) #5

Hola.

Un truquillo que usaba un amigo mío en 6.x era tener una tabla de configuración con un solo registro, y añadir en cada una de las tablas de la aplicación un puntero a CONFIG con el valor fijo 1. Así, tenía "a mano" en cada registro los valores de la configuración. Te podría servir.

Pero, efectivamente, el problema con las variables globales en memoria sería bueno resolverlo.

Saludos,

Fran Varona