En este grupo En todos

Foro de Access



Ayuda con control de Stock en Access!!!

Tatato
Buenos Aires, Argent...
Escrito por Tatato
el 07/10/2008

Hola a quien responda!
Estoy haciendo una pequeña base de datos llamada Kiosco y tengo las siguientes tablas:

Productos: IdProducto, NombreProducto, PrecioUnitario y Stock.
Detalles de Factura: IdDetalles de Factura, IdFactura, IdProducto, PrecioUnitario y Cantidad.

Hasta ahora iba todo bien. El problema es el siguiente:
Tengo un subformulario Llamado DETALLES DE FACTURA donde ingreso el producto que vendo. Luego paso al campo Cantidad y es aqui donde empieza mi problema.  Me gustaria que automaticamente me reste en el campo Stock de la tabla Productos la cantidad vendida. Estube buscando por toda la web y he encontrado algunos afterUpdate pero no me funcionan, me tiran diferentes errores. El que mas cerca estubo, me restaba toooodos los Productos no solo el que vendia. Me podran ayudar? Gracias!

Juan Cots
Valencia, España
Escrito por Juan Cots
el 08/10/2008

Hola Tatato.

Lo mejor es en el evento Despues de Actualizar del campo Cantidad ejecutar una consulta de actualización sería algo así:

Private Sub Cantidad_AfterUpdate()
DoCmd. RunSQL "UPDATE Productos SET Productos. Stock = [Stock]- " & Me. Cantidad & " WHERE IdProducto = " & Me. Idproducto
End Sub

Y si no quieres que te salga el mensaje de "Va a actualizar un campo de la tabla.... "

Quedaría así:

Private Sub Cantidad_AfterUpdate()
DoCmd. SetWarnings False
DoCmd. RunSQL "UPDATE Productos SET Productos. Stock = [Stock]- " & Me. Cantidad & " WHERE IdProducto = " & Me. Idproducto
DoCmd. SetWarnings True
End Sub

Un saludo

Leo
Buenos Aires, Argent...
Escrito por Leo
el 22/10/2008

Hola amigos, adhiero al comentario y consulta sobre la actualizacion de stock, pero me pasa que actualizo sin problemas  mis compras y ventas aunque sin decimales, no me permite poner valores como 156. 96 en el campo cantidad, paso mi codigo para que puedas ayudarme, tanto en PRODUCTOS(Stock) como en DETALLE DE VENTAS (cantidad) estan en decimal, pero ni asi, gracias, Saludos!

Private Sub Form_AfterInsert()
Dim consulta As String
consulta = "UPDATE PRODUCTOS SET PRODUCTOS. [STOCK] = [STOCK] - " & Me. Cantidad
consulta = consulta & " WHERE (PRODUCTOS. [idproducto])=" & Me. IdProducto & "))"
MsgBox consulta
CurrentDb. Execute consulta

End Sub

PD: si hace falta te envio la base de datos.!

Juan Cots
Valencia, España
Escrito por Juan Cots
el 22/10/2008

Hola Leo.

Tu código está perfecto. No tiene ningún problema

Sin ninguna duda el problema viene por el tipo de datos de las tablas.

Verifica que efectivamente todos los campos que intervienen en las operaciones (no hace falta que sea Decimal) sean  en tamaño de campo Doble, también es correcto elegir en Tipo de Datos Moneda, pero Ojo no tengas alguno como Número con tamaño de campo Entero Largo y Formato Moneda, porque eso no vale.

Búscalo, porque el problema nace de las tablas.

Si no consigues solucionarlo, coméntalo y miramos a ver que se puede hacer.

Un saludo

Esteban
Buenos Aires, Argent...
Escrito por Esteban
el 04/03/2009

Hola Juan mi nombre es Esteban, la verdad que me sacaste del apuro muchas veces con tus acertadas respuestas eres un genio. Utilice este codigo para el control de stock:

DoCmd. SetWarnings False
DoCmd. RunSQL "UPDATE Productos SET Productos. Stock = [Stock]- " & Me. Cantidad & " WHERE IdProducto = " & Me. Idproducto
DoCmd. SetWarnings True

Pero tengo el problema de que si me confundo en la cantidad de venta, por ejemplo articulo 001 vendo 1.. Pero en el instante la modifico a 2.. En el stock me resta 1 y despues 2.... Es decir si tengo 4 articulos 001 en stock y me confundo en vez de restarme 2, me resta 3.. ¿Soy claro?

Desde ya te agradezco.

Juan Cots
Valencia, España
Escrito por Juan Cots
el 05/03/2009

Hola Esteban.
Podías añadir a tu código lo siguiente:
If MsgBox("Vas a restar " & Me. Cantidad & " ¿Estas seguro? ", vbQuestion + vbYesNo + vbDefaultButton2, Me. Caption) = vbYes Then
DoCmd. SetWarnings False
DoCmd. RunSQL "UPDATE Productos SET Productos. Stock = [Stock]- " & Me. Cantidad & " WHERE IdProducto = " & Me. Idproducto
DoCmd. SetWarnings True
Else
End if

De esta forma te preguntará si estás seguro de la cantidad a restar, si contestas que sí, la restará, si contestas que no, no hará nada
Un saludo

Escrito por Jorge Perez Perez
el 13/05/2009

Hola compañeros, necesito una mano!. Estoy creando una base en access, cree tablas de ingstock y sldstock una para ingreso y otra para saldo de stock. Pero estoy necesitando que cuando ingreso el stock me lo sume y cuando tengo una venta me lo reste! He probado de todo y no he tenido exito esto me esta deseperando! PLEASE! Ayuda! Gracias a los genios!

Izas
España
Escrito por Izas
el 17/08/2009

Buenas tardes!
me he creado una base de datos para una tienda y al actualizar stock, me resta la cantidad vendida en todos los productos, no solo en el que yo quiero.
Que hago mal?
Un saludo

Escrito por Marcos Gonzales Echegaray
el 11/12/2009

Hola leo como estas te escribe marcos de lima peru yo tambien estoy haciendo un sistema de almacen en acces 2003, pero tengo el famosoproblema de actualizar el stock, dices que tu ya lo has logrado , te pediria un gran favor si puedes enviarme tu base de datos asi me sirve como guia para hacer mi sistema, asi podemos intercambiar tambien sistemas, te lo aradeceria mucho no sabes cuanto.

miles de gracias
mi correo es marcos_gonzales_e@hotmail. Com

Jack Franck
Informatica unah honduras,
Escrito por Jack Franck
el 17/12/2009

Esto me esta dando problemas, alguien que me ayude por favor

Private Sub Cantidad_AfterUpdate()
DoCmd. RunSQL "UPDATE Productos1 SET Productos1. Cantidad_Existente = [Cantidad_Existente]- " & Me. Cantidad & " WHERE clave_producto = " & Me. Clave_producto
DoCmd. SetWarnings True
End Sub

Jack Franck
Informatica unah honduras,
Escrito por Jack Franck
el 17/12/2009

Me dice que el codigo esta mal escrito

Jack Franck
Informatica unah honduras,
Escrito por Jack Franck
el 17/12/2009

Espero me apoyen por favor

Jack Franck
Informatica unah honduras,
Escrito por Jack Franck
el 17/12/2009

Bueno realmente me dice error de sintaxis update

Juan Cots
Valencia, España
Escrito por Juan Cots
el 18/12/2009

Hola jack.
El campo clave producto es de tipo texto o numérico?
Pon el error exacto que te produce
Un saludo

Jack Franck
Informatica unah honduras,
Escrito por Jack Franck
el 18/12/2009

Gracias por responderme, el campo clave_producto es de tipo texto, pero realmente donde no me sale numeracion es cuando coloco, cantidad_existente y los dos son numero, con formato doble.

Private Sub Cantidad_AfterUpdate()
DoCmd. RunSQL "UPDATE Productos1 SET Productos1. Cantidad_Existente = [Cantidad_Existente]- " & Me. Cantidad & " WHERE clave_producto = " & Me. Clave_producto
DoCmd. SetWarnings True

Jack Franck
Informatica unah honduras,
Escrito por Jack Franck
el 18/12/2009

Me sale un mensaje asi error de sintaxis en la instruccion update

Jack Franck
Informatica unah honduras,
Escrito por Jack Franck
el 18/12/2009

Gracias por prestar atencion, que hariamos muchos si no tuvieramos consejeros como tu en estas areas, creo que ya estariamos sin pelos en la cabeza.

Juan Cots
Valencia, España
Escrito por Juan Cots
el 18/12/2009

Ya... Pero a Access hay que pasarle la sintaxis del tipo de datos correctamente y un campo de texto debe ir entre comillas simples y dobles, por tanto lo que está mal es esto:

WHERE clave_producto = " & Me. Clave_producto

debe ser

WHERE clave_producto = '" & Me. Clave_producto & "'"

Un saludo

Jack Franck
Informatica unah honduras,
Escrito por Jack Franck
el 18/12/2009

a

Jack Franck
Informatica unah honduras,
Escrito por Jack Franck
el 18/12/2009

Gracias Juan Carlos, Pero mira ya lo tengo como tu me dices, pero aun me sigue diciendo que tengo un error de sintaxis en update


Private Sub Cantidad_AfterUpdate()
DoCmd. SetWarnings False
DoCmd. RunSQL "UPDATE Productos1 SET Productos1. Cantidad_Existente = [Cantidad_Existente] - " & Me. Cantidad & " WHERE clave_producto = '" & Me. Clave_producto & "'"
DoCmd. SetWarnings True
End Sub

En cantidad existente al pasar por encima me sale el valor de me. Cantidad, en el caso la cantidad existente en productos es 5 y me muestra 3, que es el valor que le estoy quitando a traves de ventas donde tengo la cantidad que deseo restar al inventario.