Solicito de vuestra ayuda: arroja error 91 variable de objeto o bloque WITH no establecido

El código es el siguiente: consulta e inserta a una tabla, pero cuando no hay registros produce el error

'Consulta e inserción
Dim RsDetLiq As Recordset
Dim RsRefCaja As Recordset
strSQL = " SELECT T_DETLIQRV_CCAF.Rut, T_DETLIQRV_CCAF.Movto, T_DETLIQRV_CCAF.[Exento Impuesto],T_DETLIQRV_CCAF.[Monto], T_DETLIQRV_CCAF.[Prepagar?] FROM T_DETLIQRV_CCAF WHERE (T_DETLIQRV_CCAF.Rut)=" & Me.txtRUT & " AND (T_DETLIQRV_CCAF.[Prepagar?])=True;"
Set RsDetLiq = dbs.OpenRecordset(strSQL, dbOpenDynaset)
iCantRefInternoRS = RsDetLiq.RecordCount
If RsDetLiq.EOF And RsBase.BOF Then
MsgBox "No hay refinanciamientos de caja"
Else
RsDetLiq.MoveFirst
Do While Not RsDetLiq.EOF
iCantRefInterno = iCantRefInterno + 1
Set RsRefCaja = dbs.OpenRecordset("RefinanciamientoCaja", dbOpenDynaset)
RsRefCaja.AddNew
RsRefCaja("NumeroSimulacion") = i
RsRefCaja("CajaRefinanciada") = RsDetLiq![Movto]
RsRefCaja("MontoRefinanciado") = RsDetLiq![Monto]
RsRefCaja("TieneComprobante") = RsDetLiq![Exento Impuesto]
RsRefCaja.Update
RsDetLiq.MoveNext
Loop
End If
RsRef. Close
Dbs. Close

2 Respuestas

Respuesta
1

Después de tu línea <MsgBox "No hay refinanciamientos de caja"> y antes de <Else> escribe, simplemente,

Exit sub

Es decir:

...

MsgBox "No hay refinanciamientos de caja"

Exit sub
Else

...

A ver si así ya no te da el error.

Saludos,

Resultó!! , pero otra pregunta en el caso que desee hacer otra consulta e inserción de y a otras tablas, el exit sub no lo podría poner dos veces?

Gracias por la ayuda, soy novata :)

Vamos a ver...

El error se te producía porque cerrabas el recordset (RsRef. Close) pero, en el caso de no haber registros, aún no lo habías creado. Al no crearlo, en este supuesto, lo que en realidad te decía el error era: ¿Cerrar RsRef si no existe?

Puedes utilizar el Exit Sub tantas veces como quieras. Te pongo un ejemplo (en forma de código pero en abstracto, a nivel de "entendimiento humano"):

...

vNumero=¿Qué número quieres?

If vNumero es mayor que 10 then

msgbox "El número debe ser menor o igual a 10"

Exit Sub -> Aquí salimos

Else

If (vNumero mod 2) = 0 then

msgbox "El número no puede ser par"

Exit Sub -> Aquí volvemos a salir

End If

msgbox "El número introducido es menor que 10 y es impar"

End If

...

En pocas palabras, que puedes obligar a salir del proceso a través del Exit Sub tantas veces como lo necesites.

Un saludo,

Neckkito

Neckkito estoy revisando tus manuales de VB que tienes publicado en tu sitio... muy bien!

gracias por la ayuda, la verdad es que tengo otras preguntas....me interesa el tema access + vb.

Saludos,

Respuesta

¿Para los que hemos contratado una programa de alguna empresa y nos da el mismo error que tenemos que hacer, mi caso es ese, me da un error a la hora de ejecutar el programa como administrador y en modo normal

La pregunta no admite más respuestas

Más respuestas relacionadas