Relacionar un campo de una tabla con varios de otra tabla en Access

Tengo una base de datos en la que hay una tabla principal, con información sobre proyectos.

Cada uno de los proyectos puede tener un código, dos o incluso tres, de los códigos incluidos en una lista.

Por lo tanto, en la tabla "proyectos" tenemos tres campos "codigo1", "codigo2" y "codigo3".

Luego hay otra tabla "códigos" con un campo "código" que quiero relacionar con los tres campos anteriores, ya que todos los códigos posibles se encuentran ese campo.

El problema viene al querer hacer esa relación entre un campo de una tabla ("código") y tres campos de otra ("código 1", "codigo2", codigo3"). No consigo hacerlo y que funcione.

¿Alguien tiene alguna idea?

Respuesta
2

Sara, me tienes que perdonar, pero la primera pregunta que me surge es ¿Para qué quieres relacionarlas? La verdad, no le veo sentido. Verás, si tengo una tabla Proyectos

Y una tabla Codigos

Con la tabla Proyectos hago un formulario( da igual único o continuo), donde cambio los cuadros de texto por combinados. Al escribir un proyecto y desplegar el combinado Codigo1, me muestra todos los códigos

Selecciono el CCCC. En el combinado Codigo2, ya no me aparece ese valor, no es cosa de reptir el código)

Ahora voy a elegir el B y cuando despliego el Codigo3, ya no aparecen ni CCCC ni BBBB

Con lo cual el registro me quedaría, en caso de que se llenaran todos

A los combinados no les doy origen de la fila. En el evento Al recibir el enfoque del combinado Codigo1 le tengo puesto

codigo1.rowsource="select codigo from codigos"

En el evento Al recibir el enfoque del combinado Codigo2

Codigo2.RowSource = "select codigo from codigos where codigo<>'" & Me.Codigo1 & "'"

y en el mismo evento del combinado Codigo3

Codigo3.RowSource = "select codigo from codigos where codigo<>'" & Me.Codigo1 & "' and codigo<>'" & Me.Codigo2 & "'"

Y te puedo garantizar que las tablas no están relacionadas.

Te pongo un ejemplo, un poco burdo sí, pero creo que aclara las relaciones. Tu puedes coger un taxi de la marca Mercedes, pero no tienes ninguna relación con el taxista. Cuando llegas, le pagas y adiós muy buenas. Como tampoco tienes ninguna relación con la casa Mercedes, simplemente la "usas". Por el contrario, si fueras a ser concesionario de vehículos Mercedes, entonces sí que tendrías relación con la casa Mercedes, mientras no.

Muchas gracias por tu respuesta tan completa. Tienes toda la razón, no tenía ninguna relación con el taxista, jaja. Me obcequé con hacer la relación cuando no me hacía falta.

Un saludo

1 respuesta más de otro experto

Respuesta
1

Entiendo que la tabla códigos tiene el campo idcodigo y codigo, por esto necesita relacionar el campo idcodigo de la tabla proyectos con ésta, claro que tiene sentido. Preparé este ejemplo:

TABLAS

FORMULARIO PROYECTOS

NOTA: Faltaría validar que no se repitan los códigos en cada proyecto.

CONSULTAS

Hago una consulta por cada código relacionándolo con la tabla tblcodigos.

Consulta para el código 1

Observe la relación del idcodigo de la tabla tblcodigos con codigo1 de la tabla tblproyectos

Consulta para el código 2

Observe la relación del idcodigo de la tabla tblcodigos con codigo2 de la tabla tblproyectos

Consulta para el código 3

Observe la relación del idcodigo de la tabla tblcodigos con codigo3 de la tabla tblproyectos

Consulta con base en las 3 consultas para el resultado final

Observe que le he colocado un "Alias" a cada campo codigo para diferenciarlo.

RESULTADO FINAL DE LA CONSULTA

Todo esto también se puede hacer mediante SQL pero creo que utilizando el diseñador de consultas de Access le queda más didáctico. Si quiere el ejemplo lo puede solicitar a [email protected], favor en el asunto hacer referencia a la consulta.

Muchas gracias por tu respuesta, Eduardo.

Al final lo hice como me dijo Julián, pero agradezco mucho que te hayas molestado en desarrollar tanto tu respuesta.

Un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas