Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Campo multievaludado access 2003???

Estas en el tema de Campo multievaludado access 2003??? en el foro de Bases de Datos General en Foros del Web. Hola, tengo una tabla alumnos y otra tabla cursos, por cada registro de alumno, se señala al curso mediante el campo alumno.idcurso, el caso es ...
  #1 (permalink)  
Antiguo 28/02/2010, 07:58
 
Fecha de Ingreso: octubre-2008
Mensajes: 64
Antigüedad: 15 años, 6 meses
Puntos: 0
Campo multievaludado access 2003???

Hola, tengo una tabla alumnos y otra tabla cursos, por cada registro de alumno, se señala al curso mediante el campo alumno.idcurso, el caso es que un alumno puede hacer varios cursos, y no quisiera duplicar la informacion del alumno por cada curso que realice, tiene access un campo multievaluado? como podria luego hacer una consulta por uno de esos cursos?

Gracias
  #2 (permalink)  
Antiguo 28/02/2010, 08:32
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Campo multievaludado access 2003???

Un campo multivaluado es una violación al modelo referencial, y no hay motor DBMS que te lo soporte. Al menos que yo conozca.
Lo que corresponde es una tabla Alumno_Cursos donde se relacione en qué cursos está inscripto el alumno. AL menos esa es la solución correcta, ya que es una relación N:N y, y por definición, toda relación N:N genera una tabla.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 28/02/2010, 09:08
 
Fecha de Ingreso: octubre-2008
Mensajes: 64
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Campo multievaludado access 2003???

Hola, antes de nada muchas gracias por la rápida respuesta. Ahora me surge otra duda, para dar de alta a un alumno en un determinado curso la interfaz sera un formulario con los datos del curso, y un subformulario con los alumnos de ese curso, para dar de alta a un alumno rellenaré los datos del mismo en este formulario, el caso es que quiero que al poner el dni de un alumno, si este ya esta en la tabla alumnos, se rellenen todos los datos. aunque solo sea ha modo informativo, ya que los datos del alumno ya los tengo guardados y solo tendria ke guardar su id en la tabla alumnos_curso

Gracias.
  #4 (permalink)  
Antiguo 28/02/2010, 09:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Campo multievaludado access 2003???

Esa es la idea, más o menos.
Cuando creas esa tabla defines su clave primaria como de doble campo (como id_alumno, id_curso). Eventualmente puede requerir otro campo más, si el alumno repite curso.
El proceso debe hacer qe cuando selecciones al alumno, leas sus datos y lso pongas, y cuando selecciones el curso, igual.
Debe ser solamente al grabar la inscripción, que se rellenen los campos de la tabla que los relaciona.


¿Se comprende la idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 28/02/2010, 11:12
 
Fecha de Ingreso: octubre-2008
Mensajes: 64
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Campo multievaludado access 2003???

Hola gnzsoloyo, muchas gracias. Ya tengo creada la tabla con la clave primaria de los dos campos.

Ahora la interfaz que tengo es la siguiente: (voy a poner un ejemplo)

formulario con:

Nombre del curso: ........

Subformulario con:

Nombre alumno1
Nombre alumno2,....

Los nombres de alumnos de cada curso los muestra bien, incluso si quiero añadir un alumno al curso que se esta mostrando lo inserta bien tanto en la tabla alumnos, como en la alumnos_curso, el problema ahora es el siguiente:

Yo ya tengo el alumno Juan en la tabla alumnos, y esta matriculado en el curso1, pero tambien quiero matricularlo en el curso2, al matricularlo en el curso2, me haria un duplicado en la tabla alumnos, solo cambiando la id_alumno, yo quiero que no ingrese ningun registro en la tabla alumnos (puesto que ya tengo sus datos) pero que si me ingrese un registro en la tabla alumno_curso. No se me ocurre como hacerlo.

En este ejemplo estoy utilizando para que no se repita en la tabla alumnos el nombre, pero en realidad sería el dni... La PK es id_alumno...

No se si me he explicado.

Saludos
  #6 (permalink)  
Antiguo 28/02/2010, 12:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Campo multievaludado access 2003???

Cita:
Yo ya tengo el alumno Juan en la tabla alumnos, y esta matriculado en el curso1, pero tambien quiero matricularlo en el curso2, al matricularlo en el curso2, me haria un duplicado en la tabla alumnos, solo cambiando la id_alumno, yo quiero que no ingrese ningun registro en la tabla alumnos (puesto que ya tengo sus datos) pero que si me ingrese un registro en la tabla alumno_curso. No se me ocurre como hacerlo.
¿Y por qué estás dando de alta nuevamente en la tabla Alumnos, si lo que tienes que hacer es tomar los datos pero sólo dar de alta en la tabla Alumnos_Cursos?
Estas haciendo algo incorrectamente:
- En el contexto de inscripciones a cursos, las tablas Alumno y Curso son fijas. No se modifican para nada porque solamente se las consulta.
- En un proceso en que se da de alta un alumno y luego se lo inscribe en un curso, la acción de alta del alumno debe ser independiente del alta en la cursada. Lo que sí se necesita es que el alumno y el curso existan antes de dar de alta la inscripción. Pero son procesos independientes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 28/02/2010, 12:17
 
Fecha de Ingreso: octubre-2008
Mensajes: 64
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Campo multievaludado access 2003???

Mi intención era, dar de alta a un nuevo alumno, en el mismo formulario en el que se muestra los alumnos inscritos en un curso, es decir estoy mostrando el curso1 con su lista de alumnos, pues dar de alta un alumno NUEVO que no estuviera previamente en la tabla alumnos. ¿me explico?

O sea, no tener un apartado "alta alumno" sino que sobre la marcha cuando visualizo un curso poder agregar un alumno nuevo, y en el caso de que ese alumno ya este en la tabla alumnos por estar cursando otro curso, que se me rellenen todos los datos automaticamente, es un poco lioso la verdad.

Lo que le entiendo yo a usted es: no poder inscribir un alumno a un curso, sin antes haberlo registrado como alumno en general, sin ningun curso asociado, y luego ya en la vista del curso, en el subformulario de los alumnos tener un combo box, con todos los alumnos GENERALES y elegir el que quiero matricular a dicho curso...

Le he entendido bien?

Si es así podría ser una opción que no había considerado.

Muchas gracias por la colaboración.
  #8 (permalink)  
Antiguo 28/02/2010, 12:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Campo multievaludado access 2003???

Cita:
O sea, no tener un apartado "alta alumno" sino que sobre la marcha cuando visualizo un curso poder agregar un alumno nuevo, y en el caso de que ese alumno ya este en la tabla alumnos por estar cursando otro curso, que se me rellenen todos los datos automaticamente, es un poco lioso la verdad.

Lo que le entiendo yo a usted es: no poder inscribir un alumno a un curso, sin antes haberlo registrado como alumno en general, sin ningun curso asociado, y luego ya en la vista del curso, en el subformulario de los alumnos tener un combo box, con todos los alumnos GENERALES y elegir el que quiero matricular a dicho curso...
Por allí anda la idea.
El tema es no confundir formularios con procesos. Un formulario es simplemente una interfase de usuario para realizar uno o más procesos, los cuales tienen lugar en una capa distinta.
La idea es que cuando se ingrese en ese formulario el ID del alumno, se realice una búsqueda par tomar los datos restantes, si existe, o ingresarlos si no.
Pero lo que es importante es que al momento de registrar la inscripción deben separarse los datos en dos: Alumno e Inscripción, y lo primero que se debe hacer es establecer si hay que dar de alta o no al alumno.
Si el alumno fue encontrado en búsqueda, no se da de alta (algún flag puede usarse en este sentido), si no, se da de alta y recién entonces se da de alta la inscripción.
Todo esto debe hacerse por programación, indefectiblemente, porque es la única forma de separar los hilos de ambos procesos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 28/02/2010, 17:12
 
Fecha de Ingreso: octubre-2008
Mensajes: 64
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Campo multievaludado access 2003???

Gracias por su ayuda, en el caso de que para inscribir un alumno en un curso, sea estrictamente necesario dar de alta un alumno en la tabla alumnos, no haría falta utilizar programación, no?

Me explico, doy de alta un alumno ingresando un registro en la tabla de alumnos, y luego me voy al curso que quiera, y en el subformulario de alumnos, podría poner un combobox, donde aparecen todos los ids de los alumnos seleccionando el que quiera que quede matriculado.

Saludos

Etiquetas: access, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:16.