Nous allons ajouter le titre de civilité (Monsieur, Madame, Mademoiselle) à nos clients.
Ouvrez votre base de données, et la table T_Client en mode création. Créez un nouveau champ tout à gauche que vous nommerez Civilite.
Comme vous le constatez, non seulement on peut se tromper (Monssieur), mais on peut aussi écrire M.
Lancez la table en mode saisie de données, et recopiez les civilités, comme ceci (La faute d'orthographe est voulue) :
Evidemment, lorsque nous allons rechercher tous les Monsieur, il nous manquera Michael Jackson et Steven Spielberg.
Création d'une liste déroulante
Aussi, plutôt que de laisser la saisie libre, nous allons nous faire épauler par une liste déroulante qui va se présenter comme ceci :
Pour ce faire :- Choisissez Assistant liste de choix dans Civilite :
- Cochez Je taperai les valeurs souhaitées, et suivant :
- Remarque pour la suite : N'appuyez pas sur ENTER après avoir écrit Monsieur, mais appuyez plutôt sur Tabulation, sinon, c'est comme si vous cliquiez sur Suivant.
Ecrivez Monsieur, Madame, Mademoiselle, comme ceci, et Suivant : - Cliquez sur Terminer :
La liste déroulante n'est pas un type de données
Constatez que le champ est revenu à Texte.
La liste de choix n'est donc pas un type de données particulier, mais un assistant pour remplir les données. Si votre liste de choix avait dû choisir entre des données numériques (Choisir le pourcentage de rabais 2,3,5,10,15 ou 30% par exemple), il aurait fallu définir le champ comme Numérique)
On peut ouvrir une liste déroulante sans utiliser la souris, grâce au raccourci-clavier . On peut ensuite descendre dans la liste avec simplement la touche , et on peut valider son choix avec
Lancez la table en mode saisie de données,et il vous suffit de cliquer dans le champ Civilité de n'importe quel client pour faire apparaître la flèche qui vous permettra d'accéder au choix Monsieur, Madame, Mademoiselle.Constatez que le M. et Monssieur sont toujours présents. Ils n'ont pas été effacés ou remplacés par Monsieur. Je dis ça car si vous êtes en présence d'une grosse table qui contient déjà des milliers de civilités, et qu'une liste déroulante est déjà en place, rien ne prouve que les données qui s'y trouvent soient incluses dans la liste !
Auto-complétion
Pour choisir une civilité, vous pouvez bien sûr cliquer sur Monsieur, madame ou mademoiselle, mais vous pouvez également taper les premières lettres dans la zone de liste : si vous écrivez m, il complète par le premier mot qui commence par m (Monsieur).
Si vous écrivez ma, il écrit Madame, et si vous écrivez made, il écrit Mademoiselle.
Ca s'appelle l'auto-complétion. Si vous écrivez ma, il écrit Madame, et si vous écrivez made, il écrit Mademoiselle.
Pour le coup, nous sommes en train de prétendre que Chaplin est Mademoiselle... Laissons-le, mais c'est une erreur...
Ici, on le fait un peu exprès, mais des erreurs humaines, dans les bases de données, vous ne pourrez jamais y échapper, gardez-le à l'esprit.
Ici, on le fait un peu exprès, mais des erreurs humaines, dans les bases de données, vous ne pourrez jamais y échapper, gardez-le à l'esprit.
Choix d'une valeur absente de la liste
Que se passe-t-il si on essaie d'écrire une civilité qui n'est pas dans la liste ?
Admettons que Patrick Bruel soit avocat, et que nous désirions le faire maître ? Essayez, et enregistrez avec CTRL-S pour vous assurer de la validité de votre entrée.
Pas de souci ! Par contre, ce n'est pas pour ça que Maître va se retrouver dans la liste pour les prochaines fois !
Il y n'y a toujours que Monsieur, Madame ou Mademoiselle !
Ajout de nouveaux éléments dans la liste
Comment faire pour ajouter des nouveaux éléments dans la liste ?Par exemple, imaginez que vous avez beaucoup de médecins, et que vous désiriez proposer également Docteur ? Par exemple, imaginons que Coluche soit médecin (par le rire ) :
Cliquez sur la flèche de la liste déroulante, et cliquez sur le petit icone qui apparaît en bas.
Revenez en mode création. En dessous de votre table, vous avez les propriétés des champs. Et vous avez un 2ème onglet (Liste de choix). Cliquez dessus. Regardez la propriété contenu
: c'est le contenu de votre liste, et vous pouvez la modifier
directement ici, comme si vous aviez utilisé le petit icone dont on
vient de parler. Observez sa structure : "Un élément";"Un autre élément";"Etc."
Ecrivez Docteur sous Mademoiselle,
et cliquez sur OK :
Voilà : vous pouvez maintenant choisir Docteur. ça restera disponible, même si vous fermez la base de données et que vous la rouvrez :et cliquez sur OK :
Exercice : supprimez Mademoiselle de la liste, car on l'utilise de moins en moins au profit de Madame, et vérifiez ensuite si, malgré cette supression, Chaplin est toujours bien Mademoiselle.
Interdiction d'entrer une valeur absente de la liste
Plus haut, nous avons pu écrire la civilité Maître, bien que cet intitulé ne faisait pas partie de la liste déroulante (à titre exceptionnel, si on veut bien).
Lancez la table en mode saisie de données, et essayez maintenant de préciser que Coluche est Maître.
Si vous voulez interdire ce genre
d'exception, et exiger que toute valeur choisie soit un élément de la
liste, Mettez la propriété Limiter à liste de Civilite à Oui.
Appuyez simplement sur ENTER, ou cliquez dans un autre champ : Il ne vous laisse plus écrire Maître comme si de rien n'était : Il vous affiche un message d'erreur, mais qui n'est pas une fin de non recevoir : il vous propose de garnir la liste avec le Maître en plus !
Ce message d'erreur est trompeur !
Access vous laisse penser que la propriété Limiter à liste, quand elle est mise à Oui, vous interdit d'écrire de faire des choix non proposés dans la liste déroulante, mais vous permet d'ajouter de nouveaux choix "officiellement" (Maître, en l'occurrence).Cliquez sur Oui.
Il vous demande d'enregistrer la structure de la table. Dites Oui.
C'est maintenant que vous êtes gratifié d'un message d'erreur Access à peu près incompréhensible :
Et vous voici revenu à la case départ !
Si vous rappuyez sur ENTER ou que vous cliquez sur un autre champ, vous aurez à nouveau ces boîtes de dialogue... Votre seul salut sera d'appuyer sur !Constatez également que vous disposez bien du petit icone en bas de la liste pour modifier la liste, mais n'insistez pas, on ne peut pas la modifier, point barre.
En fait, lorsque vous désirez limiter la liste aux seuls choix proposés, vous devez modifier 2 propriétés en même temps : Limiter à liste : Oui, mais aussi Autoriser les modifications de la liste de valeurs : Non.
Lancez ensuite la table en mode saisie de données, et attribuez Maître à Coluche.
Vous obtenez un message d'erreur qui ne vous laisse pas le choix (normal...)
Vous obtenez un message d'erreur qui ne vous laisse pas le choix (normal...)
Et quand vous cliquez sur OK, il vous affiche simplement la liste déroulante avec les choix possibles :
Ainsi, si vous avez bien tout suivi, Access ne vous offre pas la solution intermédiaire (pourtant pertinente) qui consiste à interdire d'écrire Maître si ce n'est pas dans la liste, mais qui accepte que vous l'ajoutiez officiellement dans la liste.
Dommage...
J'insiste sur ces notions, car, lors de la construction de la liste déroulante avec l'assistant, vous aurez la possibilité de commettre facilement cette erreur.Dommage...
Faisons un test :
- Créez un champ CivTest tout en haut de la table :
- Je taperai les valeurs souhaitées, Suivant :
- Monsieur, Madame, Mademoiselle, Suivant :
- Cochez la case Limiter à la liste : , et cliquez sur terminer.
testez : inscrivez Maître à Coluche, encore une fois... Ce sera donc à vous, à la main, de préciser Autoriser les modifications de la liste de valeurs : Non.
Oui, oui, je suis d'accord avec vous, c'est un peu nul !
Supprimez le champ CivTest.Liste déroulante à plusieurs colonnes
Nous allons maintenant ajouter la couleur préférée des clients (Ce n'est pas très utile dans la vie réelle, mais ça va me permettre de vous montrer d'autres possibilités).Admettons que votre base de données va être utilisée en réseau par des gens qui parlent français ou anglais, et qu'on aimerait une petite "description psychologique" de la couleur.
Ca se passe comme ceci :
Créez un nouveau champ CouleurPreferee, après Prenom, en assistant liste de choix (texte).
Lorsque vous arriverez à cette étape, écrivez 3 comme nombre de colonnes, et inscrivez les données suivantes :
Quand vous avez sélectionné une couleur, que voulez-vous qui soit mémorisé ? La couleur en français (col1), en anglais (col2), ou la description (col3) ? ... La couleur en français, bien sûr :
En haut, si vous écrivez Couleur préférée, il va simplement renommer votre champ... On n'a pas besoin de l'assistant pour faire ça !
Ensuite, regardez la case à cocher Autoriser plusieurs valeurs (ne la cochez pas). Elle nous permettra de choisir plusieurs valeurs de la liste pour un même client.
Ensuite, regardez la case à cocher Autoriser plusieurs valeurs (ne la cochez pas). Elle nous permettra de choisir plusieurs valeurs de la liste pour un même client.
Lancez la table en mode saisie de données, et choisissez Jaune pour Edith Piaf et Green pour Steven Spielberg (il mettra vert) :
Personnalisation de la largeur de la liste
Ma 3ème colonne (celle des descriptions) est un peu trop étroite.
Revenez en mode création, et scrutez l'onglet liste de choix des propriétés de CouleurPréférée ce qui se passe :
Contenu contient toutes les données de notre liste. Access s'y retrouve grâce à la propriété Nbre Colonnes.Et dans Largeurs colonnes, nous avons les largeurs, dont le total doit donner Largeur liste (je ne sais pas pourquoi il ne propose pas de le faire automatiquement ).
Ne vous inquiétez pas s'il transforme 1.5cm en 1.501cm, c'est un petit arrondissement dû au fait qu'Access est un logiciel américain, programmé pour fonctionner en pouces, et il convertit donc en CM par calcul, ce qui donne cette légère approximation.
E l a r g i s s o n s donc la 3ème colonne, et profitons pour simplifier ces valeurs et calculer le total, comme ceci :
Lancez ensuite en mode saisie de données. La 3ème colonne est affichée complètement :
Choisir plusieurs éléments à la fois
Comment faire pour définir 2 ou plusieurs couleurs préférées ?Vous vous rappelez, un peu plus haut, dans l'Assistant liste de choix il y avait une case à cocher Autoriser plusieurs valeurs ?
Vous avez également cette option (apparue avec Access 2007) dans les propriétés !
Basculez-là à Oui,et vous aurez un message d'avertissement qui vous précise que vous ne pourrez plus changer d'avis par la suite (vous ne pourrez plus remettre cette propriété à Non pour la couleur préférée).
Lancez la table en mode saisie de données. Mmaintenant vous pouvez sélectionner plusieurs couleurs à la fois grâce à des cases à cocher.
Inconvénients du multi-choix
Maintenant, vous ne jouissez plus de l'auto-complétion : plus question d'écrire r, et de voir Rouge s'écrire automatiquement, il faut cliquer dans la case à cocher.Quand nous étudierons les requêtes, nous constaterons que ce système de multi-choix possible rend les choses quelque peu plus délicates, et il ne faut pas utiliser cette fonction à tort et à travers. Si, sur 1000 clients, il y en a 1 ou 2 qui ont plus d'une couleur préférée, je vous déconseille ce multi-choix (mettez la 2ème couleur aimée dans un champ Remarque), car les inconvénients seraient trop importants par rapport aux avantages (par exemple l'auto-complétion inactive), mais aussi pour les tris et les filtres !
Imaginez que (dans une requête, que nous verrons plus tard), vous désiriez la liste des clients qui aiment le jaune, Access vous renverra Piaf et Spielberg. Ensuite, tous les clients qui aiment le vert, il y aura Spielberg et Jackson (2 + 2 = 4 clients, alors qu'en fait, nous ne parlons que de 3 clients en tout !
Il faudra rester toujours très vigilants !
La case à cocher occupe une certaine largeur, et il suffit d'augmenter la taille de la liste déroulante pour vous débarasser de l'ascenseur horizontal :
Il existe une propriété nommée Afficher uniquement les valeurs de la source, et je n'ai aucune idée de son utilité...
Aucun commentaire:
Enregistrer un commentaire