Como puede tener actualizado el campo Stock, de la tabla Productos ?

Le di mil vueltas y no puedo solucionarlo.

Tengo un Formulario Pedidos, con un subformulario Detalle Pedidos, aca esta el detalle de los productos que se venden y el Stock que queda de cada uno a medida que se realiza cada venta. Voy modificando el Campo Stock a medida que realizo cada venta, restando las unidades.

Ahora, el problema es cuando debo modificar una venta ya hecha, cambiar las cantidades o el producto o eliminar algun producto de la venta. Si cambio de producto, el producto anterior, queda con el Stock como si lo hubiese vendido, si cambio las cantidades, sigue restando del Stock anterior, si elimino un producto de la venta, en el Stock ya quedo restado.

1 Respuesta

Respuesta

Si te tuviera que aconsejar, te diría que no guardases el stock del producto en la tabla, pues al ser un dato "volátil" te evitas tener que pensar en programar todas las posibles situaciones que le afecten. En mi opinión, es mejor calcularlo cada vez que lo necesites, ya sea por medio de consultas o de código VBA y mostrarlo en un campo independiente.

En esta misma web, tanto Julián González Cabarcos como yo mismo, entre otros expertos, hemos dado recientemente soluciones sobre este mismo tema, respuestas que puedes encontrar si usas el buscador.

Neckkito en su web tiene una serie de ejemplo sobre gestión de almacén (http://neckkito.xyz/nck/?searchword=almacen&searchphrase=any&limit=20&ordering=newest&view=search&option=com_search), y cálculo de stock (http://neckkito.xyz/nck/?searchword=stock&searchphrase=any&limit=20&ordering=newest&view=search&option=com_search)

De todas formas, hay una forma relativamente sencilla de mantener en la tabla el stock, teniendo en cuenta modificaciones y eliminaciones de registros de compras o ventas, usando macros de datos (para lo que necesitas access 2010 o superior), que puedes ver en este extracto de mi manual de Access y VBA: http://www.filebig.net/files/tmrsQYr7tD

Un saludo.


Muchas ¡Gracias! por ambas respuestas. Algo avance, cree un Procedimiento (Stock) el cual llamo después de Actualizar el campo [Cantidad].

Sub Stock()

Dim Nuevo As Currency
Dim Original As Currency
Dim Diferencia As Currency

Nuevo = Forms!Pedido![Subformulario Detalle Pedido]!Cantidad
Original = Forms!Pedido![Subformulario Detalle Pedido]!Cantidad.OldValue
Diferencia = Nuevo - Original

Forms!Pedido![Subformulario Detalle Pedido]!KiloActual.Value = Forms!Pedido![Subformulario Detalle Pedido]!KiloActual - Diferencia

End Sub

Funciona perfecto... ahora me surge otro problema... Modifico el campo [Cantidad] de un registro ya ingresado Ej. Tenia 5 (Original) y Cambio por 7 (Nuevo), entonces me resta 2 de [KiloActual] que vendria a ser el Stock ... Hasta ahí bien... Pero si en el mismo momento (sin salir, del formulario y del registro que estoy editando) quiero cambiar nuevamente la cantidad, por 8 por ej., me resta 3 del Stock (5 (Original) - 8 (Nuevo)) es decir no me actualiza el Old.Value mientras siga dentro del mismo registro, si salgo del registro recién ahí lo actualiza.

Pero debo preveer que el usuario, pueda equivocarse dos veces en el mimo momento y quiera arreglarlo.

Escribiendo esto se me ocurre que debo hacer un campo KiloActual.OldValue para tener ese dato también. 

Lo que tienes que hacer es forzar el guardado cada vez que calculas el stock, para que los datos se actualicen en la tabla y así el old.value coja el valor correcto.

Por ejemplo, después de llamar al procedimiento ese, pon un

DoCmd. RunCommand acCmdSaveRecord

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas