Buen día, en una base de datos en Access debo distribuir el dinero cancelado entre las facturas pendientes de pago, toda la información para tarea está reunida en el siguiente formulario. He planteado un algoritmo para ello. Recurro a ustedes para su traslado a VBA Access, mis conocimientos en este lenguaje son escasos. La tabla del registro final es ABONOS_VENTA (ID_Abono (autonumérico), id_venta, FECHA, Valor_abono). Agradeciendo de antemano su colaboración.

Private Sub BTN_ABONOGLOB_Click()

Dim rs As DAO.Recordset
Dim rst_AbonoVenta As DAO.Recordset
Dim i As Integer
Dim Dinero_por_abonar As Long

Dinero_por_abonar = Me.Dinero_abonado

' i = No. de registros en el Subformulario SubFacturasPend.

Set rs = Me.SubFacturasPend.Form.RecordsetClone
If Not rs.BOF Then
rs.MoveFirst

Set rst_AbonoVenta = CurrentDb.OpenRecordset("ABONOS_VENTA", dbOpenDynaset)

For i = 1 To rs.RecordCount

Dinero_por_abonar = Dinero_por_abonar - rs!Saldo

If Dinero_por_abonar > 0 Then

' Insertar registro en tabla ABONOS_VENTA con los siguientes valores.

rst_AbonoVenta.AddNew

rst_AbonoVenta!id_venta = rs!id_venta
rst_AbonoVenta!FECHA = Me.Fecha_Abono
rst_AbonoVenta!Valor_abono = rs!Saldo

rst_AbonoVenta.Update

ElseIf Dinero_por_abonar = 0 Then

i = rs.RecordCount ' Terminar rutina.


ElseIf Dinero_por_abonar < 0 Then

' Insertar registro en tabla ABONOS_VENTA con los siguientes valores.


rst_AbonoVenta.AddNew

rst_AbonoVenta!id_venta = rs!id_venta
rst_AbonoVenta!FECHA = Me.Fecha_Abono
rst_AbonoVenta!Valor_abono = rs!Saldo + Dinero_por_abonar

rst_AbonoVenta.Update

i = rs.RecordCount ' Terminar rutina.

End If
rs.MoveNext
Next i
End If
rs.Close
Set rs = Nothing

rst_AbonoVenta.Close
Set rst_AbonoVenta = Nothing

End Sub