Error al sumar importes Euro

Siendo seguramente sencillo, es gordo.
Mi problema es el siguiente.
La base de datos que he hecho posee la tabla ingresos en la cual existen los campos:
Fecha, ingresos caja, ingresos tabaco, base imponible caja, base imponible tabaco, iva caja, iva tabaco, total iva, total bases imponibles, recaudación diaria.
Dichos campos (salvo fecha) son de tipo numérico, tamaño simple y formato euro con dos decimales.
Pasando ahora al formulario este funciona ed la siguiente manera. Introduzco el importe integro del recaudo de caja, mediante un evento de VB para access me calcula correctamente el iva y la base imponible de caja. Los ingresos de tabaco funcionan exactamente igual.
El problema llega cuando el evento que suma los importes de iva y base imponible de caja y tabaco. El evento pide que después de la acción sume los valores de los dos campos ya calculados y redondeados, por alguna razón la suma la realiza con dichos datos antes de redondear y donde los valores ejemplo 0.79 + 1.78 tendrían que sumar 2.57 suman 2.56.
EN una ocasión me dio un problema similar y después de un mes eterno me di cuenta que el formato de tabla era entero largo y que era imposible que me diera un resultado décima (jajajaja..) pero ahora he realiza mil pruebas y no consigo sacar nada en claro.

1 Respuesta

Respuesta
1
Envíame el código del evento, si puede ser.
Lo he resuelto precisamente hoy. Pero te pongo el mail que me lo aclaro todo.
> Para que todos entendáis mi problema, su sencillez y su falta de explicación
> Para resolverlo.
> Cread una tabla con los campos:
> Importe bruto 7% e importe bruto 16%, Iva 7% e Iva 16%, Base Imponible 7% y
> Base Imponible 16%.
> Todos ellos como Tipo de datos numérico tamaño Simple 2 decimales
> Creáis un formulario con estos campos.
> Generáis un evento Afterupdate que realice estos cálculos:
> [Base_imponible7]=[Importe_bruto_7]/1.07 >>>Con esto nos saca la base
> Imponible 7%
>
> [Base_imponible16]=[Importe_bruto_16]/1.16 >>>Con esto nos saca la base
> Imponible 16%
>
> [iva7]=[Importe_bruto_7]-[Base_imponible7] >>>> asi obtenemos el iva al
> 7%
>
> [iva16]=[Importe_bruto_16]-[Base_imponible16] >>>> asi obtenemos el iva
> al 16%
>
> [totaliva]=[iva7]+[iva16] >>>> MI primer problema . Me devuelve elvalor
> Correcto, o me devuelve unvalor superior a 1 céntimo de Euro o uno inferior
>
>
> [totalbases]=[Base_imponible7]+[Base_imponible_16] >>>>El mismo problema
> Pero inverso siempre al ocasionado con [totaliva]
>
>
> Hay manera humana de que me devuelva el valor de la suma de los importes que
> Se visualizan en los comandos del formulario y no los valores de 4 decimales
> ¿Guardados por access?
Y la solución era:
Alguien ha comentado que existe una función llamada "Round" o
"Rounded" que te hace la transformación que necesitas, pero debe de
ser en Access 2000 o XP, en 97 no existe o yo no la he encontrado.
La función siguiente te hace la transformación que deseas (para
números positivos).
Function Redondear(Num As Double) As Double
Dim Valor As Double
Valor = Num * 1000
Valor = Int(Valor)
If Right(Valor, 1) >= 5 Then
Redondear = (Int(Num * 100) / 100) + 0.01
Else
Redondear = (Int(Num * 100) / 100)
End If
End Function
------------------------------------
Incluye la función en el formulario o mejor en un módulo aparte y
utilizala en lugar de los campos de las sumas, sumará bien, en lugar
de:
[totaliva]=[iva7]+[iva16]
coloca:
[totaliva]=Redondear([iva7])+Redondear([iva16])
Saludos y gracias edtodos modos mdemena.
Si ya lo tienes solucionado te agradecería que finalizases la pregunta para que no me aparezca como pendiente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas