Supongamos que tienes un formulario Ventas con un subformulario DetalleVenta. En éste tienes los cuadros de texto Idproducto, precio, Antes, cantidad, Despues, subtotal. Supongamos también que tienes una tabla Productos con IdProducto, Producto, precio y Existencias, y que "has llenado" esta tabla con las existencias iniciales de los diferentes productos.
En el subformulario Detalleventa, en el evento Después de actualizar del cuadro de texto Idproducto puedes poner
Precio=dlookup("precio","productos","idproducto=forms!ventas!detalleventa.form!idproducto"")
Antes=dlookup("existencias","productos","idproducto=forms!ventas!detalleventa.form!idproducto"")
Cantidad. Setfocus
Y en el evento Después de actualizar del cuadro de texto Cantidad poner
docmd.setwarnings false
Quedan = antes - Cantidad
DoCmd.RunSQL "update productos set existencias=quedan where idproducto=forms!ventas!detalleventa.form!idproducto"
Me explico, una vez que has elegido el idproducto busca en la tabla productos el precio y las existencias del producto que tiene el idproducto que has escrito y te lo pone en los cuadros de texto respectivos.
Una vez que has puesto la cantidad que has vendido, en el cuadro de texto Quedan te aparece la diferencia Antes-cantidad y actualiza la tabla Productos poniéndote las existencias que quedan después.
De todas formas, si quieres, repito, si quieres mándame un mensaje a cabarcos@ono,com y t mando un ejemplo. Si lo haces, en el asunto del mensaje pon tu alias Chucallada, ya que s no sé quien me escriba ni los abro.