Relacionar combos en formulario de access

Tengo una tabla de empresa (Id, Nombre empresa,...) y otro de empleados (Id, Nombre, apellidos,...)

He creado una consulta (empleados ampliados) donde esta el nombre de empresa y el nombre completo de los trabajadores.

Al crear un formulario de subocontratacion, realizo un combo donde cojo el nombre de empresa, y lo que quiero es que al coger el nombre del trabajador, me seleccione solo los que pertenecen a esda empresa.

¿Cómo lo puedo realizar?. Lo he intentado de varias formas distintas siguiendo ejemplos de internet pero no me funciona ninguno.

Respuesta
1

Hace poco un usuario preguntó lo mismo que tú. Parece ser que al final no acabó de probarlo porque le asignaron otra cosa y lo dejó.

Te paso el link por si te funciona. Si quieres más aclaraciones ya me lo dirás.

¿Cómo se puede filtrar un cuadro combinado con otro con datos de dos tablas diferentes?

Buenas tardes Tomas.

Lo he probado y no me restringe la lista. Lo que me pasa ahora es que antes me salia solo una vez cada empresa y ahora me salen por cada registro una vez. En cuanto elijo el nombre de empresa, me da error 424 en tiempo de ejecución.

El cuadro combinado 1 se llama Empresa_Subcontratada

El cuadro combinado 2 se llama Owner.

En la consulta tengo 3 campos, Id, Nombre_empleado y empresa.

El código lo he puesto de la siguiente manera

Nombre_empleado.RowSource = "SELECT id, nombre_empleado FROM Owner WHERE empresa = " & Empresa_Subcontratada.

¿Qué hago mal?.

Gracias

Te sale multiplicado, seguramente porque te aparece tantas veces una empresa como empleados tiene, supongo que irán por ahí los tiros.

En el desplegable de empresas, el origen de datos tiene que ser la tabla de empresas, nada más. Te aconsejo que el desplegable tenga dos columnas, que el código sea el primer campo y que el ancho de la primera columna sea cero.

Una vez que se desencadena el evento Después de actualizar en el primer desplegable se debería ejecutar el código siguiente:

Owner.RowSource = "SELECT id, Nombre_empleado FROM empleados WHERE idEmpresa = " & Empresa_Subcontradada

Tomo como base que el campo id de la empresa es un campo numérico.

Prueba y me cuentas.

Buenas tardes Tomas.

He seguido lo comentado. El primer combo lo he pasado a la tabla empresas. Queda niquelado.

Con el segundo, tengo problemas. No me sale ningún dato a elegir.

Te adjunto la base de datos. Ya no se lo que estoy haciendo mal...

http://www.filebig.net/files/Xzefxd9z9p. Es en el formulario gestion de trabajos.

Gracias por todo. Me gustaría hacer yo los cambios, así aprendo.

Ya está claro compañero.

Ya que dices que quieres hacerlo tú, adelante, ahí va la explicación y las instrucciones.

Seguramente la explicación te parecerá un rollo, pero me arriesgo, prefiero explicarlo para que se entienda y otra vez puedas solucionarlo por tí mismo.

Ya que tienes un id de empresa en la tabla de empresas, es conveniente usarlo. En el campo Empresa_Subcontratada tienes como origen de datos el campo Nombre empresa de la tabla de empresas, solamente. Mi consejo es que tengas el id de empresa y el nombre.

  • Modifica el origen de datos del campo combinado, y añade, a la izquierda, el campo id empresa. En la pestaña Datos, en el campo Origen del registro, modifica la consulta.
  • En el formulario, modifica, en la pestaña Formato, en número de columnas pones 2, en Ancho de las columnas pones 0. De este modo la columna id empresa estará pero será invisible.

Con esto debería funcionar.

La segunda opción es dejarlo tal cual y cambiar la consulta, pero bajo mi punto de vista es mejor usar los campos id, sino, ¿para qué te sirven?.

La consecuencia de todo ello es que el campo Nombre empresa de la tabla de empleados no es necesario, ya que en la misma tabla ya estás registrando el número de la empresa.

Si te lías o tienes alguna duda, ya sabes como encontrarme.

Buenas Noches

Sigo sin acertar. Me da un  error de sintaxis. Sigo haciendo algo mal...

Vale, rectifico. Es el problema de querer ir demasiado rápido.

Tienes un fallo en el código, y es que donde debería poner Empresa_Subcontratada pone Empresa_Subcontradada

Y aparte de eso hay otro fallo, este es mío. La línea debería ser:

Owner.RowSource = "SELECT id, Nombre FROM empleados WHERE Empresa = '" & Empresa_Subcontratada & "'"

Fíjate que hay comillas simples antes y después del nombre de Empresa_Subcontratada, para indicar que es una cadena de texto.

Otra cosa más, sino no te funcionará y te volverás loco: modifica otra vez el desplegable Empresa_Subcontratada, la consulta debe tener un único campo. Es decir, deshaz los cambios que te he dicho en el post anterior.

A mi me ha funcionado, de modo que si no lo ves claro descárgate esto:

https://dl.dropboxusercontent.com/u/18742583/G--Gestion%20empresa%20subcontratista%20V2.accdb 

3 horas leyendo la frase sin darme cuenta que esta mal escrita......

sigo sin acertar.

De todos modos, en la opción que me has puesto en el archivo que acabo de descargar, no coge el dato de la consulta Empleados ampliados sino de empleados. Lo que quiero es que aparezca el nombre y el apellido.

He cambiado la búsqueda a la consulta empleados ampliados pero nada....

Buenas noches Profe.

Conseguido...... Muchas gracias por todo.

Saludos

Agur compañero.

Un placer

Hola Tomas

Ultimo detalle

Veo que en el formulario no me guarda visualmente el empleado que selecciono, pero en la tabla si esta guardada. ¿me falta alguna instrucción?

Gracias de nuevo

Revisa el ancho de las columnas y el número de columnas del cuadro combinado, posiblemente esté a cero y por eso no lo ves aunque sí esté en la tabla.

¡Gracias Tomas! 

Todo perfecto.

Gracias por todo

A disponer!

Suerte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas