Access- Devolver valor tabla principal en cuadro de texto de formulario de tabla 2 según valor no numérico en cuadro combinado

Les hago una consulta para ver si me pueden ayudar. Les explico esquemáticamente la BD para no complicarlo.

Tengo una tabla principal (TRABAJADORES) con los siguientes campos ID (numérico) / SIGLAS (texto) / NOMBRET (texto) y tengo una segunda tabla (CONTRATOS) con los campos ID (numérico) / SIGLAS (texto) / OTROS CAMPOS

Estoy preparando un formulario de la tabla CONTRATOS, en los que he incluído un cuadro de texto en el que quería que apareciera el nombre del trabajador al elegir en un cuadro combinado las siglas del mismo (mediante una consulta a la tabla principal), para no doblar datos en todas las tablas. Sin embargo, no lo consigo.

Hasta ahora en otras consultas había utilizado un motor de búsqueda numérico que me devolvía el valor que me interesaba mediante un código If IsNumeric... Pero al tratarse ahora de un campo no numérico no consigo que me devuelva el valor de la tabla al estar esta en una tabla diferente a la del formulario.

¿Me pueden ayudar a lograrlo?

1 respuesta

Respuesta
1

Vamos a suponer que el combinado donde eliges las siglas sólo tiene una columna, que esa columna es la de las siglas, y que el combinado se llama elegir. Vamos a suponer también que el cuadro de texto donde quieres que aparezca el nombre se llama Empleado. En las propiedades del combinado Elegir, -eventos-Después de actualizar, crea un procedimiento de evento y entre Private Sub y End Sub escribe

Empleado=Dlookup("Nombre","Trabajadores","siglas='" & me.elegir & "'")

Es decir, que una vez que hayas elegido una sigla, ponme en el cuadro de texto Empleado el nombre que figura en la tabla Trabajadores, en aquel registro en que su campo siglas sea igual al valor que acabas de elegir en el combinado Elegir.

Gracias, ahora lo he conseguido. La explicación de la instrucción me ha facilitado el proceso.

Un saludo

Hola Julián,

perdona otra pregunta. Ahora me he dado cuenta que al abrir un nuevo registro, el campo Empleado aparece rellenado según el valor del cuadro combinado ELEGIR del registro anterior hasta que éste no se modifica en el nuevo registro. He intentado programarlo para que no guarde este valor en el nuevo registro pero no lo he conseguido.

¿tengo que añadir alguna otra instrucción?

muchas gracias.

Pilar

Por lo que dices, da la impresión de que el formulario es continuo. Lo que haría sería, en el evento Al activar el registro del formulario, crear un procedimiento de evento y entre Private Sub y End Sub poner

If me.newrecord then

empleado=""

end if

Así, cuando vayas a un registro nuevo, el valor del combinado será nulo para que puedas elegir el que quieras.

De acuerdo. Desconozco como he hecho un formulario continuo pero si sigo tus instrucciones me funciona correctamente. Sin embargo, si consulto el registro anterior al tener introducida la instrucción que me dices el valor de Empleado deja de existir. Ahora me entretendré a revisar porqué cuando el campo es numérico y utilizo la funcion If isNumeric no me sucede.

Muchas gracias por todo. Me has sido de gran ayuda pq estaba estancada.

Pilar

Pilar al no saber como tienes construido el formulario es difícil hacerme una idea, pero me da que el control donde aparece el nombre es independiente. Podemos hacer dos cosas. Si quieres, repito, si quieres, haz una copia de tu base, con dos o tres registros inventados y me la mandas a [email protected] la miro y te digo, o mándame un mensaje(sólo el mensaje) y te mando un ejemplo.

En cualquiera de los casos, en el Asunto del mensaje pon tu alias M. Pilar, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas