Error al sumar céntimos de Euro en Access

He descubierto un error que me hace Access en un informe; veréis tengo esta suma:

1.132,80 €

675,99 €

371,02 €

1.989,99 €

1.620,00 €

251,01 €

380,00 €

La cual su resultado es: 6.420,81 €.

Bien pues en el informe donde tiene que aparecer dicha suma el señorito access me da el resultado: 6.420,80 €.

Me está volviendo loco y no encuentro solución posible, el campo que tiene los importes a sumar (TOTALIMPSAL) es un campo calculado, tipo de resultado doble, formato fijo, y decimales 3.

Ya lo he intentado poner en moneda pero me sigue fallando.

3 Respuestas

Respuesta
1

Sin saber como es el diseño del informe es difícil concretar, pero si en cada cuadro de texto, en sus propiedades-Formato le pones

Moneda

Y en número de decimales le pones

2

Te hace la suma sin redondear nada.

No te puedo poner una imagen porque la página no deja, pero es así.

Buenos días Julián, me sigue dando el mismo resultado.

Muchas Gracias

Juan Pedro, como no puedo "colgar" imágenes, sólo te puedo decir que si quieres, repito, si quieres, haz una copia con datos inventados de la tabla o consulta origen del informe y el propio informe y me la mandas a [email protected], para que le eche un vistazo.

Si lo haces, en el asunto del mensaje pon tu alias Juan Pedro, ya que si no sé quien me escribe ni los abro.

Respuesta
1

EL error esta en confiar que 'el formato' hace algo mas que mostrar parte de un valor.

Para evitar el error hay que recortar (redondear) al numero de decimales que se utilicen en aquellas operaciones que puedan generar decimales.

Con el formato se muestra una parte del valor real, para el calculo se utiliza el numero real y el numero de decimales puede ser infinito (una periódica pura).

Utilizar una función propia o la función Round que incorpora Access (que sigue el Standard de la banca americana)

Buenos días, he utilizado su sugerencia pero me da el resultado: 6.421,00 €.

he utilizado: =round(totalimpsal).

Gracias

Creo que no has aplicado de forma correcta la función (o si, depende de lo que se pretenda lograr)

Esa función requiere DOS parámetros, el primero el el valor, el segundo es el numero de decimales (dos no siempre son los que se requieren) y cuando NO se utiliza el segundo, por defecto toma el cero y devuelve UN ENTERO (que es el caso actual)

Para DOS decimales: Round(un_valor, 2)
Para TRES decimales: Round(un_valor, 3)
Y para CERO (entero): Round(un_valor) <<==>> Round(un_valor, 0)

Buenas Tardes Enrique, ante todo gracias por tu atención.

he intentado hacer la solución que me has propuesto y me sigue sin funcionar...

en la zona de DETALLE tengo el campo totalimpsal que coge los datos de una tabla (tbl_di_sal)

el campo en la TABLA es de tipo CALCULADO, DOBLE, FIJO Y 3 DECIMALES que multiplica dos campos [TNFACTSAL]*[PTNSAL].

en el pie del informe tengo puesto este cuadro de texto: =Suma([totalimpSAL]), que devuelve el resultado a un campo tipo texto, moneda, 3 decimales en la zona pie del informe.

he intentado poner la solución que me propones..

=Redondear(Suma([totalimpSAL]);1), o =Redondear(Suma([totalimpSAL]);2), o =Redondear(Suma([totalimpSAL]);3).

Pero nada, sigue igual, no se que pasa o que estoy haciendo mal....

Creo que no has entendido el concepto.

Voy a plantear como haría yo ese calculo para obtener el resultado que se desea.

Si voy a trabajar con DOS decimales no utilizare de fondo TRES decimales (no siempre funciona).

.- Para presentar la línea con los dos decimales se redondea el valor real (que tiene tres)

.- Para el calculo del total se utilizan los tres decimales y al total obtenido se le redondea a dos.

Para que 'el total' se corresponda con los parciales, los datos a sumar se tienen que redondear (antes de su suma) para que coincidan (y que no sea por simple coincidencia).

¿Qué tal si se calcula total así?:

=Suma (Redondear ([el-origen] ; 2))

De esa forma ambos datos serán coincidentes, el redondeo línea a línea (¿Formato?) Y la suma de los redondeos de la líneas.

Respuesta

Cambie el formato a 2 decimales

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas