Conseguir resultado numérico en una función

Hola experto:
Me gustaría tu ayuda en relación con este tema
Estoy utilizando las funciones de un modulo en una consulta para calcular la cuota total de un recibo con DOS DECIMALES y que es la suma de dos componentes: cuota_minimo + cuota_exceso
El modulo es el siguiente :
Option Compare Database
Option Explicit
Public Const m3min1 As Double = 250
Public Const m3min2 As Double = 500
Public Const cuotamin1 As Double = 36
Public Const cuotamin2 As Double = 90
Public Const prmin1 As Double = 0.3
Public Const prmin2 As Double = 0.45
---------------------------------------------
Function cuotamin(m3c As Double)
Dim cuotaminv as Double
    If m3c > m3min2 Then
      cuotaminv = cuotamin2
    Else
      cuotaminv = cuotamin1
    End If
cuotamin = Format(cuotaminv, "##0.00")
End Function
--------------------------------------------
Function cuotaexc(m3c As Double)
Dim CUOTAEXCV As Double
If m3c > m3min2 Then
   CUOTAEXCV = (m3c - m3min2) * prmin2
     Else
   If m3c > m3min1 Then
    CUOTAEXCV = (m3c - m3min1) * prmin1
     Else
    CUOTAEXCV = 0
   End If
End If
cuotaexc = Format(cuotaexcv, "##,##0.00")
End Function
____________________________________________
En la consulta y en modo diseño tengo :
cuota_minimo : cuotamin([m3c]
cuota_exceso : cuotaexc([m3c])
cuota_total : [cuota_minimo] + [cuota_exceso]
Ya que el resultado que obtengo del modulo para cuota_min y cuota_exceso son en formato texto, el resultado final que me da para la cuota_total, como es de esperar, es la concatenación de [cuota_minimo] y [cuota_exceso].
Probé con varias opciones de formateo ( CCur, Format, Cdbl, ... ) tanto en el modulo como en la consulta y no consigo dar con el resultado deseado que me permita obtener la Cuota_Total ( valor con 2 decimales ).
Gracias anticipadas.

1 Respuesta

Respuesta
1
Creo que deberías mirar la ayuda de la función Round. Me parece que es lo que estás buscando.
Hola Xavi:
Gracias por tu respuesta, pero creo que no me explique bien. El problema esencial lo tengo en que tal como tengo las funciones cuotamin y cuotaexc estoy sumando dos textos.
Creo que encontré la solución añadiendo AS DOUBLE o AS CURRENCY al final de Function cuotamin(m3c As Double) y Function cuotaexc(m3c As Double), con lo cual dejarían de ser texto y ya se podrían sumar.
Luego creo que efectivamente es cuando puedo usar la función ROUND, tan solo tengo un problema y es que no coincide con nuestro criterio de redondeo, de ahí que igual tengo que probar con format.
Después voy a ver si consigo que los valores : 250, 500, 36, 90, 0,30 y 045 de las Public Constant del inicio del modulo me los lea de una tabla, lo que desconozco si es o no posible.
Saludos cordiales
guan123
Cierto, cierto. Para que una función "devuelva" algo, es necesario poner, al final de la declaración de la misma el tipo de datos que devolverá. En tu caso creo que debería devolver un Double (odio los Currency).
En cuanto al redondeo... siempre te puedes crear tu propia función de redondeo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas