NECKKITO Access congelar datos tablas

Nuevamente recurro a tu ayuda, que por cierto te agradezco tu desinteresada colaboración, con la que nos ayudas a todos!

Tengo una base de datos creada para mi escuela. Lo que no sé como hacer es lo siguiente.

Ejemplo: La cuota de CANTO, sale $100.- Los datos los tengo de una tabla alumnos, una tabla cursos donde dice cuanto sale, y registro el pago en una tabla llamada registro de pagos.

Mi problema es cuando a mitad de año, aumenta la cuota, por ejemplo de $100 a $150.-

Si modifico el valor del curso CANTO en la tabla cursos, automaticamente todos los que abonaron durante el año el curso de CANTO a $100.- El sistema me muestra que deben todos $50.-

Mi pregunta es, hay alguna forma de bloquear, o congelar los registros que ya están guardados, cosa que si modifico el valor del curso, ¿no se me modifique en un registro de pago viejo?

2 respuestas

Respuesta
2

En TodoExpertos hay muy buenos expertos que pueden darte una respuesta a tu pregunta, quizá mejor que la que yo te pueda dar, y es una lástima que no los aproveches.
Respecto de tu problema, si necesitas tener valores históricos, no te queda más remedio que almacenarlos en una tabla. Lo más lógico sería tener el valor del curso en una tabla origen (perdona, pero no me acabo de aclarar cuál sería esa tabla con tu explicación) y realizar las actualizaciones de precios en dicha tabla.

Por otra parte, en tu tabla de trabajo, cuando seleccionas el valor de ese curso pues te llevas ese valor a un campo X, que sería con el que compararías el pago. De esta manera ese dato te quedaría como histórico y, dado que comparas el pago con el mismo -el campo X-, las actualizaciones de los importes de los cursos no afectarían a la cantidad pendiente.

Respuesta
2

Con el permiso de @neckkito, te voy respondiendo.

Por lo que comentas, no tienes en tu tabla de pagos un campo en el que recoges el importe total del curso o cursos que deben tus alumnos, y calculas lo que te deben por medio de consultas.

Es un caso similar a lo que comenta Neckkito en este artículo (pág 6-7 y 11), o yo mismo en este otro (pág 6 para el precio de los productos en el detalle de la factura)

Conclusión, necesitas almacenar en un campos de tu tabla pagos el importe del curso en el momento de realizar la matrícula, para que de esta forma, aunque lo cambies en la tabla cursos, se te mantenga en los alumnos ya matriculados.

Muchas gracias por responder! Voy a probar qué me sale y te aviso!!

Porque cuando doy de alta un alumno y selecciono el curso, automáticamente me completa cuanto es el valor del curso, o sea que trae los datos desde la tabla CURSOS.

Entonces cuando aumento la cuota, me cambia todo el histórico de pagos! Eso no se cómo resolverlo!

¿Puedes poner aquí la estructura de tus tablas, y el método que usas para completar el valor del curso?

Si!

Tablas: Alumnos, Cursos, Registro de Pagos

Consultas: Alumnos, Registro de Cuotas

Al dar de alta un curso con su importe, completo esto:

Luego doy de alta un alumno:

Aca, al asignarle el curso que toma, automaticamente me trae de la tabla cursos, el valor que deberá abonar este alumno.

El tema es así. Tengo un formulario de Pago de Cuotas. En él, selecciono el alumno que vino a pagar, y automáticamente me completa a qué curso viene y cuanto sale ese curso (saca los datos de la tabla cursos)

Hasta acá todo bien. El curso sale $100.- y el alumno pagó $100, no debe nada.

Cuando yo cambio el valor del curso porque aumento (estamos en argentina ajajja) y quiero venir a ver este mismo registro porque el alumno me pide una copia del recibo, me encuentro con que me debe dinero, me cambia también el valor en los registros viejos, por lo tanto me dice que el alumno debe.

Mi pregunta es como hacer para que esto no modifique mis registro viejos!

¿Qué campos tiene la tabla "registro de pagos"? ¿El formulario "Pago de cuotas" lo haces directamente sobre la tabla "registro de pagos" o sobre una consulta?

No me cuadra que se te actualicen los datos anteriores si lo haces sobre la tabla directamente.

Quieres que te envíe el archivo?

Pues si no te importa... igual es lo más rápido. No hace falta que tenga datos "reales". Puedes subirlo a dropbox, skydrive... o web tipo filebig.net y pones aquí el enlace de descarga.

http://we.tl/TWwm9o4uVL 

USUARIO: ADMINISTRADOR

CLAVE: glams2011

El problema que tienes (aparte de un mal planteamiento de la BD) es el que te comentaba: estás trabajando directamente sobre una consulta y con los datos de la tabla cursos.

Aunque en tu tabla alumnos tienes un campo "importe total", no lo estás usando, y es precisamente ahí donde tienes que guardar el importe del curso al matricular a un alumno.

Luego, en tu consulta "Alumnos activos", tendrás que coger ese campo y no el del importe de la tabla cursos. En el enlace que te adjunté en la primera respuesta, tienes explicado cómo guardar en un campo un valor dependiente de otro.

Lo ideal sería que tuvieras esta estructura:

.- Una tabla Alumnos, únicamente con los datos de los alumnos

.- Una tabla Cursos como la que tienes, con los datos de los cursos

.-Una tabla Matriculas, en la que relacionas cada alumno con los cursos que elija, y en esta tabla tendrás un campo "Importe" en el que guardarás el importe del curso o la suma de los importes de los cursos

.- Una tabla Pagos, relaciona con Matriculas, para ir registrando los distintos pagos sobre esa matricula

Y a partir de esta estructura básica, ya montarías tu sistema, añadiéndole las otras tablas que necesites.

Además, te recomendaría que mirases (y aplicases, al menos en los nombres de los campos) lo que comenta Neckkito en su web, en el apartado "Teoria/Practica-> Cosas que es bueno saber"

Muchas gracias! Si se que está hecho muy casero! Pero es lo que me fue funcionando! Te agradezco mucho tu respuesta! Lo voy a probar y te aviso!!

Ya me estoy volviendo loco. A cada alumno en el sistema que te pase puedo asignarle más de un curso, automáticamente en el campo Importe total a abonar, me da la suma de todos los cursos que está tomando, pero no me sale como tu me lo indicas! Help!

Volvemos a lo mismo, otra vez: el campo importe total es un campo calculado en la propia consulta (algo así tienes: Importe Total a abonar: [Importe curso 1] + [Importe curso 2]+[Importe curso 3]), pero no se te guarda en ninguna tabla, por eso, al cambiar el importe en la tabla curso, se te modifica en esa consulta y por tanto en el formulario.

Buenas tardes.

He tratado de hacer cambios en el sistema, en base a lo que me indicaste anteriormente...

Lo ideal sería que tuvieras esta estructura:

.- una tabla Alumnos, únicamente con los datos de los alumnos

.- una tabla Cursos como la que tienes, con los datos de los cursos

.-una tabla Matriculas, en la que relacionas cada alumno con los cursos que elija, y en esta tabla tendrás un campo "Importe" en el que guardarás el importe del curso o la suma de los importes de los cursos

.- una tabla Pagos, relaciona con Matriculas, para ir registrando los distintos pagos sobre esa matricula

Me encuentro con el siguiente problema. Yo tengo cargado, en este ejemplo, dos alumnos. Un alumno toma dos cursos, el otro uno solo. Lo que necesito es generar una tabla o consulta, en donde yo pueda registrar los pagos mensuales de esos alumnos. Necesito seleccionar el nombre del alumno, y que automaticamente me diga cuanto debe pagar. Por el alumno que toma un curso no es problema, pero el que toma más de uno? cómo hago para que me aparezca la suma de los mismos?

Según como hayas planteado la tabla de matrículas tendrás unas opciones u otras.

Por ejemplo, si en esa tabla matrículas haces un registro para cada cursode cada alumno, puedes obtener el total con una consulta de datos agrupados. En este caso deberías tener un campo que te recoja el año académico o año de matrícula... para que no te sume matrícula de otros años/cursos

Si en la tabla matrículas tienes un único registro por alumno, con distintos campos para los distintos cursos (curso1, curso2...), puedes hacer una simple consulta de selección y añadir un campo calculado Total que sea la suma del importe de los distintos cursos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas