Problema con bucle Do While

Hola desde hace unos días he estado batallando con un bucle para aplicar un pago. Hice un recordset para determinar el saldo por cobrar y por servicio, el bucle funciona HASTA que el usuario digita una cantidad recibida mayor al saldo por cobrar, pues ya no hay registro con el que evaluar, intento evitar que el bucle se repita con BOF and ENF pero siempre se detiene con un error que dice el registro no existe.
el bucle que quiero hacer es do While POR > 0

Private Sub cmdAplicarPago_Click()

If (rstSaldosPorServicio.BOF And rstSaldosPorServicio.EOF) Then
rstPagos.AddNew
rstPagos("idPagos1") = Me.idPagos1
rstPagos("idServicios") = 100
rstPagos("ValorPagado") = vBalanceControl
vBalanceControl = 0
rstPagos.Update
Else
Do While vBalanceControl > 0
If vBalanceControl > rstSaldosPorServicio("Saldo") Then
rstPagos.AddNew
rstPagos("idPagos1") = Me.idPagos1
rstPagos("idServicios") = rstSaldosPorServicio("idServicio")
rstPagos("ValorPagado") = rstSaldosPorServicio("Saldo")
vBalanceControl = vBalanceControl - rstSaldosPorServicio("Saldo")
rstPagos.Update
ElseIf vBalanceControl <= rstSaldosPorServicio("Saldo") Then
rstPagos.AddNew
rstPagos("idPagos1") = Me.idPagos1
rstPagos("idServicios") = rstSaldosPorServicio("idServicio")
rstPagos("ValorPagado") = vBalanceControl
vBalanceControl = vBalanceControl - vBalanceControl
rstPagos.Update
End If
rstSaldosPorServicio.MoveNext
Loop
End If

Añade tu respuesta

Haz clic para o