bonjour,
Ensuite vient un champ dans lequel je souhaiterais faire apparâitre le nom du pays en fonction du code ISO de celui-ci, mais n'enregistrer dans la T_FourNouveau que le code ISO du pays.
Alors pourquoi avoir créé le champ Four_pays dans la table T_FourNouveau ?
Si le champ ne sert à rien il faut le supprimer de la table et mettre le champ en indépendant dans le formulaire (cela revient à ne rien mettre dans la propriété "Source contrôle")
Ensuite pour l'alimenter, le principe est le même que pour le code ISO (Four_CodePays): ajouter la table T_Pays dans la requête de la propriété "Contenu" de la liste déroulante Four_CP faire la jointure entre les 2 tables, ajouter la colonne Pays_Nom et modifier les propriétés sous-jacentes de la liste déroulante (curieusement, la propriété "Nbre colonnes" était déjà à jour ...):
SELECT [T_Codes postaux].Cp_CPLocalite, [T_Codes postaux].CP_NomLocalité, [T_Codes postaux].CP_ISOPays, T_Pays.Pays_Nom FROM [T_Codes postaux] INNER JOIN T_Pays ON [T_Codes postaux].CP_ISOPays = T_Pays.Pays_ISO ORDER BY [T_Codes postaux].Cp_CPLocalite, [T_Codes postaux].CP_NomLocalité;
puis dans l'évènement AfterUpdate de Four_CP, alimenter le nom du pays:
Me.Four_Pays = Me.Four_CP.Column(3)
enlever la commande DoCmd.GoToControl "Four_Pays" qui n'a plus lieu d'être puisque le champ est devenu non modifiable.
Je rappelle quand même que les contrôles de cohérence doivent se faire sur l'évènement avant mise à jour (champs concernés et formulaire) et non pas sur perte focus, évènement qui survient APRES mise à jour, donc trop tard pour effectuer une annulation de saisie incomplète.
Partager