Comment rendre les zones de liste déroulante de clés étrangères conviviales sur un formulaire d'accès?

StackOverflow https://stackoverflow.com/questions/153035

  •  03-07-2019
  •  | 
  •  

Question

J'ai deux tables:

Employees:
uid (number) | first_name (string) | last_name (string) | ...

Projects:
uid | project_title (string) | point_of_contact_id (FK: Employees.uid) | ...

Je souhaite créer un formulaire pour les projets avec un "Point de contact". zone de liste déroulante (liste déroulante). Les valeurs d’affichage doivent être " prénom_nom Last_name " mais les données de sauvegarde sont l'UID. Comment configurer le formulaire pour montrer une chose à l'utilisateur et enregistrer une autre chose dans la table?

Je serais bien de ne pouvoir afficher qu'un seul champ (par exemple, "prénom_nom"), car je peux créer une vue avec un champ complet_nom.

Plus tard:

S'il existe un moyen de faire cela au niveau de la conception de la table, je préférerais cela, car il me suffirait alors de définir un paramètre par colonne UID (et il y a plusieurs tables), plutôt qu'un paramètre par champ UID (et il existe de nombreux formulaires, chacun avec plusieurs champs UID).

Était-ce utile?

La solution

Pour développer la réponse de Loesje, vous utilisez la propriété Colonne liée ainsi que Nombre de colonnes et Largeurs de colonne lorsque vous affichez plusieurs champs afin de pouvoir indiquer à Access lequel doit être écrit dans la base de données. (Il existe d'autres moyens de faire cela en utilisant VBA, mais cela devrait fonctionner dans votre cas particulier.)

Dans votre cas, définir Row Source sur select uid, prenom, last_name from nomtable signifie que votre colonne liée doit être égale à 1 pour la première colonne de votre source (Row) (uid). C'est la valeur par défaut, vous ne devez donc la modifier que si vous souhaitez enregistrer une valeur d'un autre champ. (Par exemple, si vous souhaitez enregistrer last_name à partir de la source de ligne ci-dessus, définissez Bound Column sur 3.)

N'oubliez pas que lorsque vous définissez la largeur des autres colonnes que vous affichez, la propriété Width de la zone de liste déroulante doit être supérieure ou égale à la somme des largeurs de colonne, sinon vous risquez de ne pas voir toutes les colonnes.

Il n'est pas possible d'indiquer au niveau de la table qu'un formulaire basé sur cette table doit extraire des colonnes particulières, ou qu'une colonne particulière est la clé étrangère, mais vous pouvez copier une zone de liste déroulante dans d'autres formulaires. portera toutes ses propriétés avec elle. Vous pouvez également copier la requête Row Source et la coller dans d'autres boîtes à options, si cela vous aide.

Autres conseils

Définissez la source de lignes de la liste déroulante sur "select uid, first_name, lastname from nom_table" et définissez la largeur de colonne sur 0. Ainsi, la largeur de la première colonne est définie sur zéro afin que l'utilisateur ne la voie pas. (Vous pouvez indiquer la largeur des autres colonnes en les séparant par un point-virgule, à savoir: 0cm; 4cm; 4cm)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top