Error 424 se requiere un objeto

Soy nueva en esto y necesito que me ayuden

Private Sub Cantidad_BeforeUpdate(Cancel As Integer)
If Nz(Me.cantidad.OldValue, 0) <> 0 Then rsOut!stock = rsOut!stock + Me.cantidad.OldValue
rsOut!stock = rsOut!stock - Me.cantidad
End Sub

si escribo así me dice que no se ha definido la variable

Dim rsOut as Variant

Me dice se requiere un objeto

1 Respuesta

Respuesta
1

Además de declarar la variable

Dim rsOut as Recordset

te falta asignarle un valor:

Set rsOut=CurrentDb.OpenRecordset(Nombretabla/Consulta/SQL)

Donde tendrás que poner el nombre de la tabla/consulta o instrucción SQL sobre la que quieras abrir el recordset.

 Hola, muchas gracias por tu disponibilidad.. según lo que entendí:

End SubPrivate Sub Cantidad_BeforeUpdate(Cancel As Integer)
Dim rsOut As Variant
Dim rsOut As Recordset
Set rsOut = CurrentDb.OpenRecordset(Producto)
If Nz(Me.cantidad.OldValue, 0) <> 0 Then rsOut!stock = rsOut!stock + Me.cantidad.OldValue
rsOut!stock = rsOut!stock - Me.cantidad
End Sub

pero ahora me dice error de compilación, declaración duplicada en el ámbito actual

Quita el Dim rsOut As Variant

Además, el nombre de la tabla/consulta tienes que ponerlo entre comillas:

Set rsOut = CurrentDb.OpenRecordset("Producto")
Otra opción, si usas ADO en vez de DAO, sería esta:
Private Sub Cantidad_BeforeUpdate(Cancel As Integer)
Dim rsOut As New ADODB.Recordset
rsOut.Open "Producto", CurrentProject.Connection, adOpenDynamic, adLockPessimistic

If Nz(Me.cantidad.OldValue, 0) <> 0 Then rsOut!stock = rsOut!stock + Me.cantidad.OldValue
rsOut!stock = rsOut!stock - Me.cantidad
End Sub

Hola de nuevo yo, te agradezco tu paciencia.. si perdón no me di cuenta de quitar

*si hago con la primer opción me da error 13 y supongo, que tiene que ver con la aclaración que me diste de ADO y DAO

*la segunda opción, no me da error, pero tampoco me hace lo que necesito

me deja modificar la cantidad pero no me suma la anterior ni resta la nueva..

que mas me falta? porque no funciona :(

Antes de editar un dato de un objeto recordset (al menos usando DAO) tienes que editarlo, con rsOut. Edit, y al acabar de modificarlo, has de actualizarlo, con rsOut.Update.

Además, le veo otro problema a tu código: si tienes más de un registro en tu tabla Producto, vas a tener que indicar cual quieres modificar, porque de lo contrario siempre te modificará el primero. Esto podrías hacerlo abriendo el recordset sobre una SQL que te filtre por el producto que quieres actualizar, algo como:

"SELECT * FROM Producto WHERE ID= & Me.Id

Si en el formulario y en la tabla tienes un campo Id.

He buscado en tus otras preguntas lo que pretendes hacer, y mi consejo es que calcules el inventario mediante consultas, como en este ejemplo, pues te evitas tener que andar trasteando con código: http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/todos/94-ejemplos-explicados/ejemplos-de-aplicaciones/124-gestion-almacen

En esa web tienes otras variaciones de ese mismo ejemplo, por si se adaptan mejor a tus necesidades.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas