Problema al validar stock formulario access 2010

Vuelvo a solicitar vuestra ayuda. Tengo un formulario para grabar salidas de almacén, estoy intentando poner un control para que me avise si al intentar hacer una salida no hay stock, el campo stock en la tabla ALMACEN es siempre 1 o 0 y he puesto el siguiente evento, que encontré en el foro. Pero no me funciona.

Private Sub SERIE_Exit(Cancel As Integer)
Dim vCantStock As Integer
Dim rst As DAO.Recordset
vAnilla = Nz(Me.ANILLA.Value, 0)
Set rst = CurrentDb.OpenRecordset("ALMACEN", dbOpenSnapshot)
With rst
.MoveFirst
Do Until .EOF
If .Fields("ANILLA").Value = vAnilla Then
vCantStock = .Fields("STOCK").Value
If vCantStock = 0 Then
    MsgBox "LA ANILLA NO EXISTE EN SU ALMACÉN", vbCritical, "REVISE ANILLA"
    Me.INSCRIPCION.SetFocus
End If
Exit Do
End If
    .MoveNext
    Loop
    End With
    Set rst = Nothing
End Sub

Algo estoy haciendo mal, pero no sé que es. El caso es que no me da error ni nada.

Respuesta
2

Es más sencillo. Supongamos que tienes una tabla Salidas, con ..., Id Producto, Cantidad,... Y un formulario Salidas. En el evento Antes de actualizar del cuadro de texto cantidad puedes poner

If Cantidad>dlookup("stock","productos","idproducto=" & me.idproducto & "") then

msgbox "La cantidad no puede se mayor que el stock"

docmd.cancelevent

end if

o, de otra forma

dim n as byte

n=dlookup("stock","productos","idproducto=" & me.idproducto & "")

If cantidad>" & n & " then

Msgbox" la cantidad no puede ser mayor que "&n, vbokonly,"Que lo sepas"

Docmd. Cancelevent

end if

Así, si escribes una cantidad y pulses Enter, antes de guardarla comprueba en la tabla Productos que no estés dando más salidas que stock hay. Si ese ese el caso, te sale el mensaje y el cursor se vuelve a cantidad para que lo corrijas.

¡Gracias! Disculpa pero no he podido probarlo hasta ahora.

La primera opción me funciona perfectamente, la segunda me daba un error. Con la 1ª lo he solucionado.

Muchas gracias!!!!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas