Actualizar tabla de movimientos de Inventario en Access

A ver si me pueden ayudar, tengo una tabla de movimientos de inventario, en la cual registro la cantidad de producto que entra y sale, las entradas las registro con signo positivo y las salidas con signo negativo,

Para las entradas no tengo problema ya logre insertarlas, solamente tengo problemas para la cantidad de productos que salen, ya que tengo un formulario de ordenes de produccion el cual tiene un subformulario, en donde cada vez que se ingrese un producto este debe ser insertado en la tabla movimientos con la cantidad en negativo.

Lo he intentado hacer con el siguiente codigo poniendolo en la opcion despues de actualizar en el subformulario, pero a toda la tabla de moviemientos la cantiadad me la pone -1.

El codigo utilizado es el siguiente:

If (IsNull(DLookup("id_producto", "Movimientos", "id_producto=" & Me.id_producto.Value & ""))) Then
        DoCmd.RunCommand acCmdSaveRecord
        DoCmd.SetWarnings False
        DoCmd.RunSQL "INSERT INTO Movimientos (id_producto,fecha_mov,cantidad_mov) VALUES(" & Me.id_producto.Value & ",#" & Forms![Orden_de_Produccion]![txtFecha_apert] & "#," & (Me.txtCantidad.Value) * -1 & ")"
        DoCmd.SetWarnings True
        DoCmd.RunCommand acCmdRecordsGoToNew
        Else
            DoCmd.RunCommand acCmdSaveRecord
            DoCmd.SetWarnings False
            DoCmd.RunSQL "UPDATE Movimientos SET cantidad_mov = " & (Me.txtCantidad.Value) * -1 & ""
            DoCmd.SetWarnings True
    End If

1 Respuesta

Respuesta
4

Personalmente convertiría el cuadro de texto Producto del subformulario en un combinado con los campos Idproducto y nombre, con la columna dependiente 1 y en sus propiedades-eventos-despues de actualizar puedes poner

docmd.runsql"insert into movimientos(idproducto, cantidad) values(" & me.producto & ",-" & me.cantidad & ")"

Es más, puedes usar el campo Tipogastable para que te actúe como criterio para limitar el numero de productos.

¡Gracias! por tu pronta respuesta.

Por cierto, si has cambiado el cuadro de texto por un combinado que aunque te muestre el nombre del producto, pero el valor que guarda es el IdProducto, en la tabla origen del subformulario puedes ponerle un campo Existencias y ponerlo a la derecha de Producto en el subformulario, y en las propiedades-eventos-después de actualizar del combinado poner

Docmd. Runcommand accmdsaverecord

Docmd. Runsql"lo de insertar en la tabla Movimientos"

Existencias=dsum("cantidad_mov","movimientos","idproducto=" & me.producto & "")

Así, una vez que escribas un producto en el subformulario, en Existencias te aparecerán las que te quedan en ese momento de ese producto.

Que lo puedes completar con, por ejemplo

If existencias<=10 then

msgbox("Convendría ir reponiendo producto",vbyesno,"Alcanzada reserva mínima")

end if

¡Gracias! Excelente asi lo voy hacer, fijate que algo asi estaba pensando pero no sabia como hacerlo.

Te agradezco mucho

Si te ves en problemas, y quieres, repito, si quieres, mándame un 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 Daniel Amaya, ya que si no sé quien me escribe ni los abro.

Muchísimas gracias no lo dudes que si tengo problemas te escribo al correo, fíjate que el campo existencia lo tengo en otra tabla que se llama stock en esa tengo el id_producto y la existencia,¿tendría que traerme ese campo para este formulario verdad?

Que esta tabla stock lo que hace es hacer una suma del campo cantidad por producto, como la columna cantidad las entradas están en positivo y las salidas están en negativo al final me da las existencias totales por producto

No es necesario, teniendo el Idproducto, o lo que sea que identifique a un registro en particular, puedes usar la función Dlookup, por ejemplo

Existencias =dlookup("existencias","nombretabla","idproducto=" & me.producto & "")

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas