|
Chapitre 4 : Les
listes de choix |
|
|
1 - Introduction |
|
|||||||||||||||||||||||||||||||||||||
|
|
|
Considérons
l'exemple d'une table (que nous appellerons "Personnes") constituée
comme le montre l'exemple ci-dessous. |
|
||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||
|
|
|
Il
est tout à fait fastidieux de saisir de nombreuses fois la même information,
telle que celle du titre (Mme, Melle, M.). En outre, si la liste est assez longue,
le même nom de commune sera saisi à plusieurs reprises -- avec le risque
d'une faute de frappe, suivie d'une erreur si l'on effectue dans la table des
recherches basées sur le nom de la commune. Enfin, on n'est pas à l'abri
d'une erreur de saisie conduisant à associer à une commune un code postal
erroné. |
|
||||||||||||||||||||||||||||||||||||
|
|
|
Pour
éviter de saisir plusieurs fois le titre ou le même nom de commune, nous
pouvons l'enregistrer dans une table séparée, et travailler ensuite par copier/coller.
C'est encore mieux s'il nous suffit d'indiquer au système où se trouve
l'information correspondante pour l'enregistrement que nous sommes en train
de renseigner. |
|
||||||||||||||||||||||||||||||||||||
|
|
|
Pour
ce faire, certains SGBD sont dotés d'un outil appelé liste de choix (ou
plus simplement liste), que nous
allons maintenant examiner. Comme dans le chapitre précédent de ce tutoriel (encore appelé "cours en ligne" ou
tutorial), nous utiliserons le SGBD Access comme support pratique. |
|
||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||
|
|
2 - La liste simple (liste interne) |
|
|||||||||||||||||||||||||||||||
|
|
|
Dans
un premier temps, nous créons une table "Personnes" contenant
seulement les trois champs "Nom", "Prénom" et
"Titre", possédant tous le type de données texte. Nous allons faire
en sorte de faire écrire le titre par le système lors du remplissage de la
table. |
|
||||||||||||||||||||||||||||||
|
|
|
Lors
de la création de la table, lorsque nous arrivons au type de données du champ
"Titre", nous sélectionnons "Texte", puis "Assistant
liste de choix..." dans la liste déroulante qui est à notre disposition.
Nous procédons alors aux opérations suivantes : |
|
||||||||||||||||||||||||||||||
|
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
Dans
la fenêtre de définition de la table, aux "Propriétés du champ",
onglet "Liste de choix", nous trouvons les informations
représentées sur la figure suivante : |
|
||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||
|
|
|
Commentons
ces propriétés : |
|
||||||||||||||||||||||||||||||
|
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
Enregistrons
et passons en mode "feuille de données" pour introduire du contenu
dans la table. Quand nous cliquons dans le champ "Titre", l'icône |
|
||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||
|
|
3 - La liste obligatoire |
|
|
|
|
|
En
saisissant des données dans la table "Personnes", nous constatons
que nous pouvons introduire la chaîne de notre choix dans la colonne titre.
Or il serait plus judicieux que nous soyons limités aux seules trois valeurs
qui ont un sens. Pour ce faire, il nous faut revenir en "mode
création". Dans la ligne du champ "titre", nous cliquons dans
la colonne "type de données". Dans l'onglet "liste de
choix", nous réglons à "oui" la propriété "Limiter à
liste". Puis nous revenons au"mode feuille de données". |
|
|
|
|
Nous
constatons alors que le système nous permet toujours de saisir dans le champ
"Titre" une information qui n'est pas dans la liste, mais il refuse
de l'enregistrer lorsque nous passons à la ligne suivante. Notre liste de titres
est effectivement devenue obligatoire, le contrôle s'effectuant lors du
passage à l'enregistrement suivant, ou lors de la fermeture de la table. |
|
|
|
|
Rendre
une liste obligatoire est une décision qui doit être prise au coup par coup,
en fonction des besoins. Il est souvent utile de rendre une liste
obligatoire, mais ce n'est pas une règle absolue. |
|
|
|
|
Remarque : on ne peut rendre la liste
obligatoire que si la propriété "Afficher le contrôle" est à
"Zone de liste déroulante". Une "Zone de liste" ne le
permet pas... et seul l'éditeur Microsoft sait pourquoi. |
|
|
|
|||
|
|
4 - La liste issue d'une table (liste externe) |
|
|||||||||||||||||||
|
|
|
Lorsque
le nombre d'éléments de la liste est important, et / ou s'il est susceptible
d'être complété de temps en temps, il est plus judicieux de placer les
éléments de la liste dans une table plutôt que de les saisir dans
l'assistant. C'est le cas, par exemple, de la liste des communes. |
|
||||||||||||||||||
|
|
|
La
liste peut de nouveau être mise en place avec l'aide de l'assistant, mais il
faut au préalable créer la table correspondante. Nous l'appelons
"Communes", nous lui attribuons un seul champ (intitulé
"commune"), doté du type de données "texte". Passons en
mode "feuille de données" et introduisons quelques noms de communes
dans la nouvelle table. |
|
||||||||||||||||||
|
|
|
Nous
retournons à la table "Personnes" en mode création, et nous
rajoutons le champs "Commune" en mode
texte. Nous lançons l'assistant liste de choix et nous procédons aux
opérations suivantes : |
|
||||||||||||||||||
|
|
|
|
|
||||||||||||||||||
|
|
|
Les
propriétés du champ "Commune" de la table "Personnes",
apparaissent ainsi (onglet "liste de choix") : |
|
||||||||||||||||||
|
|
|||||||||||||||||||||
|
|
|||||||||||||||||||||
|
|
|||||||||||||||||||||
|
|
|
Par
comparaison avec la liste simple, nous remarquons les deux différences
suivantes : |
|
||||||||||||||||||
|
|
|
|
|
||||||||||||||||||
|
|
|
De
retour dans la table "Personnes" en mode "feuille de
données", nous constatons que la liste contenue dans la table
"Communes" nous est proposée, et que de plus elle est triée par
ordre alphabétique (parce que la propriété "Indexé" est passée de
"Non" à "Oui - Avec doublons"). |
|
||||||||||||||||||
|
|
|
Pour
assurer la cohérence entre la table principale "Personnes" et la
table "Communes", nous avons tout intérêt à rendre la liste
obligatoire comme précédemment. Ceci nous astreint à renseigner le nom de
commune dans la table "Communes" avant de saisir l'enregistrement
correspondant dans la table "Personnes", ce qui n'est pas très
commode. Nous verrons plus loin comment l'usage d'une sous-table
permet de régler élégamment le problème. |
|
||||||||||||||||||
|
|
|||||||||||||||||||||
|
|
5 - La clé (clé primaire) |
|
||||||||||
|
|
|
Nous
pouvons améliorer la fiabilité du système précédent en faisant en sorte que
nous ne puissions pas saisir deux fois le même nom dans la table Communes.
Nous ouvrons cette dernière en mode "création", nous sélectionnons
le champ "Commune", et nous cliquons sur l'icône |
|
|||||||||
|
|
|
La
clé (encore appelée "clé
primaire") identifie de manière unique chaque enregistrement de la
table. Le champ auquel on applique une clé acquière les propriétés
suivantes : |
|
|||||||||
|
|
|
|
|
|||||||||
|
|
|
Pour
supprimer une clé, il faut sélectionner le champ et cliquer sur l'icône |
|
|||||||||
|
|
||||||||||||
|
|
6 - La sous-table |
|
|
|
|
|
La
présence de la clé a aussi pour effet de faire apparaître la table
"Personnes" comme sous-table
de la table "Communes". En effet, si nous ouvrons cette dernière,
nous voyons que chaque ligne commence maintenant par un signe + (appelé
"indicateur de développement" dans Access). Si nous cliquons sur ce
signe (en face de la commune "Uriage", par exemple), la liste des
personnes de la table "Personnes" habitant Uriage apparaît (figure
ci-dessous), et nous pouvons la compléter. Si nous cliquons sur le signe -
qui se trouve maintenant en face de la commune "Uriage", la sous-table disparaît. On peut faire apparaître plusieurs sous-tables de la table "Personnes" dans la
table "Communes" si on le désire. |
|
|
|
|||
|
|
|||
|
|
|||
|
|
|
L'existence
de la sous-table nous permet de remplir simultanément
la table "Personnes" et la table "Communes" qui lui sert
de liste, d'autant que la liste simple du champ "Titre" fonctionne effectivement
dans la sous-table. Comme on peut le constater, les
sous-tables sont fort commodes, et elles rendent
superfétatoire l'usage des formulaires. |
|
|
|
|||
|
|
7- Conclusion |
|
|
|
|
|
Il
existe deux façons de réaliser une liste de choix : en saisissant
immédiatement les valeurs (liste interne), ou en les introduisant dans une
table auxiliaire (liste externe). La première façon est recommandée lorsque
la liste est courte, et peu susceptible de changer. La seconde façon est
recommandée lorsque la liste est longue, et / ou susceptible d'être
souvent modifiée ou complétée. Quelle que soit la manière utilisée pour
réaliser une liste de choix, l'usage de l'assistant "liste de choix"
est fortement recommandé. |
|
|
|
|
Rappelons
que le codage constitue une solution pour régler un problème d'homonymie. Si
un tel problème n'est pas susceptible de se poser, le codage constitue une
complication inutile. Si l'usage de codes s'avère indispensable, on peut
toujours faire en sorte de ne pas les voir, alors que le SGBD continue à les
gérer. |
|
|
|
|
Nous
reviendrons, au chapitre 9, sur l'usage des listes, et sur les rapports
complexes qui existent entre liste et relation. |
|
|
|
|||