Calcular si hay cantidad disponible en un articulo

Tengo un formulario que esta compuesto de la siguiente manera:
1. Un Formulario principal que se llama MESAS.
2. Y un subformulario que se llama VENTAS.
En el subformularo VENTAS esta compuestos por los siguientes campos:
a) Código (código del articulo)
b) Articulo.
c) Precio_publico.
d) Cant_vedidas
Quiero que cuándo escoja el código del articulo y ingrese la cantidad vendidas me capture el Stock que se encuentra en una consulta que se llama STOCK ojo el campo se llama Stock es donde están todas las existencias que van quedando., me muestre la existencia que hay en inventario y la cantidad disponibles que hay de cada articulo.

1 Respuesta

Respuesta
1

Hay 2 formas: (Existencia antes de la salida y después de la salida

1. Puedes calcular la existencia cuando el campo Cant_Vendidas reciba el enfoque ejecutando una consulta SQL, algo como: Evento Antes de Actualizar de este campo.

Dim strsql as string

Dim db as Databases

Dim rs as RecordSet

strsql=" SELECT nombretabla.Código,nombretabla,Cant_vendidas FROM nombretabla WHERE Código=" & Me.Código


set db=currentdb

set rs=db.Openrecordset(strsql)

Msgbox "Existencia antes de esta salida : " & rs!Cant_vendidas

rs.close

db.close

set rs=Nothing

set db=Nothing

2. Calcular la existencia después de la salida:

Incluyes el mismo código pero en el evento Después de Actualizar y solo cambias la instrucción Msgbox por:

Msgbox "Existencia después de esta salida : " & rs!Cant_vendidas+Me.Cant_vendidas

Disculpa compañero no doy con el código que me enviaste.

Yo copie un código así: (pero me arroja resultados de existencia de productos que no son)

no se que hacer

te envío el código:

Private Sub Cant_Vendidas_BeforeUpdate(Cancel As Integer)
'Declaramos las variables
Dim ARTICULO As Long
Dim vCant As Integer, Cant_vendidas As Integer
Dim rst As DAO.Recordset
'Cogemos el identificador del producto
ARTICULO = Nz(Me.IdVEN.Value, 0)
'Cogemos la cantidad introducida
vCant = Nz(Me.Cant_vendidas.Value, 0)
'Si no hubiera cantidad introducida salimos del proceso
If vCant = 0 Then Exit Sub
'Creamos el recordset
Set rst = CurrentDb.OpenRecordset("Stock", dbOpenSnapshot)
With rst
'Nos situamos en el primer registro
.MoveFirst
'Iniciamos el recorrido de registros hasta encontrar la referencia
'con la que estamos trabajando en el formulario
Do Until .EOF
'Cuando lo encontramos...
If .Fields("código").Value = ARTICULO Then
'Cogemos el stock existente
vCant = .Fields("Stock").Value
'Le restamos la cantidad que estamos sacando
vCant = Cant_vendidas - vCant
Select Case stock
'Si el resultado es negativo no permitimos sacar esa cantidad
Case Is < 0
MsgBox "No hay stock suficiente de este producto" & vbCrLf & vbCrLf _
& "El stock actual del producto es " & stock + vCant & _
" unidades", vbCritical, "SIN STOCK"
'Borramos la cantidad introducida
Me.ARTICULO.Value = Null
'Es necesario hacer un rebote de foco para volver a situar
'el enfoque en CantS
Me.código.SetFocus
Me.Cant_vendidas.SetFocus
Exit Do
'Si queda stock, pero es inferior a 10 unidades, lanza un aviso
Case Is <= 1000
MsgBox "¡Atención! El stock que quedará de este producto es de " _
& vCant & " unidades", vbInformation, "STOCK CRÍTICO"
Exit Do
End Select
End If
.MoveNext
Loop
End With
'Cerramos conexiones y liberamos memoria
rst.Close
Set rst = Nothing
End Sub

Veo que estas complicando no es necesario recorrer todo un recordset para obtener el valor de la cantidad, lo más sencillo es el código que te envíe. Si quieres enviame tu base datos a [email protected].

Te agradezco de todo corazón tu dedicación de enseñarme, ya que llevo 3 meses en esto

mi correo es:

[email protected]

la base datos : copia estanco aldo gaviria

Debes enviar la base de datos comprimida en .RAR. o ZIP a [email protected]

listo Profe ya lo envíe mi correo es: ([email protected])

Hola como estas Sr Expertos, ya te envie la BD comprimida (nombre del archivo ALDO GAVIRIA), por favor te agradezco que me ilustres.

Espera un poco ya que tengo otras consultas pendientes por responder

Un saludo de mi parte

Sr Experto no se le olvide la revisión de mi base de dartos

mi correo es [email protected]

Favor enviar nuevamente la base de datos, disculpa pero no sé donde la guardé.

Saludos Ya te envíe el correo ( [email protected])

Sr experto siempre recibió mi correo?

No he recibido la base de datos enviala comprimida a [email protected]

Gracias Señor Experto eres Genial, pero me presenta errores en el momentos de realizar las ventas ejemplo:
cuando dígito el código 1 que corresponde al articulo club colombia en ingreso la cantidad vendida = 1 todo va bien me resta lo que hay en existencia pero cuando ingreso 2 cantidad vendidas me lo resta menos 1 .
y lo otro cuando no hay cantidad disponibles no me deja salir de la ventana.
gracias por tu atención prestada me gustaría que me explicaras entre paren tisis cada linea del código eres lo máximo solamente me falta eso

Te comento algo, realmente en mis aplicaciones nunca utilizo el sistema que planteas para llevar los saldos de inventario, personalmente manejo un tabla de kardex donde registro las entradas y salidas con los campos principales más debe, haber y saldo. Igualmente llevo el saldo en la maestra de artículos, en donde este saldo debe ser igual al de la tabla kardex, lo anterior para que te hagas una idea de como mejorar tu aplicación.

No veo porque no te deja salir, si al cancelar el evento solo resta oprimir Esc para suspender. Analiza bien el código haber que sucede cuando se vende más de 1 unidad, no encuentro inconsistencias.

Hola como estas, ya revisé el código y no encuentro la solución para cuando vendo mas de 1 unidad me aparezca el Stock real, me resta cuando vendo 1 unidad

ya no se que hacer es lo único que falta.

gracias por tu atención prestada i disculpame por tanta molestia

Lo lamento pero la programación es así, a veces nos desalienta pero hay que seguir adelante, de esta forma se aprende, insiste y prueba.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas