Calcular una resta por medio de una consulta

Tengo una base de datos donde hay una tabla productos, en la cual hay un campo de unidades totales de determinado producto, en la tabla de facturación hay un campo para ingresar la cantidad de terminado producto. En una consulta resto las cantidades ingresadas a las unidades del producto que están en la tabla producto, pero si se venden más cantidades sobre ese mismo producto, la resta siempre la va hacer por las unidades que están en la tabla productos, no por las que quedaron anteriormente. Ej:
Unidades producto cantidad quedan
100 1 10 90
100 1 20 80
Realiza la operación sobre los mismos 100 y no sobre los 90 que quedaban.

1 Respuesta

Respuesta
1
Es porque tu campo unidades de tu tabla producto debe modificarse y ya no debería ser 100, debería ser 90, el problema es que como actualizas el campo pierdes el dato.
Por esto, en tu tabla facturación deberías adicionar un campo unidades en el que guardes el las unidades que tenias antes de realizar la transacción.
Para poder hacer esto
Supongo que tienes un formulario de facturacion donde indroduces o seleccionas el producto, que debe tener 2 columnas una el codigo y otra la descripcion del producto, a esto se deberia adicionar las unidades y para que no se vea, en la propiedad ancho de columna deneria tener el valor, por ejemplo 0;10;0
luego en el evento despues de actualizar, del cuadro combinado , ingresas la siguiente instruccion
me.unidades = [CuadroCombinadoDeProductos].Columns(2)
Donde unidades es el campo de la tabla facturación, donde guardas las unidades actuales
entonces, en tu consulta tendrás ya la variación de las uniades en la tabla facturación
una vez que termines de ingresar los datos de la tabla facturación debes actualizar los datos de la tabla productos, que podrías hacerlo mediante un botón el cual debería ejecutar una consulta parecida a la siguiente.
Docmd.RunSql " Update Productos INER JOIN Facturacion on productos.producto=facturacion.producto
set productos.unidades = productos.unidades - facturacion.catidad
where factuacion.idFacturacion =" & Me.id_facturacion
donde idFacturacion es el la llave que supongo tiene esa tabla y que esta en tu formulario facturacion
espero que te sirva de ayuda...
Gracias por la ayuda se me olvidaba decir que tengo dos tablas una de facturación(fecha, código facturación, cliente) y detalle facturación (cantidad, código producto, código gacturacion)como subformulario en el formulario de facturación donde se puedn escoger varios productos. Código facturación llave principal de la tabla facturación.
Espero que me aclares un poco lo de la actualización y lo del campo porque quede confundida y no pude implementarlo nom se como.
Gracias porque me pareció muy buena tu idea.
Sobre el campo:
Tu tabla detalle facturación debería ser (cantidad, código producto, código gacturacion, Unidades)
Donde Unidades contendrá las unidades que existen al momento de emitir el factura
que la facturación este en dos tablas no es ningún problema (es más, creo que es la forma correcta de hacerlo) y la consulta de actualización funcionaria de la misma manera.
Para implementarlo, me imagino que tienes un formulario con un sub formulario conde ingresas los productos y las cantidades por cada porducto; también tendrás, o tendrías que tener un botón el cual finalize la factura, para que los datos ya no se puedan modificar, en este botón, al finalizar la factura, (digamos antes de imprimirla), adicionas la instrucción que escribí
Docmd.RunSql " Update Productos INER JOIN Detalle_Facturacion on productos.producto=Detalle_facturacion.producto
set productos.unidades = productos.unidades - Detalle_facturacion.cantidad
where Detalle_factuacion.codigo =" & Me.codigo
Como en la tabla detalle de facturación tienes el producto se relacionara por esta llave con la tabla productos y las uniadades solo serán modificadas de los productos que estén en la factura, que selecciona mediante el Me. Código, que contiene el numero de factura que se esta emitiendo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas