Grabar nuevos registros con bucles

Has visto la tabla de amortización de prestamos que sale en las plantillas de excel. Si verdad!.

Bueno, intento hacer algo parecido en access, pero mis conocimientos de VB son muy limitados pues soy autodidacta y ando buscando ayuda!. Mi área es finanzas. Lo que he aprendido de VB es mas que todo sobre manuales.

Se que agregar datos se puede hacer por medio de recordset o con sql, pero para ser sincero no les entiendo por mas que busco material al respecto, ya me duele la cabeza, no le entiendo, sera por mi formación financiera.

Ya busque en los foros de Microsoft Community y MSDN, no me quieren ayudar con un buen ejemplo. Bueno la cuestión es que no quiero todo el código del proyecto, solo un ejemplo detallado y explicado. Este es el tercer foro que consulto :(

- >Pues bien Lo que tengo:

Un formulario con nombre "Prestamos", que contiene NumCre, Capital, Plazo, TasaInt y un botón cmdAplicarPrestamo el cual ejecutaría el código.

Un sub formulario "PlanPago", este esta vinculado con el anterior, por medio del indice NumCre (Numero de crédito), esta tabla contiene idPlan, NumCre, NumCuota, Cuota,

- > Lo que necesito:

Un bucle que dependiendo del plazo se agreguen nuevas lineas o registros, es decir si Prestamos!Plazo = 12 en la tabla PlanPago! NumCuota se agreguen 1,2,3... 12 lineas con el NumCre.

Lo he intentado hacer con For... Next pero me dice que no encuentra objeto o solo me coloca el máximo del bucle.

Te agradecería un ejemplo explicado para que yo pueda partir de ahí, porque realmente estoy por tirar la toalla. Si me ayudas con esto te haré reverencia :D

1 Respuesta

Respuesta
1

Te subo un mini ejemplo, y te explico por aquí, aunque el código está comentado.

http://www.filebig.net/files/CgudDP6Eec

Como ya tienes el formulario y el subformulario creados, y relacionados, abres el formulario "Prestamos" en Vista Diseño, te colocas sobre el botón cmdAplicarPrestamo y sacas sus propiedades. En la Pestaña Eventos, en Al hacer click, le generas este código:

Private Sub cmdAplicarPrestamo_Click()
Dim rst As Recordset
'Comprobamos que se rellenen los cuadros necesarios
If IsNull(Me.Capital) Then
MsgBox "Tienes que introducir el Capital", vbInformation, "ERROR"
Me.Capital.SetFocus
Exit Sub
End If
If IsNull(Me.Plazo) Then
MsgBox "Tienes que introducir el Plazo", vbInformation, "ERROR"
Me.Plazo.SetFocus
Exit Sub
End If
If IsNull(Me.TasaInt) Then
MsgBox "Tienes que introducir el Tipo de Interés", vbInformation, "ERROR"
Me.TasaInt.SetFocus
Exit Sub
End If
Set rst = CurrentDb.OpenRecordset("PlanPago", dbOpenDynaset)
For i = 1 To Me.Plazo 'Añadimos un registro por cada año de duración
rst.AddNew
rst("NumCre") = Me.NumCre 'Le asignamos el numero de crédito
rst("NumCuota") = i 'Le asignamos el numero de cuota
rst("Cuota") = Me.Capital / TerminoA(Me.Plazo, Me.TasaInt) 'Le asignamos la cuota
rst.Update 'Actualizamos el registro
Next i ' Siguiente paso del bucle
Me.Refresh 'Actualizamos el formulario para ver los cambios
'Deshabilitamos el botón
Me.cmdAplicarPrestamo.Enabled = False
'Cerramos conexiones y liberamos memoria
rst.Close
Set rst = Nothing
End Sub

Lo que te pongo en negrita es opcional, es para deshabilitar el botón y que no le des por error dos veces, con lo que te duplicaría el Plan de pago de ese préstamo.

Además, en el Evento Al activar registro del formulario, le pones este otro código, que activa/desactiva el botón si ya hay cuotas calculadas (esto también es opcional, si dejas lo que está en negrita arriba, deberías ponerlo, si no, no):

Private Sub Form_Current()
'Si ya hay cuotas calculadas, deshabilitamos el botón
Dim ExisteCuota As Integer
ExisteCuota = Nz(DLookup("NumCuota", "PlanPago", "[NumCre]=" & Me.NumCre), -1)
If ExisteCuota = -1 Then
Me.cmdAplicarPrestamo.Enabled = True
Else
Me.cmdAplicarPrestamo.Enabled = False
End If
End Sub

Y para acabar, creas un módulo nuevo, y le defines esta función, que se usa para calcular la cuota:

Public Function TerminoA(ByVal n As Integer, ByVal i As Double) As Double
TerminoA = (1 - (1 / (1 + i) ^ n)) / i
End Function

Con esto ya tienes lo que pides. Luego si quisieras añadir otros campos a PlanPago, como interés, capital amortizado... tendrías que irlos añadiendo dentro del bucle, mediante rst("NombredelCampo")= lo que sea...

Si lo necesitas, tengo creado un ejemplo con un cuadro de amortización completo: anualidad, amortización, interés, capital amortizado y capital vivo.

Coméntamelo y te lo envío.

¡Supremo!, Incleible, rayos que facil se ve cuando se lo explican y mas cuando se lo dan hecho. :D :D

Estuve por lejos encontrar la solucion por mi mismo.

Y... pues claro que si me envias el link de tu base, muy agradecido, muy agradecido. Yo igual compartire mis logros, bueno...los pocos logros contigo.

.

Ahí te va el enlace con el cuadro completo. Seguramente tengas que cambiar los nombres de los campos, pero no creo que tengas problemas con ello.

<a>http://www.filebig.net/files/WuY5ih6Lr2</a>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas