Access - Error '6' en tiempo de ejecución: Desbordamiento

 
Vista:

Error '6' en tiempo de ejecución: Desbordamiento

Publicado por Jmarin_Casa (1 intervención) el 10/08/2012 10:42:17
Éstoy diseñando una aplicación an Access 2007 y, al introducir una formula con potencias, me da el siguiente mensaje de error: "Se ha producido el error '6' en tiempo de ejecucion:Desbordamiento".

La linea de código que produce el error es la siguiente:

CuotaMes = rst1("Capital") / (1 - (1 + ((InteresPrestamo / 100) / 12) ^ (-DuracionPrestamo)) / ((InteresPrestamo / 100) / 12))

Todas las variables se han definido del tipo Double.

Si cambio la linea por:

CuotaMes = rst1("Capital") / (1 - (1 + ((InteresPrestamo / 100) / 12) *(-DuracionPrestamo)) / ((InteresPrestamo / 100) / 12))

NO ME DA ERROR DE CODIGO, pero el resultado de la operación, lógicamente, es erroneo.

¿Alguien me podría ayudar?, ¿Qué estoy haciendo mal?

Gracias por adelantado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

Error '6' en tiempo de ejecución: Desbordamiento

Publicado por Jefferson (382 intervenciones) el 10/08/2012 16:33:57
Hola Jmarin

Es muy raro esto que comentas, pues la variable Double es la que mas cantidad de bytes soporta.
Chequea las tengas realmente declaradas como tal, inlcuyendo la que extraes del recordset.

Saludos
Desde Veneuela
Jefferson
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Error '6' en tiempo de ejecución: Desbordamiento

Publicado por Neckkito (1157 intervenciones) el 10/08/2012 16:44:16
Hola, Jefferson!

Parece que estábamos respondiendo a la vez!

Espero que estés bien, pues hace tiempo que no te veía por aquí (o a lo mejor es que no miraba bien...je, je...).

Un gran saludo,

Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Error '6' en tiempo de ejecución: Desbordamiento

Publicado por Neckkito (1157 intervenciones) el 10/08/2012 16:41:26
Hola!

Te contesto en términos teóricos, a ver si con esto acertamos algo y puedes corregir el problema.

En general, el error por desbordamiento se produce porque el tipo de datos que se define no se corresponde con el valor obtenido. Te pongo un ejemplo muy simple:

Si declaramos un tipo de datos como Byte y escribimos el siguiente código:

...
Sub valor()
Dim i As Byte
i = 1000
MsgBox i
End Sub
...

Te dará error de desbordamiento, porque los datos tipo Byte sólo admiten valores del 0 al 225, y le estamos asignando un valor muy superior (1000).

Siguiendo con esta lógica, según la ayuda de Access tenemos que <<Las variables dobles (punto flotante de doble precisión) se almacenan como números IEEE de coma flotante de 64 bits (8 bytes) con valores de -1.79769313486231E308 a -4,94065645841247E-324 para valores negativos y de 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos>>.

Entiendo que el error te debe venir por la definición del tipo de dato de CuotaMes.

Si quieres probar una cosa, define CuotaMes como una variable de tipo Variant, a ver cómo se comporta el código. Si así te funcionara el único "inconveniente" es que quizá tuvieras que darle formato a CuotaMes antes de presentar los resultados.

Bueno... A ver si con esto tan "teórico" puedes encontrar "la luz al final del túnel"

Un saludo,

Neckkito
... http://neckkito.eu5.org ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error '6' en tiempo de ejecución: Desbordamiento

Publicado por jose (830 intervenciones) el 10/08/2012 19:33:27
prueba a ver

CuotaMes = rst1.Fields("CAPITAL").Value / .....................................
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

Error '6' en tiempo de ejecución: Desbordamiento

Publicado por Jefferson (382 intervenciones) el 10/08/2012 20:30:50
Epa Miguel, un saludo hermano y no es que estaba desaparecido, siempre estoy al pendiente del foro y siempre lo leo.

Por cierto muy buena esa explicación.

Hola Jose, saludos hermano; como desconocemos que tipo de datos trae ese recordset, seria buena transformarlo a doble de un tirón y así nos cercioramos que la formula lea el mismo idioma

CuotaMes = cdbl(rst1.Fields("CAPITAL").Value) / .....................................

Desde Venezuela
Jefferson
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar