• Aucun résultat trouvé

La liste de choix déroulante "Pays"

6.2. Les formulaires

6.2.4. La liste de choix déroulante "Pays"

L'ennui de ce formulaire, c'est qu'il demande d'introduire le code ISO du pays. Rappelons-nous que ce code ISO est le champ qui sert à faire le lien entre la table

Pays et la table CodesPostaux :

fig. 6.10 Propriétés du formulaire frmPays

Nous devons donc inscrire dans une table de niveau II une information provenant d'une table de niveau I. Ainsi qu'expliqué au point 4.4, nous pouvons simplifier la tâche de l'utilisateur en lui présentant une liste dans laquelle il choisira.

L'insertion d'une liste déroulante passe par quatre étapes :

- construire la requête qui va rechercher l'information voulue,

- construire le contrôle "Liste déroulante"

- alimenter la liste déroulante avec les données de la requête,

Application Access 6 - La chaîne Clients - Codes Postaux - Pays

Access permet d'intégrer la requête dans l'objet "liste déroulante". Cette pratique est à proscrire pour des raisons semblables à celles évoquées au point 5.3. En fin de compte, il est beaucoup plus pratique de créer un objet requête séparé. On crée

facilement une requête en MODE CREATION.

Une requête destinée à une liste déroulante doit toujours contenir :

- le ou les codes nécessaires en premières positions,

- un ou plusieurs champs présentant une information plus conviviale.

Dans le cas qui nous intéresse, la requête doit récupérer le CodePaysIso, en tant que clé, et le NomPays, en tant qu'information conviviale. La liste est triée par nom de pays mais il est inutile de lister les pays qui ont été détruits :

fig. 6.12 Construction de la requête

La requête contient l'expression SQL suivante :

SELECT Pays.CodePaysIso, Pays.NomPays

FROM Pays

WHERE Pays.estDetruit=False ORDER BY Pays.NomPays;

Cette requête est sauvée sous un nom explicite : R_PaysListeId.

L'insertion de l'objet "Liste déroulante" dans le formulaire ne présente pas de difficulté particulière :

- commencer par désactiver la baguette magique de la palette d'outils pour éviter

d'être entraîné dans le dédale des assistants (fig. 6.6);

- cliquer une fois sur l'outil "Zone de liste modifiable" de manière à enfoncer le bouton;

- placer le curseur de la souris dans le formulaire, non pas contre le bord, mais à

la verticale du côté gauche des zones d'encodage (pas des étiquettes);

- cliquer une fois. L'objet est placé, son positionnement exact sera réglé plus tard;

Application Access 6 - La chaîne Clients - Codes Postaux - Pays

fig. 6.13 Insertion de la liste déroulante

Il s'agit maintenant d'alimenter l'objet avec les données de la requête construite plus

haut. Dans le panneau des propriétés, on choisit l'onglet DONNEES (ang.: data) :

fig. 6.14 Attacher la requête à la liste déroulante

- la liste déroulante gère le champ CodePaysIso de la table source (Source

contrôle),

- la liste a pour source une Table/Requête (Origine source),

- la requête source se nomme R_PaysListeId (Contenu),

- la colonne liée est celle qui contient l'information que l'on doit mettre dans le

champ CodePaysIso (Source contrôle). Dans notre requête, cette information

est dans la première colonne (1),

- les données acceptables sont limitées à la liste proposée, ce qui signifie qu'il est

impossible d'ajouter de nouveaux pays à partir du formulaire frmCodesPostaux.

Application Access 6 - La chaîne Clients - Codes Postaux - Pays

fig. 6.15 Définir l'affichage

- la requête appelée contient deux colonnes : le Code et le Nom (Nbre colonnes),

- les en-têtes (Titres) des colonnes ne sont pas affichés,

- la première colonne, celle qui contient le CodePaysIso, ne doit pas être affichée.

Sa largeur est mise à 0 cm. Par contre, on affiche la colonne qui contient le nom du pays et on fixe sa largeur à 3 cm (Largeur colonnes). Ces deux chiffres sont séparés par un point-virgule.

- on affiche 8 lignes de données (Lignes affichées),

- les autres propriétés gardent leurs valeurs par défaut.

On choisit l'onglet AUTRES (ang.: Others) pour changer le nom du contrôle. Le nom

par défaut Modifiable8 est remplacé par FCodePaysIso. On en profite pour vérifier

les noms de tous les contrôles du formulaire. Un contrôle porte le même nom que le champ auquel il est lié, précédé de la lettre F (FCodeVille, FCodePostal, FNomVille), ceci afin d'éviter les confusions qui pourraient surgir par la suite.

Après avoir vérifié le comportement de la liste déroulante et fait un peu de ménage dans le formulaire, voici ce qu'on devrait avoir :

fig. 6.16 Formulaire CODES POSTAUX terminé

Normalement, lors de l'ouverture du formulaire, le curseur se positionne dans le premier champ. Il passe d'un champ au suivant chaque fois que l'on appuie sur la touche [TAB]. Or, partant du formulaire généré par l'assistant, nous avons ajouté,

supprimé et déplacé des contrôles. Il se peut que la navigation ne se déroule plus dans le même sens.

Pour remettre les choses dans l'ordre, on ouvre le formulaire en mode "modification"

Application Access 6 - La chaîne Clients - Codes Postaux - Pays

commande apparaît aussi dans le menu contextuel. La fenêtre qui s'ouvre affiche une liste de tous les contrôles d'encodage. Pour déplacer un contrôle mal placé dans la liste, il suffit de cliquer sur la case située à sa gauche et de le remonter (ou le descendre) dans la liste.

fig. 6.17 Définir l'ordre de tabulation

Documents relatifs