Como redondear cálculos

Otra vez.

Como le comente pude hacer la tabla de amortización, solo que use las formulas financieras PPmt( ) e IPmt( ), el problema es que cuando calculo las amortizaciones de capital me salen con muchos decimales, las redondee con Round(xx, 2) y la suma total de las amortizaciones no es igual al capital, por ejemplo si el crédito es de EU10, 000 al suma de las amortizaciones me salen 10,000.01 o 9,999.96, necesito que la suma de las amortizaciones sea igual al capital, sin dejar de redondearlo.

Se me ocurre que tengo que trabajar con la ultima NumCuota, pero no se si hacerlo dentro del bucle For i to Plazo, en este caso como puedo trabajar con la ultima cuota, para ajustar la suma de las amortizaciones con el capital.

Te comento que pude ponerle fechas al plan de pagos :D. \o/

1 Respuesta

Respuesta
1

Revisando la BD que te mandé yo, he comprobado que la suma de todas las cuotas de amortización coincide perfectamente con el capital total.

Las fórmulas PPmt() e IPmt() no las conocía, ni siquiera se me ocurrió pensar que existieran en Access.

Para evitar tener que usar fórmulas de redondeo, puedes definir los campos en las tablas como Moneda, con lo que ya se te redondean automáticamente. Yo lo tengo así y con las pruebas que hice funciona perfectamente.

Si lo quieres hacer "manualmente", se me ocurre lo siguiente:

Declaras una variable temporal: Dim vTemp as currency, y la inicias a 0 vTemp=0

Dentro del bucle, después de asignar el valor al campo que recoge la Amortización, vas acumulando lo que llevas amortizado: vTemp=vTemp+rst("Amortización")

Al salir del bucle, comparas el valor de vTemp con el total del préstamo. Si coincide, no haces nada y si no, editas la ultima cuota:

Dim vDif as currency

vDif=Me.Capital-vTemp

If vDif=0 Then

' No hacems nada

Else

rst.FindLast "[NumCre]=" & Me.NumCre

rst.edit

rst("Amortización")=rst("Amortización")+vDif

rst.Update

End If

Ojo, que el código lo escribo "de cabeza", basándome en lo que recuerdo del ejemplo que te hice. Tendrás que adaptarlo a los campos que tu tienes, que creo que eran distintos.

No he tenido noticias tuyas en un tiempo.
Si no necesitas nada más, te agradecería cerrases al consulta, pues se me acumulan las preguntas abiertas.

Hola!!

He estado ocupado en mi trabajo, así que no he trabajado en mi proyecto, la próxima semana tengo una semana de vacaciones así que te estaré molestando muy pronto.

Solo te quiero comentar que en una consulta anterior, ya cerrada, para agregar un nuevo plan de pagos cuando ya exite uno, agregue esta linea.

Set rst = CurrentDb.OpenRecordset("PlanPago", dbOpenDynaset)

CurrentDb.Execute "DELETE * FROM PlanPago WHERE (CreNum)=" & Me.CreNum

Aunque esto borra el plan del pago existente, esto solo lo usare en la pantalla de nuevos créditos.

Esto del manejo de datos con código me tiene chino!!, tendrás un buen manual o material detallado, no quiero abusar de tu tiempo, ademas en otros foros me han regañado por buscar ayuda a mi proyecto, por pedirles amablemente un ejemplo con código, siendo yo autodidacta, eso me ha bajado las baterías.

Nuevamente muy agradecido por tu ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas