Leçon 6: Texte, mémos, filtres et tris

Pour suivre cette leçon, vous devez avoir suivi les leçons précédentes. Ou plus précisément, vous devez être en possession de la base de données procd.mdb telle qu'elle était à la fin de la leçon précédente. Si vous n'êtes pas certain de l'avoir, vous pouvez la télécharger ici

Résumé de la leçon précédente

Lors de la dernière leçon, nous avons vu comment Access se débrouille pour offrir l'enregistrement automatique des informations (données). Nous avons également vui comment effacer un enregistrement.

Aperçu de cette leçon

Maintenant, nous allons un peu jongler avec les textes. Peut-on vraiment mettre n'importe quoi dans les champs de type texte ?

Revenons aux champs de texte. Est-ce qu'on peut vraiment y mettre tout ce qu'on veut ?

Oui, mais dans la limite imposée par la propriété Taille du champ : . Avec les champs texte, vous pouvez définir jusqu'à 255 caractères maximum. Si vous essayez d'écrire 256 dans cette zone , alors, Access va vous donner ce message d'erreur : . Laissez donc la valeur à 50 pour l'instant.

Il me semble que dans une leçon précédente, nous avons utilisé cette propriété "Taille du champ", mais là on avait le droit entre Réel Simple, Entier Long et d'autres ?

Oui, ça c'était parce qu'il s'agissait de numérique . Dans le cas de champ de type texte, cette fois, on compte simplement le nombre de caractères :

Compris. Et si par exemple, il y avait déjà des données dans un champ Texte de longueur 50, et qu'on dit que maintenant c'est du texte plus petit (10 par exemple), qu'est ce qui se passe ?

Et bien, les données sont simplement tronquées. Nous allons faire un test. Ajoutez un nouveau champ Remarque, qui va contenir les remarques des clients (c'est à dire des annotations personnelles de style "Ce client a déménagé en 1996, et depuis, on ne l'a plus revu", ou encore "Attention : Il paye ses factures en retard !" - Une sorte de fourre tout), et définissez cette remarque comme du texte de longueur 4 : . Lancez la table en mode création, et essayez d'écrire ABCDE comme remarque pour William Clunton. Vous constatez que vous ne pouvez pas écrire cette lettre E (un caractère de trop). Maintenant, revenez en mode création, et réduisez encore la taille du champ Remarque cette fois à 2 caractères . Relancez la table en mode saisie de données. Access vous affiche alors ce message :

En gros il nous dit "Attention, la taille de la remarque était de 4 caractères... Donc, il y a peut-être des clients qui utilisent ces 4 caractères. Si vous réduisez encore cette taille, je vous préviens que tout ce qui dépasse, je coupe !"

Et oui... notre remarque ABCD va être coupée à AB. Dites Oui. Constatez qu'effectivement, votre remarque pour William Clunton a été réduite en AB sans autre forme de procès. Si vous aviez eu 50'0000 clients avec des remarques de 4 caractères, elles auraient été réduites à 2... et Pas question d'annuler !

Bien. Et si je revient en mode création pour remettre 4 caractères au champ remarque, elle va redevenir ABCD ?

Ben non ! Essayez : Revenez en mode création, et remettez 4 caractères pour ce champ remarque. Lancez la table en mode saisie de données... Constatez que la remarque est restée AB... A vous le remettre CD à la main : Faites-le.

Aïe ! Il faut être drôlement attentif avant de réduire la taille d'un champ !

Comme d'habitude avec Access... Il faut prévoir tous les cas de figures AVANT d'entrer des données... Sinon, c'est la cata !

En fait, pour être sûr de ne pas être embêté, je vais mettre tous mes champs texte à 255 caractères puisque c'est le maximum !

Non, parce que les tailles de champs fonctionnent exactement comme des places de parking. La place de parking, c'est la taille du champ, et la donnée qu'on met dedans (ABCD par exemple), c'est la voiture.

Vous savez pourquoi les places de parking ne font pas 255 mètres de long ? Ce serait pourtant plus pratique pour se parquer.. Plus besoin de faire de créneau !

Oui. mais qu'est-ce qu'on perdrait comme place... Les voitures prendraient une toute petite place dans cette grande place !

Et bien alors à ce moment-là, on n'a qu'à faire de places de parking de la longueur d'une voiture : 3 mètres

Et si jamais il y a quelqu'un qui a une grosse voiture, il ne peut pas s'y parquer alors ?

Exactement. C'est pourquoi les places de parkings sont juste un peu plus grandes que la taille d'une grosse voiture. Elles ne sont ni trop grande ni trop petites. C'est exactement comme ça qu'Access utilise la mémoire de votre disque dur : Si vous avez un champ Remarque qui contient 255 caractères, mais que les remarques sont longues de 5 ou 6 caractères, al ors, toute la place restante est réservée et perdue... On peut faire le calcul si vous avez 1000 clients :

Voyez ici : Les places réservées sont trop grandes par rapport au contenu :

Ici, les places sont bien ajustées. Oui, certaines places sont trop grandes, mais c'est normal, on ne peut définir qu'une taille de champ...

Donc... adaptez judicieusement les tailles... ça a d'autres avantages : Si par exemple, vous avez des clients suisses, et que vous voulez indiquer le canton en 2 lettres d'ou ils sont issus (BE, GE, ZH, etc...)... Mettez bien 2 caractères, comme ça vous économisez de la place, la base de données ne s'agrandit pas inutilement, et surtout, vous ne risquez pas de mettre une 3ème lettre par erreur !

Bon ceci dit, tout à fait entre nous, pour la question de place, avec les tailles phénoménales qu'atteignent les disques durs à l'heure actuelle, c'est un peu économiser pour le plaisr d'économiser parce qu'avant que vous n'arriviez à remplir votre disque dur, il vous faudra entrer des des dizaines de millions de clients, même avec des tailles de champs de 255...

Bien. Mais dans le cas des remarques, justement, on devrait pouvoir entrer plus de 255 caractères... Par exemple "Attention à ce client : Il commande régulièrement des CD de Jazz, mais il en renvoie la plupart en prétextant qu'il a fait une erreur de commande. Nous le soupçonnnons de commander des CD uniquement pour les copier sur cassette, et de nous les renvoyer". C'est long, comme remarque !

Oui. dans ce cas, on n'utilise plus du texte, mais du mémo : . Le mémo permet d'entrer du texte quasiment de longueur illimitée. Mais par contre, ça ralentit un peu le fonctionnement de la machine d'une part, et ça prend plus de place que du texte d'autre part.

Oui, mais avec la puissance actuelle des PC, et la taille des disques durs, ça m'est bien égal. Je ne m'en apercevrai même pas !

Absolument. Mais il y a un autre inconvénient : On ne peut pas trier les champs mémos ! Nous n'avons pas encore vu les tris de données. Nous allons en profiter pour les voir maintenant. Pour commencer, précisez que le champ Remarque soit en type de données Mémo, Remaniez ensuite votre table T_Client de manière à ce qu'elle ressemble à celle-ci :

Si vous avez envie de trier tous vos clients par ordre alphabétique, il vous suffit de cliquer avec le bouton droit de la souris sur n'importe quel nom de famille, et de choisir "Tri croissant" . Vous constatez alors que toute votre table est maintenant triée par ordre croissant des noms de famille, et que bien évidemment, les autres colonnes ne sont pas mélangées. Bill Clunton est toujours le président de US Computer, Michael Jordane est toujours basketteur, etc.. Je veux dire par là que quand on trie une colonne, les autres colonnes se remettent en ordre automatiquement.

Si vous voulez trier tous les clients par ordre alphabétique des prénoms : Il suffit de cliquer avec le bouton droit sur n'importe quel prénom, et choisir Tri Croissant.

Et si vous vouliez trier les clients de plus grand au plus petit, vous aurez sans doute deviné qu'il suffit de cliquer avec le bouton droit sur une taille, n'importe laquelle, et de choisir Tri Décroissant.

Attention donc : Vous ne pouvez pas trier par 2 colonnes en même temps : Si vous triez par nom, et ensuite par taille, les noms seront à nouveau en désordre. C'est logique.

Et maintenant, ce que je voulais vous préciser : Vous ne pouvez pas trier par remarque. Si vous essayez, vous consaterez que Tri croissant et Tri décroissant sont grisés ! C'est une spécificité interne inhérente à la conception d'Access.

Avec Access 2000, et Access 2000 seulement, il est possible de trier les champs Mémos dans les requêtes. Avec Access 97, pas question. Mais nous reviendrons sur les requêtes ultérieurement.

Bon, entre nous, quel est l'intérêt de trier par les remarques ? Il n'y en a pas vraiment.

Donc, en résumé, on utilise des champs mémos uniquement quand on a besoin d'entrer des choses très longues dans un champ ET qu'on a pas beoin de les trier ?

Exactement. Le champ Remarque, ou Observation est un excellent exemple. On utilise énormément le champ Remarque pour indiquer des précisions sur un client, ou n'importe quoi d'autre qui ne trouve pas sa place dans les autres champs.

Bon... Hem... On peut résumer ?

Les types de données doivent être judicieusement définis dès le départ. Il faut savoir si tel ou tel champ est numérique, ou texte au autre. Dans le cas ou il s'agit d'un texte, il faut savoir de combien plus ou moins on aura besoin de caractères. Il ne sert à rien d'en mettre trop, et il ne faut pas en mettre trop peu non plus.

Dans le cas ou on a besoin d'entrer du texte qui peut dépasser 255 caractères, alors on utilise un champ de type Mémo, qui permet des longueurs de texte quasiment illimitées, mais il faut se rappeler qu'on ne peut pas facilement trier ce champ.

Avez-vous bien compris ?

  1. Combien peut-on mettre de caractères dans un champ texte au maximum ?
    a. 5
    b. 255 ***
    c. 256
    c. illimité

  2. J'ai un champ texte de 50 caractères. Puis-je y mettre 428878 ?
    a. Oui *** (Texte admet aussi les chiffres)
    b. Non

  3. J'ai un champ qui s'appelle Titre, et qui va contenir soit Monsieur, soit Madame, soit Mademoiselle. Quelle va être la taille la plus dudicieuse de mon champ texte ?
    a. 6
    b. 8
    c. 12 *** (La taille du plus grand contenu possible : Mademoiselle)
    d. 50

  4. J'ai besoin d'un champ qui va s'appeler "NomJeuneFille", qui ne sera rempli que dans le cas de clientes mariées. Que vais-je utiliser comme type de données ?
    a. Texte de 30 caractères *** (255 est vraiment trop long)
    b. Texte de 255 Caractères
    c. Mémo
    d. Numérique, Réel Simple

Pour voir les solutions, il vous suffit de sélectionner le questionnaire ci-dessus : 3 petites étoiles *** apparaîtront en face des bonnes réponses.

Exercice

Créez une base de données qui s'appelle finilafumee.mdb. C'est un club qui rassemble les gens qui veulent arrêter de fumer. Vous allez y installer les informations suivantes dans une table des membres.:

  1. Le nom du membre
  2. Son prénom
  3. Un champ qui explique en 2 mots ses hobbies
  4. Son pays de naissance
  5. Combien de cigarettes il fume par jour
  6. L'age auquel il a fumé sa première cigarette
  7. Pourquoi il veut s'arrêter de fumer

L'exercice consiste à créer une table qui contiendra des noms de champs corrects, avec des types de données appropriés. Passez en revue les options de champs tels que les tailles, Légendes, et Valide Si.

A titre d'exemple, voici 2 personnes que vous pourrez entrer dans votre Table :

- Julien Giovanni. Il aime le tennis et la pêche en mer. Il est né en Angleterre, et actuellement il fume 3 paquets de cigarettes par jour (une soixantaine de cigarettes). Il ne se rappelle plus l'age de sa première cigarette, mais il veut s'arrêter car son médecin à tiré la sonnette d'alarme

- Martine Gonzalez aime la couture, la cuisine et les voyages. Elle vient de France. Elle fume environ 1 paquet quotidiennement (20 cigarettes). Elle a commencé à 14 ans, et elle veut s'arrêter car elle est enceinte.

Réfléchissez bien, et comparez votre résultat avec la solution de l'exercice que vous pouvez télécharger ici.

Si vous n'êtes pas tout à fait certain d'avoir suivi correctement toutes les étapes de cette leçon, vous avez la possibilité de télécharger ici la version de procd.mdb exactement dans l'état ou elle devrait être à la fin de cette leçon.

Aperçu de la leçon suivante

Lors de la prochaine leçon, nous allons étudier le type de données Date/Heure, et comprendre de quelle manière il fonctionne. Dans la foulée, vous apprendrez comment changer l'ordre des champs