Access - Relacionar un campo de una tabla con un campo de otras 2 tablas

 
Vista:
sin imagen de perfil
Val: 7
Ha disminuido su posición en 9 puestos en Access (en relación al último mes)
Gráfica de Access

Relacionar un campo de una tabla con un campo de otras 2 tablas

Publicado por Angel (15 intervenciones) el 29/01/2015 20:42:34
Hola!

Después de pasar horas buscando respuesta por la web, no he tenido más remedio que pronunciar mi duda por aquí, a ver si me podéis ayudar.

Estoy creando una base con 3 tablas (en principio). Una tabla contiene los datos de socios, otra tabla contiene datos de personas ajenas a la asociación y la otra tabla la he creado para hacer una estadística de la gente que asiste a los actos. Las tablas de socios y personas ajenas contienen un campo autonumérico como clave principal.

Mi intención es relacionar un campo de la tabla de la estadística con las otras 2 tablas para poder elegir sólo el nombre de las personas que asistan a los actos y, conforme se vayan incluyendo en la tabla, los elimine del combobox para no poder repetirlos.

Si no me he explicado bien, solicitadme cualquier aclaración que necesitéis.

Un saludo y muchas gracias por adelantado, esta web es un santuario!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 7
Ha disminuido su posición en 9 puestos en Access (en relación al último mes)
Gráfica de Access

Relacionar un campo de una tabla con un campo de otras 2 tablas

Publicado por Angel (15 intervenciones) el 29/01/2015 21:14:04
Perdón, en la tabla dedicada a la estadística aparecerían los campos: "Fecha", "Asistente1", "Asistente2", "Asistente3", etc...

Lo que pretendo es, mediante formulario, disponer un campo en el que poner la fecha del acto y, un combobox por cada "AsistenteX" que me facilite los registros del campo "Nombre" de las otras dos tablas y que, al seleccionar uno de esos registros, no me permita seleccionarlo en los siguientes "AsistenteX" o, mejor aún, que no me aparezca en los siguientes combobox.

La idea es que, cada vez que rellene ese formulario, me añada una fila a la tabla estadística con la fecha y los asistentes.

Lo se, es un lio de narices.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Relacionar un campo de una tabla con un campo de otras 2 tablas

Publicado por Jesús Manuel (375 intervenciones) el 30/01/2015 10:12:09
Creo que tienes un problema de planteamiento en tu BD. Piensa que si tienes 50 socios y 50 personas ajenas, tendrás que incluir 100 campos "asistenteX" en la tabla de estadísticas, como previsión de si todos asisten o no. Y si aumenta el número de socios o personas ajenas (PA), tendrás que modificar tu tabla estadísticas.


Yo lo plantearía de otra forma. Una tabla para ASITENTES ( ID, nombre, apellidos, dirección, ..) otra para ACTOS (ID, fecha convocatoria, fecha reunión, lugar,...) y una tabla para relacionar los ACTOS con los ASISTENTES, PARTICIPACION, en el que incluir los ID de estas dos tablas como clave (de esta forma ya no podrás indicar a un mismo asistente 2 veces en un mismo acto)

Por otra parte, una persona ajena, puede ser socio en el futuro??
En caso negativo y si no te lo planteas, en la tabla ASISTENTES pon un campo ESTADO con 2 valores posibles, socio o PA.
En caso positivo, tendría una nueva tabla, ESTADO (ID, id_asistente, fecha inicio, fecha fin, tipo (socio o PA),..) en la que indicas en cada período temporal que tipo de asistencia.

Ahora, con un formulario ASISTENTES que tenga como subformulario ESTADO y otro formulario ACTOS, que tenga como subformulario PARTICIPACION, ya podrías meter los datos al sistema y las estadísticas las arreglarías con consultas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha disminuido su posición en 9 puestos en Access (en relación al último mes)
Gráfica de Access

Relacionar un campo de una tabla con un campo de otras 2 tablas

Publicado por Angel (15 intervenciones) el 30/01/2015 12:13:20
Muchas gracias!! La idea la he pillado, lo voy a hacer así pero, he hecho una tabla nueva, "Asistentes", en la que tengo un campo ID como clave principal y un campo Asistente, el cual tiene su origen de datos en una consulta de union que hice entre los campos nombre de las tablas Socios y Ajenos.

Como bien decías, puede que entren nuevos socios o ajenos en juego por lo que me gustaría hacer algo que, al introducir un nuevo socio o ajeno en su tabla respectiva, la tabla ASISTENTES se actualice sola o con algún tipo de consulta.

Si lo deseas, te puedo enviar el archivo por email.

MUCHAS GRACIAS!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Relacionar un campo de una tabla con un campo de otras 2 tablas

Publicado por Jesús Manuel (375 intervenciones) el 30/01/2015 12:33:23
No era eso lo que decía exactamente, para mi la tabla ASITENTES es la unión de tus dos tablas, y luego solo tienes que diferenciar si es socio o PA con un campo, que puede estar en la propia tabla ASISTENTES o en otra tabla para controlas en que época era PA y en que época era socio.

De esta forma, si llega una persona nueva, sea socio o PA, solo tienes que cubrir esos datos en la tabla ASISTENTES, y te olvidas de las dos tablas que tenías antes y de tener que actualizar una tercera tabla.

Si ya tienes datos en tus tablas SOCIOS y PA, tendrías que dedicar algún tiempo para adaptar los datos al modelo que te he planteado, si decides usarlo. Tal y como lo indicabas, entendí que estabas en fase de creación y pruebas con la BD y que aún no la tenías operativa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha disminuido su posición en 9 puestos en Access (en relación al último mes)
Gráfica de Access

Relacionar un campo de una tabla con un campo de otras 2 tablas

Publicado por Angel (15 intervenciones) el 30/01/2015 13:25:07
Ya he modificado la BD dejandola así:

- Tabla PARTICIPANTES (Id, Nombre, Apellidos y resto de datos, incluido el Socio/Ajeno mediante Si/No)
- Tabla EVENTOS (Id, Fecha, Evento y Descripción)

Ahora bien, no entiendo exactamente como tengo que relacionar los Id de estas dos tablas en la tabla PARTICIPACIÓN.

Adaptando la BD a tu planteamiento, ya que me parece lo mejor, ¿cómo puedo hacer un Formulario que me permita rellenar los campos de la tabla EVENTOS e indicar al mismo tiempo quién ha asistido? De esta forma, entiendo que en la tabla PARTICIPACIÓN se crearía un registro en el que apareciera la fecha del evento y los asistentes al mismo.

Gracias por tu paciencia!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Relacionar un campo de una tabla con un campo de otras 2 tablas

Publicado por Jesús Manuel (375 intervenciones) el 30/01/2015 14:34:56
Los pasos que te voy a indicar son básicos, por lo que creo que sería mejor que el orden de los campos en la tabla PARTICIPANTES fuese: ID, Apellidos, Nombre,...


Creas la tabla PARTICIPACIÓN con dos campos de tipo númerico (ya que entiendo que los ID de PARTICIPANTES y EVENTOS son tipo autonúmerico): PARTICIPACION (ID_Eventos, ID_Participantes)

Indicas ambos campos como clave ( con esto te saltara un error si intentas guardar un voluntario en un evento 2 veces)


Para facilitar luego el seleccionar los participantes, sería interesante que en el campo ID_Participantes, en al pestaña Búsqueda indicar:
-Origen de Control: Cuadro combinado
-Tipo origen de la fila: Tabla/Consulta
- Origen de la fila: la tabla Participantes

* y ahora, con la tabla PARTICIPANTES con el orden de campos ID, Apellidos, Nombre,...

- Columnas dependientes: 1 (el campo que realmente se guarda es el ID para la relación)
- Número de columnas: 3 (para poder seleccionar por apellido y nombre)





En ventana de relaciones (dentro de la pestaña Herramientas de base de datos en Access 2010) añades las 3 tablas y haces una relación desde el campo ID de la tabla PARTICIPANTES al campo ID_Participantes de la tabla PARTICIPACION ( yo también seleciono los 3 check box para la relación). Verás que se ha creado una relación de 1 a infinito.

La segunda relación sería del campo ID de la tabla EVENTOS al campo ID_Evento de la tabla PARTICIPACION, de nuevo los 3 checkbox y la relación creada de 1 a infinito.


Ahora te vas al Asitente para formularios, insertas todos los campos de la tabla EVENTOS y luego todos los de la tabla PARTICIPACION. Indicas que quieres ver los datos por EVENTOS y con subformulario. Subformulario como hoja de datos y aceptas los nombres o los pones a tu gusto antes de guardar.


Vete a la vista diseño del subformulario, selecionar el campo ID_Participantes, Propiedades, Formato, Ancho de columnas: 0cm;3cm;3cm ( con esto "ocultas" el ID y das un tamaño para ver el apellido y el nombre. El campo que realmente se guardara en la tabla será el ID aunque no se vea y el tamaño de los campo puedes variarlo en función de como diseñes el formulario). Este punto tiene relación con lo que te había indicado antes sobre facilitar la selección de los participantes.


Creas otro formulario con los datos de la tabla PARTICIPANTES.


Cubre algún dato en participantes y cuando cubras un evento veras que en el subformulario podrás seleccionar de la lista los nombres de los participantes que ya tengas en la base de datos, pones tantos registros como sea necesario en el subformulario y ya esta. Para cada evento tendrás en el subformulario tantos registros indicando el participante como sea necesario. Ahora para saber cuantos son de tipo socio o PA puedes hacerlo por código VBA, y tenerlo ya en el formulario de eventos, o con una consulta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha disminuido su posición en 9 puestos en Access (en relación al último mes)
Gráfica de Access

Relacionar un campo de una tabla con un campo de otras 2 tablas

Publicado por Angel (15 intervenciones) el 30/01/2015 16:39:06
Un millón de gracias!!! Ya lo tengo hecho.

Ahora voy a intentar buscar por fecha y evento en el formulario, a ver si consigo hacerlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha disminuido su posición en 9 puestos en Access (en relación al último mes)
Gráfica de Access

Relacionar un campo de una tabla con un campo de otras 2 tablas

Publicado por Angel (15 intervenciones) el 01/03/2015 10:27:10
Hola de nuevo, he estado ocupado con otras cosas y no he podido seguir con la base. Ahora me he vuelto a poner y he avanzado bastante, aunque me he vuelto a atascar con un informe, me explico:

Pretendo sacar en un Informe la estadística de participación de un jugador. Para ello, la base de datos tomará como referencia el registro que esté activo en el formulario JUGADORES. Hasta ahí, bien, consigo mediante una consulta que que la base me devuelva el código de los eventos en los que ha participado el jugador seleccionado.

Mi problema viene cuando intento que en esa misma consulta me saque el detalle de cada evento (fecha, descripción, incidencias). Al ejecutar la consulta me dice: "No coincide el tipo en la expresión".

El código SQL es el siguiente:

SELECT Participación.Cod_Eventos, Participación.Cod_Jugadores, Eventos.Fecha, Eventos.Evento, Eventos.Descripción, Eventos.Incidencias, Eventos.Otros
FROM Eventos INNER JOIN Participación ON Eventos.Cod = Participación.Cod_Eventos
WHERE (((Participación.Cod_Jugadores)=[Formularios]![Jugadores]![BuscApodo]));

Adjunto un archivo con una captura de pantalla de la consulta, por si fuera de ayuda.

MUCHAS GRACIAS!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar