Como Calculo un Stock de productos a través de una consulta de ACCESS

Soy nuevo en el mundo access, tengo una tabla Productos, (Idprod, descripción, precio), una tabla Movimientos(Idmov, fecha, idprod, cantidad, importe, saldo) una tabla TipoMovimiento(idTipoMov, TipoMovimiento(entrada o salida)
quiero hacer una consulta que en dependencia del tipo de movimiento me sume o reste el saldo o stock de productos.
He visto algunas ayudas a dudas similares a la mía, pero en todas tienen dos campos, uno de entrada y uno de salida, yo quiero hacerlo con uno solo, Cant, si alguien me pudiera ayudar se lo agradecería.

1 respuesta

Respuesta
3

Si te tuviera que aconsejar, yo eliminaría la tabla TipoMovimiento. Y además no me molestaría en hacer una consulta. Mira, si tengo la tabla Productos con unas existencias iniciales, antes de empezar a vender/comprar

Y tengo la tabla Movimientos

Hago un formulario, da igual si es único o continuo, pero se ve mejor de esta última forma.

En el combinado elijo el tipo de movimiento, anoto la fecha y elijo el producto. Automáticamente me pone su precio y el cursor se va a Cantidad. Una vez que anoto ésta, en Importe me pone el producto Precio * Cantidad y en el campo Existencias( que lo he puesto para que lo veas pero no haría ninguna falta) si es entrada la suma y si es salida la resta.

Y aún así yo lo haría más sencillo.

El código del formulario es

Private Sub Cantidad_AfterUpdate()
Importe = Precio * Cantidad
DoCmd.RunCommand acCmdSaveRecord
Select Case TipoMov
Case Is = "entrada"
Existencias = DLookup("existencias", "productos", "idproducto=" & Me.IdProducto & "") + Cantidad
Case Else
Existencias = DLookup("existencias", "productos", "idproducto=" & Me.IdProducto & "") - Cantidad
End Select
DoCmd.RunSQL "update productos set existencias=" & Me.Existencias & " where idproducto=" & Me.IdProducto & ""
End Sub
Private Sub IdProducto_AfterUpdate()
Precio = DLookup("precio", "productos", "idproducto=" & Me.IdProducto & "")
Cantidad.SetFocus
End Sub

Con lo cual la propia tabla Productos te quedaría

Es decir, te va modificando las existencias de ese producto según sea entrada o salida. Pero como te decía, aún lo haría más sencillo.

Si quieres, repito, si quieres, mándame un mensaje(solo el mensaje) a [email protected] y te mando un ejemplo de como lo haría. Si lo haces, en el asunto del mensaje pon tu alias Orlando, ya que si no sé quien me escribe ni los abro.

¡Gracias! 

Me funcionó muy bien con lo que me explicaste lo que me envia esta advertencia cada vez que atualizo un registro, ser'ia posible que no me saliera???

 sería posible hacer esto mismo, pero en un formulario con subformulario.

En el Form pondría los datos del cliente, fecha del movimiento y tipo de movimiento, en el subform el resto de los datos productos, existencia, etc.

Me gustaría también que el user no pueda rebajar más de la existencia, o sea que nunca sea negativa, con algún tipo de advertencia quizás cuando se seleccione el producto en cuestión.

gracias de antemanos.

Saludos

Puedes hacerlo de dos formas:

1º Sólo para ese formulario. Basta con poner el código como

Private Sub Cantidad_AfterUpdate()
Docmd.setwarnings false
Importe = Precio * Cantidad
Y lo demás

2º Para todos. Pulsa Archivo-Opciones-Base de datos actual y desactiva las dos flechas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas