OVH Cloud OVH Cloud

Liste déroulante à valeurs variables

2 réponses
Avatar
JMC
Bonjour,

Et veuillez m'excuser de la longueur de ce message: =E9tant assez peu
familier du vocabulaire base de donn=E9es je tiens tout de m=EAme =E0
rester clair.

Je cherche, dans un formulaire me servant =E0 associer des cl=E9s aux
utilisateurs qui les poss=E8dent, =E0 cr=E9er une liste d=E9roulante me
proposant des valeurs "Num_Cle" d'une table "T_CLES" =E9voluant selon
leur pr=E9sence ou absence dans une autre table
"T_AssociationCleUtilisateur".
Plus pr=E9cis=E9ment:

T_CLES
ID_Cle: Champ d'identification de la cl=E9 de serrure (cl=E9 primaire de
la table)
Num_Cle: Champ comprenant le num=E9ro de la cl=E9 (i.e. de la serrure
qu'elle ouvre)
Etat_Cle: Autre champ

T_UTILISATEURS
ID_Utilisateur: Champ d'identification de l'utilisateur (cl=E9 primaire
de la table)
Nom_Utilisateur: Autre champ
Prenom_Utilisateur: Autre champ
Statut_Utilisateur: Autre champ

T_AssociationCleUtilisateur
ID_Utilisateur
ID_Cle

J'associe actuellement une cl=E9 =E0 un utilisateur correspondant en
s=E9lectionnant un Num_Cle dans une liste d=E9roulante (c'est bien
Num_Cle qui compte, ID_Cle n'ayant aucune importance dans le choix de
la cl=E9).

Or, si la valeur ID_Cle est bien unique =E0 chaque cl=E9, plusieurs cl=E9s
peuvent poss=E9der le m=EAme Num_Cle. La liste actuelle me propose donc
le m=EAme Num_Cle autant de fois qu'il y =E0 de cl=E9 le poss=E9dant.

C'est tr=E8s genant puisque que je dois parfois m'y reprendre =E0
plusieurs fois pour s=E9lectionner un Num_Cle d'une cl=E9 qui est
disponible (pas encore entr=E9e dans T_AssociationCleUtilisateur).
Ma question est donc finalement: comment ne faire apparaitre dans la
liste d=E9roulante que les Num_Cle des cl=E9s encore disponibles?

J'esp=E8re qu'il s'agit l=E0 d'un cas d'=E9cole que vous pourrez vite
m'aider =E0 solutionner ;-)
Merci d'avance.

2 réponses

Avatar
pgz
Bonjour,

Tu as très bien fait de poser ta question de façon détaillée.
Si je t'ai bien suivi, un enregistrement de la table T_Clés correspond à un
exemplaire physique unique de clé. Donc un tel enregistrement ne peut être
relié qu' à 0 ou 1 utilisateur.

Par contre, un utilisateur peut avoir plusieurs clés.

Si je ne me suis pas égaré, la structure de tes tables ne convient pas. Tu
peux faire beaucoup plus simple:

T_CLES
ID_Cle: Champ d'identification de la clé de serrure (clé primaire de
la table)
Num_Cle: Champ comprenant le numéro de la clé (i.e. de la serrure
qu'elle ouvre)
Etat_Cle: Autre champ
ID_Utilisateur

T_UTILISATEURS
ID_Utilisateur: Champ d'identification de l'utilisateur (clé primaire
de la table)
Nom_Utilisateur: Autre champ
Prenom_Utilisateur: Autre champ
Statut_Utilisateur: Autre champ

Si tu crées un formulaire basé sur la table T_Clés tu pourras visualiser les
clés avec un tri sur Num_Clé qui permettra de rassembler les clés de même
numéro. Tu ajoutes une liste de choix ayant pour Rowsource les utilisateurs
et comme source le champ ID_Utilisateur de la table T_Clé.

Sur ce formulaire, en mode continu, tu verras les clés afffectées ou libres,
suivant ce contenu du controle de la liste de choix, et dès que tu feras un
choix d'utilisateur, la table des clés sera à jour...

Maintenant, si tu tiens absolument à garder ta structure, dis le et je
t'expliquerai comment faire.

Cordialement,
pgz
Avatar
JMC
Oui, effectivement ma structure n'était pas forcément la plus
simple!!
Merci du conseil donc, je vais essayé comme ça.