Como puedo actualizar uno o varios registros con recordset u otro método.
Ms access.
Te comento que estoy haciendo un proyecto personal desde ya un buen tiempo, pero como mi orientación es finanzas me ha costado, es decir que mis conocimientos se han basado en manuales que es muy poco lo que aportan, voy de foro en foro a ver quien me ayuda.
Mi proyecto consiste en una base de access para el control de prestamos. Casi solo he elaborado los formularios, voy por la parte difícil que es la aplicación del préstamo y la amortización del mismo, la tabla de los créditos se llama "Prestamos" y la de amortización se llama PlanPago, ellas están relacionadas por la Clave "NumCre", gracias a "Sveinbjorn" he elaborado un código para que dependiendo del plazo, capital, tasa de interés me elabora un plan de pago, pero no se como hacer para que si existe un plan de pagos y el usuario quiere cambiar uno de los criterios me actualice al plan de pago existente.
Por ejemplo si el préstamo guardado es de 6 meses pero lo quiere cambiar a 12 mes, si aplico este cambio access me dice que "los cambios no se pueden hacer porque genera datos duplicados". Como es un poco complicado te dejo ver mi proyecto, espero que te parezca interesante para que me ayudes. Y por favor se condescendiente conmigo soy autodidacta y casi no le entiendo mucho de programación.
Descarga aquí. esta es SkyDrive \ Access \ Ejemplos \ Prestamos.rar
Si solo quieres ver mi medio código aquí esta.
Private Sub cmdAplicarPrest_Click()
Dim rst As Recordset
Dim Capital As Currency 'se toma del formulario prestamos
Dim Plazo As Integer 'se toma del formulario prestamos
Dim TasaInteres As Double 'se toma del formulario prestamos
Dim Cuota As Currency ' Cuota programada sin cargos extras.
Dim Frecuencia As Double ' sirve para convertir la tasa de interés anual según el plazo y calcular la fecha de pago
Dim Base As Double 'Base para calcular cuotas según se configure 360 o 365 días.
Dim DiaSemana As Integer 'Calcula el día de la semana, aumenta 1 si es domingo, aumenta 2 si es sábado.
Dim FechaPago As Date ' Calcula la fecha de pago para el plan de pago considerando el plazo.
Frecuencia = DLookup("[Frecuencias]", "Periodos", "[IdPeriodos]=" & Forms!Prestamos!Periodos)
Base = DLookup("[Base]", "Periodos", "[IdPeriodos]=" & Forms!Prestamos!Periodos)
If IsNull(Frecuencia) Then MsgBox "No se configuro la frecuencia del pago", vbInformation, "ERROR" Me.CrePlazo.SetFocus Exit Sub End If
If IsNull(Base) Then MsgBox "No se configuro la base del préstamo", vbInformation, "ERROR" Me.CrePlazo.SetFocus Exit Sub End If
Capital = Me.CreCap
Plazo = Me.CrePlazo
TasaInteres = (Me.CreTasa / (Base / Frecuencia))
Set rst = CurrentDb.OpenRecordset("PlanPago", dbOpenDynaset)
For i = 1 To Plazo
FechaPago = Me.FechaEntrega + (Frecuencia * i)
DiaSemana = Weekday(FechaPago)
rst.AddNew rst("CreNum") = Me.CreNum
rst("NumCuota") = i
If Me.TipoCalculo = 1 Then
Cuota = Pmt(TasaInteres, Plazo, -Capital)
Me.CuotaPago = Cuota
rst("PlanCapital") = Round(PPmt(TasaInteres, i, Plazo, -Capital), 2)
rst("PlanInteres") = Round(IPmt(TasaInteres, i, Plazo, -Capital), 2)
rst("PlanFecha") = IIf(DiaSemana = 1, FechaPago + 1, IIf(DiaSemana = 7, FechaPago + 2, FechaPago))
ElseIf Me.TipoCalculo = 2 Then
Me.CuotaPago = Round((Capital / Plazo), 2) + Round((Capital * TasaInteres), 2) rst("PlanCapital") = Round(Capital / Plazo, 2)
rst("PlanInteres") = Round(Capital * TasaInteres, 2)
rst("PlanFecha") = IIf(DiaSemana = 1, FechaPago + 1, IIf(DiaSemana = 7, FechaPago + 2, FechaPago))
'ElseIf Me.TipoCalculo = 3 Then
'Me.CuotaPago = Capital + (Capital * (Plazo * TasaInteres))
'rst("PlanCapital") = Capital 'rst("PlanInteres") = (Capital * (Plazo * TasaInteres)) 'rst("PlanFecha") =
End If
rst.Update
Next i
Me.Refresh
Me.CreNum.SetFocus
rst.Close
Set rst = Nothing
End Sub