Formulario cómodo

Tengo un serio problema.
Estoy desarrollando una base de datos para gestionar las notas y las faltas de asistencia de los alumnos de un colegio.
Tengo definidas algunas tablas, pero con las que tengo el problema son las siguientes:
Alumnos(_Id, Nombre, ...)
Asignaturas(_Id, Nombre, ...)
Examenes(_Id, IdAsignatura, Fecha, Descripción, ...)
Notas(_IdExamen, _IdAlumno, Nota, ...)
Funciona perfectamente. No tengo mucha idea de normalización, pero creo que no está demasiado mal. El problema viene a la hora de introducir los datos de forma cómoda.
Mi idea es tener tres formularios anidados. En el principal quiero elegir la asignatura del examen del cual quiero introducir las notas. En el segundo quiero escoger o insertar el examen apropiado. Esto me funciona bien.
El problema está en el siguiente formulario. Quiero que me aparezca una lista de los campos (Alumnos. Nombre, apellido1, apellido2, Notas. Nota), pero que se vean TODOS los alumnos. No quiero ir rellenando nombres (para eso ya los tengo en una tabla) y luego notas.
Creo que se debe a que en la tabla notas no tengo todavía insertados los registros correspondientes a cada alumno para un examen determinado. ¿No podría hacer esto automáticamente? ¿Debería cambiar los tipos de relación? ¿Qué tipo de relaciones debería establecer?
Lo que quiero es que cada vez que introduzca la nota de un alumno se añada un nuevo registro a la tabla notas con el campo IdExámen correspondiente al examen que tengo seleccionado en el primer subformulario y con el campo IdAlumno del alumno al que corresponda la nota.
Intentaré explicarlo mejor:
1er formulario: Elijo asingatura.
2o formulario: Elijo examen.
3er formulario: Quiero tener una lista de los nombres de los alumnos e ir rellenando su nota.
Si no me he explicado con claridad (algo bastante probable), le ruego que me lo comunique e intentaré exponerlo mejor. Le agradecería que me diese una solución para este problema, a ser posible sin recurrir a VB.

3 Respuestas

Respuesta
1
En tu tipo de definición veo un problema tu eliges la asignatura pero tu no sabes de ninguna forma los alumnos que pertenecen a esa asignatura por lo que no puedes sacar un listado de los alumnos que unicamente tengan un examen o una asignatura concreta, de la forma que tu lo tienes solo puedes sacar todos los alumnos juntos.
Si es así como lo quieres haces una consulta que te muestre todos los alumnos y el campo nota (haces un consulta y haces un right join de alumnos) y luego tendrás que ir actualizando
No se si me explique bien pero yo que tu intentaría hacerlo de otra forma intentaría arreglar el diseño de las tablas
Respuesta
1
Tu consulta requiere de un pequeño análisis funcional, y el desarrollo puede extenderse tanto como el desarrollador estima conveniente.
No obstante, concretando la consulta, yo creo que la mejor solución es crear un único formulario input para alimentar de datos, y varios formularios para el mantenimiento de las tablas.
Formularios de mantenimiento:
Alumnos - asignaturas - exámenes - notas
Formulario Input:
-> Debes crear una tabla de movimientos, donde se insertaran los datos relativos al movimiento que quieres crear ( Examen, Asignatura, Alumno, Nota)
La clave primaria de esta tabla deben ser los tres campos que diferencian cada movimiento, es decir examen, asignatura y alumno. Ademas, yo crearía un campo autonumérico IdMov.
El formulario de input, no debe tener origen de datos, y debes crear tres objetos combo box, cuyo oringen de datos serán, respectivamente la tabla Exámenes, y la tabla Asignaturas.
En este formulario, debes insertar un subformulario, donde se mantienen los datos de la tabla de movimientos, y debes relacionar los dos formularios con los campos comunes (Examen, Asignatura), de forma que cuando selecciones en el formulario principal o cabecera, bien examen, o bien asignatura, se realice un requery sobre el subformulario, que te mostrará los alumnos que participan de ese examen, así como la asignatura que han tenido o van a tener.
En el subformulario podrás insertar, modificar, o buscar por los diferentes campos que le componen.
Los campos Examen, y Asignatura deben ser ocultos, ya que quedan definidos en la selección del formulario principal.
Me gustaría esquematizar más el ejemplo, pero aquí hasta ahora no encontrado la forma de insertar imágenes, así que lo que puedes hacer si te parece oportuno, es mirar en mis páginas web unos ejemplos que hay publicados, con este método de desarrollo (http://www.todoaccess.com).
Y si necesitas ampliar ayuda o información, puedes ponerte en contacto conmigo vía email y valoraremos el desarrollo completo de esta aplicación, si te parece oportuno.
Respuesta
1
Yo para representar claves foráneas (son aquellos campos que guardan una clave primaria de otra tabla como por ejemplo una clave foránea es el idAlumno en la tabla examen que apunta al idalumno de la tabla alumno. En realidad lo que quieres es recuperar el resto de datos del alumno guardando el mínimo de información en la tabla examen. ¿Se entiende?) Para estas representaciones se suelen utilizar listas de datos.
Ademas access ya te monta estas relaciones solas si te lo montas bien

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas