Campos relacionados en distintos formularios

Tengo una Base con dos tablas "tLibros" y "tAutores" y dos formularios "fLibros" y "fAutores" y están relacionadas por un campo "idAutor".
En el Formulario "fLibros" tengo un campo "Autor" del tipo: Cuadro combinado, de forma que puedo elegir un autor de entre los que hay en la tabla "tAutores". (Además tiene un evento para que al hacer "doble clic" se abre "fAutores" para registrar un nuevo autor).
Bien, mi problema esta en que quiero que al elegir el autor en el cuadro combinado del formulario "fLibros", me devuelva en otro campo (del mismo formulario) el valor del campo "Nacionalidad" de la tabla "tAutores".
¿Qué tipo de campo tengo que crear? ¿Y cómo lo relaciono?.
Supongo que es algo sencillo pero no lo consigo.

1 respuesta

Respuesta
1
Hay dos maneras de resolver el problema:
- El primero consiste en que el origen de datos del formulario sean las dos tablas relacionadas (tlibros y tAutores). El único problema de esta solución es que no se permiten ciertos cambios.
- La otra es crear un cuadro de texto para cada información adicional. En el origen de datos de dicho cuadro pones:
= dlookup ( "nacionalidad","tAutores","idAutor=" & me.autor.value)
dlookup es una funcion que busca en la tabla "tautores", los registros que cumplan la condicon "idAutor"= & me.autor.value (supongo que el control del formulario se llama autor.). En este caso se devuelve el campo "nacionalidad", pero puede poner cualquier otro.
Hola:
Lo siento pero no lo he conseguido. He metido lo que me dijo y me dice:
La Expresión que introdujo tiene una sintaxis no válida
Omitió un operando o un operador, introdujo un carácter o coma no válidos o introdujo texto
sin encerrarlo en comillas.
He estado husmeando en otras respuestas parecidas y veo que le dan mucha importancia a unas comillas simples, además también he comprobado que delante de =dlookup, suelen poner algo como res_bus o varX (en la ayuda de Access). He intentado hacer todo esto con mis variantes y solo he conseguido que en el campo me aparezca #¿Nombre?. (Por cierto no se si influirá pero aún tengo Access'97 y también probé con DBúsq ).
¿Será qué al formulario no le puse nombre de control y está como Detalle?. (Ya no se ni mirar el nombre).
Porque por lo demás entiendo que cuando dices: Origen de datos del cuadro de texto, es en las propiedades del cuadro de texto, en Control, Origen del Control. ¿Verdad?
Llevo dos días dedicado en cuerpo y alma a esto y no desistiré, si tu me ayudas claro.
Un saludo y muchas gracias.
Perdona la expresión no era correcta. Cuando se pone
en el código hay que usar comas para separar los parámetros, pero al editar
el origen de datos hay que poner ";". Es decir:
= dlookup ( "nacionalidad";"tAutores";"idAutor=" & me.autor.value)
GENIAL, lo conseguimos.
Veras, introduje tu secuencia y me lo cambio automáticamente a esta:
=DBúsq("nacionalidad";"tAutores";"idAutor=" & [me].[autor].[Valor])
Y no me funcionaba, investigue un poco con la ayuda de Access y di con esta solución
=DBúsq("Nacionalidad";"tAutores";"IdAutor=" & [Formularios]![fLibros]![IdAutor])
Y funciona perfectamente.
Un millón de gracias.
Un saludo Funkel

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas