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.