multiplicación errónea

21/11/2010 - 01:38 por Andres M. | Informe spam
Hola:

En un formulario tengo un campo calculado en el que me toma el dato de
un campo y lo multiplica por una cantidad fija.

El resultado, cuando hay números complejos (entiéndase como que no son
1000, 20000, 300, etc) el resultado de multiplicarlo por 50 y
dividirlo por 100 me da un resultado erroneo:
ejemplo:
290493,84 x 50 /100 = 145246,50

cuando en realidad el resultado debería ser: 145246,92;

otro:

290493,84 x 70 /100 = 203345,10

en realidad debería ser: 203345,69.

En resumen calcula mal.

la función es:

Private Sub tipo_de_la_subasta_LostFocus()

Dim TipoSubasta As Currency
Dim ResultadoCincuenta As Currency
Dim ResultadoSetenta As Currency
Dim Tantoporciento As Currency

TipoSubasta = ValorNumerico(tipo_de_la_subasta)
Tantoporciento = ValorNumerico(txtTantoporciento)
Me.consignacion_mínima.Value = TipoSubasta * Tantoporciento / 100

TipoSubasta = ValorNumerico(tipo_de_la_subasta)

Me.Resultado_cincuenta.Value = TipoSubasta * 50 / 100

TipoSubasta = ValorNumerico(tipo_de_la_subasta)

Me.resultado_setenta.Value = TipoSubasta * 70 / 100

End Sub


Donde "ValorNumerico" es un módulo;

Option Compare Database
Option Explicit


Public Function ValorNumerico(valor As Variant) As Long
ValorNumerico = Val(Nz(valor, ""))
End Function



En la propiedad Formato del formulario, el tipo de dato de
tiposubasta, resultadocincuenta y resultadosetenta son de tipo
estandar con 2 decimales y el campo tanto por ciento es estandar sin
decimales.

Muchas gracias de antemano
 

Leer las respuestas

#1 Emilio
21/11/2010 - 08:11 | Informe spam
¡Importante!: Colabora con el grupo. Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
Hola!
prueba así

ValorNumerico = CDec(Nz(valor, 0))

val ignora los decimales, puedes verificarlo en la ventana inmediato.

Saludos a todos
Emilio [MS-MVP Access 2006/10]
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Andres M." escribió en el mensaje de
noticias:

Hola:

En un formulario tengo un campo calculado en el que me toma el dato de
un campo y lo multiplica por una cantidad fija.

El resultado, cuando hay números complejos (entiéndase como que no son
1000, 20000, 300, etc) el resultado de multiplicarlo por 50 y
dividirlo por 100 me da un resultado erroneo:
ejemplo:
290493,84 x 50 /100 = 145246,50

cuando en realidad el resultado debería ser: 145246,92;

otro:

290493,84 x 70 /100 = 203345,10

en realidad debería ser: 203345,69.

En resumen calcula mal.

la función es:

Private Sub tipo_de_la_subasta_LostFocus()

Dim TipoSubasta As Currency
Dim ResultadoCincuenta As Currency
Dim ResultadoSetenta As Currency
Dim Tantoporciento As Currency

TipoSubasta = ValorNumerico(tipo_de_la_subasta)
Tantoporciento = ValorNumerico(txtTantoporciento)
Me.consignacion_mínima.Value = TipoSubasta * Tantoporciento / 100

TipoSubasta = ValorNumerico(tipo_de_la_subasta)

Me.Resultado_cincuenta.Value = TipoSubasta * 50 / 100

TipoSubasta = ValorNumerico(tipo_de_la_subasta)

Me.resultado_setenta.Value = TipoSubasta * 70 / 100

End Sub


Donde "ValorNumerico" es un módulo;

Option Compare Database
Option Explicit


Public Function ValorNumerico(valor As Variant) As Long
ValorNumerico = Val(Nz(valor, ""))
End Function



En la propiedad Formato del formulario, el tipo de dato de
tiposubasta, resultadocincuenta y resultadosetenta son de tipo
estandar con 2 decimales y el campo tanto por ciento es estandar sin
decimales.

Muchas gracias de antemano

Preguntas similares