Se ah producido el error 91 en tiempo de ejecución variable de objeto o bloque with

Estoy haciendo un puto de venta en accces 2010 donde todo me funciona bien hasta le momento de descontar los productos de el inventario al momento de hacer la venta tiene que descontar de la tabla inventarios donde descuenta los que están en CANTIDAD_EN_EXIBICION.

Hago la venta y todo y al momento de pagar me muestra un mensaje don de dice cuanto pado y cuabto cambi pero al momento de darle en aceptar es cuando me muestra el mensaje:

Se ah producido el error 91 en tiempo de ejecución:

variable de objeto o bloque with no establecido

tabla:

CANTIDAD_EN_EXHIBICION

código:

'Descontar Articulos de Inventario basado en REFERENCIA "NumVenta"
Dim rsInv As DAO.Recordset
Dim sqlInv As String
Dim cont2 As Integer
Dim cantdesc As Double
Dim idpro As Long
For cont2 = 1 To cantLista
     idpro = artVendido(cont2).idprod
     cantdesc = artVendido(cont2).cant
    sqlInv = "SELECT * FROM INVENTARIOS WHERE FID_PRODUCTO=" & idpro
     Set rsInv = CurrentDb.OpenRecordset(sqlInv)
     rsInv.Edit
     rsInv!CANTIDAD_EN_EXHIBICION = rsInv!CANTIDAD_EN_EXHIBICION - cantdesc
     rsInv.Update
Next cont2
rsInv.Close
Set rsInv = Nothing

en rsInv.Close me marca con amarillo la depuracion..

Hay otras variables que las tengo declaradas en un modulo

Por favor no se cual es el error!

1 Respuesta

Respuesta
1

Yo comprobaría si la variable "cantLista" tiene un valor mayor que 0. Tengo la impresión que no, que vale 0.

El "close" debería estar en el bucle justo delante del "Next cont2", ya que si dentro del bucle abres el recordset también deberías cerrarlo ahí.

Si estuviera dentro del bucle y "cantLista" vale 0, el proceso funcionaría bien porque no intentaría cerrar un recordset que no se ha abierto.

ok muy bien ya revise la variable "cantLista" si estaba vacío.. pero des pues en la linea:

rsInv.Edit

me dice error 3021

no hay ningún registro activo

Ese error es porque no ha seleccionado ningún registro con el "FID_PRODUCTO=idpro".

Comprueba el contenido de idpro y, antes de ejecutar el "edit" comprueba que la selección ha devuelto algo. Puedes poner esta instrucción:

If rsInv.eof then stop

Esa línea parará la ejecución si el producto no existe. Supongo que siempre debería existir, por lo que si la programación es correcta nunca entraría en el 'stop'.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas