Un super problema

Para mi claro. ¿Por eso quiero preguntarles que hago?
Tengo una base de datos en access. Tengo una tabla productos con campos IDproducto y nombreproducto y tengo otra tabla detalles de factura con campos idfactura, IDproducto, cantidad y valor unitario. Luego cree un formulario detalles de factura con los campos Idfactura, Idproducto, nombre, cantidad y valor unitario.
La tabla productos inicialmente no tiene ningún registro por que me llevaría mucho tiempo hacerla y lo que yo quiero hacer es llenarla al llenar el formulario detalles de factura (osea al hacer las facturas). Y hasta hay voy bien. Pero el problema es que en un más o menos un mes que ya haya introducido una gran cantidad de productos, yo quiero organizar la tabla y cambieré los datos de idproducto y nombreproducto, y cuando haga eso quiero que los nuevos registros del formulario detalles de factura utilicen los nuevos datos pero no quiero que los registros anteriores del formulario detalles de factura sean modicados con los nuevos datos, sino que conserven los anteriores. ¿Cómo hago?

1 respuesta

Respuesta
1
Veamos. Si lo que pretendes, tal y como lo entiendo yo, es mantener los registros de una tabla relacionada por idproducto, y al cambiar ése indice e incluso el nombre del producto, utilizando además el mismo número de índice, es imposible, dependiendo de la relación establecida entre ambas tablas.(La relación hará que al consultar un idproducto, muestre todos los relacionados).
Por otra parte y más claramente, si lo que pretendes es actualizar los productos, sus precios, su nombre, etc., sin que los datos de una factura anterior se modifiquen, lo que "falta" es una tabla que haría de intermediaria entre las facturas y los productos.
Lógicamente si quieres sacar copia de una factura antigua te encontrarás que se ha modificado el montante de la misma, al ir actualizando los precios de los productos.
Desconozco como tienes establecidas las relaciones entre las tablas. Esta nueva tabla (en adelante Transacciones), debería contener los indices/claves principales de las otras dos, y estar relacionadas "uno & infinito". De esta forma todas las facturas volcarán sus datos en la tabla 'Transacciones'.
Si como te dije anteriormente, tienes una tabla productos, el índice de esta tabla tendrá que existir también como campo en la tabla Transacciones. Todas las operaciones de compra/venta irán a esta tabla qudando recogidos los precios que se facturaron, mientras que la actualización de precios se realizará siempre en la tabla productos.
Cuando busque la venta de un producto lo haré a través de la tabla transacciones y el dato mostrado de precio de venta del producto se referirá a la fecha en que se realizó la venta, aunque el producto haya aumentado o disminuido su precio.
OK... ¿crispeta?. No te 'crispes' si no es suficiente. Me escribes y lo intetamos arreglar. ¿OK?
¿Cómo me dices en tu respuesta en la primera parte quiero que me digas si lo podría hacer sin utilizar el mismo numero de indice, y como?
Y también quiero que me digas si en tu solución, entonces el origen de control del informe factura debe ser la tabla transacciones y no la tabla productos.
Efectivamente puedes asignar distinto número de índice a cada tabla, pero debes incluir el además para establecer la relación entre las dos, el numero de indice de la primera en la segunda, pero no como clave principal, sino como campo. Estableces la relación uno&infinito y ya esta.
En cuanto al informe deberá constar de los campos que necesites. Lógicamente si en la tabla que denominamos transacciones se encuentra el origen de los datos necesarios para el informe, deberás utilizar esta tabla, aunque como ya sabrás, puedes utilizar más de una.
Desde luego en el caso de una factura debemos vigilar que tan sólo recoja el nombre del producto y otros datos, pero nunca el precio del producto, ya que este debe quedar recogido en la tabla transacciones (por aquello de la actualización de precios). Los datos generales del producto podremos verlos precisamente por la relación existente entre las dos tablas a través del indice del producto.
A tu entera disposición. ¿OK?
Gracias, pero la verdad es que estoy aterrada de que access no tenga una opción general para guardar datos históricos, por que la verdad tengo este problema con muchos campos de mi base de datos. De todas maneras tu respuesta me sirve mucho para no perder más el tiempo y te agradezco nuevamente toda tu atención.
Chao...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas