Como eliminar Error 3021 en Loop?
He creado una tabla que contiene datos para la generación de un libro de Ventas IVA y tengo un proceso que le asigna un número de serie a cada registro según el Tipo de Cliente y el Tipo de Factura (Factura o Devolución).
El proceso se cumple perfecto hasta que llega al final de los registros y el sistema emite el siguiente error: "Se ha producido el Error '3021' en tiempo de ejecución: No hay ningún registro activo." Lo que ocasiona la interrupción del proceso y la posibilidad de que los usuarios accedan a las lineas del programa con la opción "DEPURAR".
Aquí les dejo las lineas para su análisis y que por favor me ayuden a solucionar este inconveniente. Mil Gracias.
Dim stDocName As String
Dim db As Database
Dim rs As Recordset
Dim vTipoClie As Integer
Dim vSerie As Integer
Dim vFechaX As String
Dim vTipoFac As String
If MsgBox("Se generarán los datos correspondientes a las fechas desde el " & fechadesde.Value & " hasta la fecha " & fechahasta.Value & ", está de acuerdo?", vbYesNo, "Libro de Ventas") = vbYes Then
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
' ** Actualiza DataLibros
stDocName = "ActDataLibros1"
DoCmd.RunMacro stDocName
Comando13.Enabled = True
' Activamos la bd
Set db = CurrentDb
' Creamos el recordset
Set rs = db.OpenRecordset("Select NumeroD,FechaE,TipoFac,TipoClie, FechaX, Serie from DataLibros order by FechaE")
vSerie = 1 ' Damos el valor a la variable vSerie
Do While Not rs.EOF ' mientras no sea final de fichero hazme...
vTipoClie = rs!TipoClie ' damos el valor de la variable igual al valor del campo TipoClie
vFechaX = rs!FechaX
vTipoFac = rs!TipoFac
Do While Not rs.EOF And vTipoClie = rs!TipoClie And vFechaX = rs!FechaX And vTipoFac = rs!TipoFac ' mientras no sea final de fichero y el campo TipoClie tenga el mismo valor....
rs.Edit ' editamos el recordset
rs!Serie = vSerie
Rs.Update ' damos el valor al campo serie igual al de la variable y actualizamos
rs. MoveNext ' vamos al siguiente registro
Loop ' cerramos el 2º bucle
vSerie = vSerie + 1 ' aumentamos el valor de vSerie
Loop ' cerramos el 1er bucle
Else
MsgBox "Procedimiento Abortado", vbInformation, "Información"
fechadesde.SetFocus
End
End If