Al hacer cambios de precios cambia mi historial

Tengo una base de datos donde hago cotizaciones, el problema es que cuando cambian mis precios cada año, todo mi historial cambia...

Esto se debe a que a la hora de hacer la captura en un Formulario, solo se escribe la cantidad y el Id del servicio, y en automático me salen los datos del servicio y su precio, además de la multiplicación por el total (cantidad por precio). Todo esto por una consulta donde al poner el Id en el formulario, me trae todos los datos y me da el total.

Esto es por razones practicas porque los empleados tienen mucha gente y este método es superveloz. (Solo capturan 2 datos)

No sé como hacer que los datos de los precios no cambien... Y que los empleados sigan capturando solo 2 campos...

Tengo estas tablas entre otras:

Servicios -----Campos: (IdServicios) (Servicio) (Clasificación) (Categoría) (Precio)

EncabezadoNota---- Campos: (IdNota) (Fecha) (Cliente)

BoxEncabezado-----Campos: (IdBox) (IdNota) (Cantidad) (IdServicios)

Todo sucede en la tabla BoxEncabezado... Es un problema, porfavoooooor...

Si tengo que cambiar la estructura... Lo hago pero el chiste es que en un futuro no tenga más problemas...

1 respuesta

Respuesta
3

Lo que te pasa es el típico ejemplo de funcionamiento de una base de datos que va "en contra" de la teoría de las relaciones (si un campo Y ya está en una tabla A, y A está relacionada con la tabla B, en B no debe ir el campo Y)

En tu caso, para mantener un histórico, tienes dos opciones:

1º/ Añadir a tu tabla BoxEncabezado un campo Precio, y programar el evento "Después de actualizar" del campo IdServicios del formulario para que te traiga el precio actual del servicio (con DLookUp() )

2º/ Crear una tabla Historico con los campos que quieras guardar como histórico, y volcar todos los datos de tu tabla/s a esa tabla Historico, borrar los datos de BoxEncabezado y demás tablas que hayas traspasado, y luego actualizar el precio en Servicios.

Yo optaría por la primera solución.

Un saludo


¡Gracias! Me ayudó mucho... 

Super bien!!!!

Agregué un campo en la Tabla BoxEncabezado con el nombre de precio, y use la  DLookUp() en el campo IdProducto.... 

Ya nada mas investigué como usar esta función y salió excelente... me guarda los cambios si alterar el histórico

A los que no sepan nada... la sintaxis de  DLookUp() está bien muy bien explicada paso a paso en un video en:

 http://aulaclick-access.blogspot.com/2011/12/como-usar-dlookup-de-access-en-un-caso.html 

Estoy Feliz, ahora a cambiar la estructura, lo malo es que los datos ya capturados sin esta función si sufren los cambios y se altera el histórico... pero de aquí en adelante ya va a funcionar.

Hay alguna forma de salvar los datos capturados anteriormente?

Estoy Feliz, ahora a cambiar la estructura, lo malo es que los datos ya capturados sin esta función si sufren los cambios y se altera el histórico... pero de aquí en adelante ya va a funcionar.

Hay alguna forma de salvar los datos capturados anteriormente?

Y por ultimo... cuando te refieres a:

( Va "en contra" de la teoría de las relaciones)

¿Tienes alguna liga o página que explique los principios o reglas de la teoría de la relaciones para el buen funcionamiento de una base de datos?

http://siliconproject.com.ar/neckkito/index.php/algunas-cosillas-teoricas/cosas-que-es-bueno-saber 

https://es.wikipedia.org/wiki/Normalización_de_bases_de_datos 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas