Leçon 40 : formulaires : filtres et tris. Sauvegarde et récupération des filtres en tant que requête

Temps nécessaire pour suivre cette leçon : Entre une demie heure et trois bons quarts d'heure

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 ProFormation.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

Aperçu de cette leçon

Dans cette leçon, nous allons voir que les filtres et les tris fonctionnent dans les formulaires exactement comme dans les tables (Leçon 19).
Rien de neuf, sauf que cette fois, nous allons apprendre à enregistrer nos filtres comme des requêtes, et les récupérer dynamiquement en tant que telles.

Sommaire

  1. Filtrer les données par formulaire : création du filtre
  2. Filtrer les données par formulaire : visualisation du résultat
  3. Filtrer les données par formulaire : application de plusieurs critères
  4. Filtrer les données par formulaire : enregistrer un filtre sous forme d'une requête
  5. Filtrer les données par formulaire : création d'une requête qui va servir de filtre

Avant de commencer, j'ai besoin d'un formulaire en mode tableau qui va ressembler à ceci :

Tiens, ça vous fera un excellent exercice de révision de la leçon précédente ! Enregistrez-le sous F_CelebritePourFiltre

Je ne peux pas le récupérer directement au lieu de le créer ?

Ah ah... vous avez la flemme. Je vois ! Pas de problème : Il est dans la base de données de cette leçon, tout simplement.

Bref, quelle que soit la méthode utilisée, vous devez l'avoir sous les yeux en mode saisie de données, comme le dessin plus haut (bon, vous, vous avez plus d'enregistrements sous les yeux évidemment, car j'ai réduit la fenêtre lorsque j'âi fait ma copie d'écran). Vous l'avez ?

Oui. C'est bon.

Bien. Vous vous rappelez bien de tout ce que nous avons vu à la leçon 19 ?

Normalement oui. Attendez-je vais quand même la reparcourir pour être sûr !

OK. Je vous attend.

Voilà. C'est bon !

Bien. Maintenant, nous allons aborder une technique plus puissante que le bouton droit de la souris pour "Filtrer par sélection", ou Hors sélection.

C'est une requête ça, non ?

Pas exactement. Oui et non. C'est surtout qu'on va pouvoir utiliser la puissance d'une requête directement dans notre formulaire.


Filtrer les données par formulaire : création du filtre

Cliquez sur l'icone "Filtrer par formulaire" :

Vous vous retrouvez dans votre même formulaire, mais avec plus aucun enregistrement :

C'est un peu le "masque de saisie" des critères de choix.

Par exemple, si vous désirez visualiser tous les hommes qui font du cinéma, choisissez Monsieur dans le Titre, et Cinéma dans le domaine. Access rajoute automatiquement des guillemets, comme dans les requêtes (Leçon 22) :


Filtrer les données par formulaire : visualisation du résultat

Et pour voir le résultat ?

Vous cliquez sur le petit entonnoir "Appliquer le filtre" : . Vous obtenez normalement 21 enregistrements : Les "Monsieur" qui font du "Cinéma".

Effectivement. Et c'est vraiment comme si j'avais utilisé le bouton droit de la souris "Filtrer pour" : "Monsieur" et aussi "Filtrer pour" : "Cinéma" !

C'est strictement la même chose. Disons que le bouton droit est plus rapide, et ce nouveau système est plus convivial.

Et si j'avais voulu tous les "Monsieur" qui font du cinéma ou de la politique ?


Filtrer les données par formulaire : application de plusieurs critères

Dans ce cas, cliquez sur , et regardez en bas de l'écran : Vous avez un onglet Rechercher (c'est l'onglet actuel de recherche) et un onglet OU : . Cliquez dessus. . Maintenant, choisissez Politique dans la zone Domaine :

OK. Je lance le filtre en cliquant sur ... Mais... C'est bizarre, j'obtiens des gens sans titre (Michael Gorbatchev) et qui fait de la politique, et, plus grave, j'obtiens Margaret Thatcher qui n'est pas un homme pourtant...

Eh oui, c'est que dans l'onglet OU , il fallait également REPETER que vous voulez les Monsieur, sinon, il donne les Monsieur qui font du cinéma et les ??? qui font de la politique (Monsieur, madame, mademoiselle, ...)

OK. Je vais corriger ça.... Voilà ! ça marche : J'obtiens bien 28 enregistrements, tous corrects !
Mais alors si je voulais aussi par exemple, je ne sais pas moi, heu... Tiens ben les mademoiselles qui font de la chanson je ferais...

... Eh oui, vous cliquez sur le nouvel onglet OU qui vient d'apparaître : (le 3ème OU apparaît quand vous cliquez sur le 2ème OU, celui qui est en blanc), et vous choisissez "Mademoiselle" et "Chanson"

J'ai effectivement 30 enregistrements, soient 2 de plus : Britney Spears et Jennifer Lopez !

Attention : Access mémorise discrètement (Sournoisement ?) votre dernier filtre.

C'est à dire que si vous fermez votre formulaire, ou même la base de données, ou MEME Acecss lui-même, et que vous revenez dans votre base de données, dans le formulaire, il est possible que le filtre soit encore actif (vous avez 30 enregistrements au lieu de 101), ou il est possible qu'il ait été désactivé... J'ai constaté que ce n'était pas toujours l'un ou l'autre. Dans tous les cas, vous pouvez retourner à votre filtre qui n'a pas été effacé avec .

Vous connaissez maintenant un mode de plus :

On peut désactiver un filtre sans le détruire ?

Oui. En mode saisie de données, cliquez sur le petit entonnoir : , ca va donner l'impression qu'il n'est plus enfoncé. Pour réactiver le filtrer, re-cliquez sur

Et peut-on carrément détruire le filtre sans avoir besoin d'effacer à la main en mode filtre "Monsieur", puis "Mademoiselle", puis "Politique" etc. ?

Oui. En mode Filtre (Cliquez sur , donc), cliquez sur (Effacer la grille). Maintenant, quand vous cliquez sur , il n'y a plus de filtre du tout : les 101 enregistrements sont présents.


Filtrer les données par formulaire : enregistrer un filtre sous forme d'une requête

C'est bien comme fonction : demandez sous forme de filtre de formulaire les gens dont le nom commence au moins par la lettre R (>"R"), et qui gagnent moins de 10000 francs par mois (Rappel à la leçon 22).

. Lancez le filtre, vous devriez obtenir 3 enregistrements (Julia Roberts, Michel Simon et Ingemar Stenmark).

Effectivement.

Revenez en mode filtre avec . Cliquez ensuite sur (Enregistrer comme requête). Appelez-là R_CelebriteFinAlphabetPauvre.

Ah d'accord ! Et on peut la voir dans la liste des requêtes ?

Mais oui. C'est une requête toute simple, qu'on a fabriqué non pas avec le QBE (Query By Example - Générateur de requête), mais directement depuis le formulaire. Fermez votre formulaire, et allez voir dans vos requêtes. Vous la voyez ?

Oui. Et je peux même y accéder en mode création : !

Puissant, n'est-ce pas ?


Filtrer les données par formulaire : création d'une requête qui va servir de filtre

On peut faire tout aussi bien l'inverse : c'est à dire qu'on peut tout à fait créer une requête avec le générateur de requête que vous connaissez bien (Requête/Nouvelle requête), et ensuite appliquer cette requête directement comme un filtre de formulaire.

Marche à suivre :

  1. Fermez cette requête
  2. Créez une nouvelle requête simple, basée sur T_Celebrite
  3. Demandez les hommes vivants qui possèdent une remarque *:
               * Constatez que le champ Remarque n'existe pas dans le formulaire F_CelebritePourFiltre : Je l'ai fait exprès
  4. Enregistrez cette requête sous "R_CelebriteHommeVivantAvecRemarque"
  5. Exécutez-là pour vous assurer que vous ayez bien 22 enregistrements, tous corrects (Correspondants à ce qui était demandé)
  6. Fermez cette requête
  7. Ouvrez votre formulaire F_CelebritePourFiltre
  8. Allez en mode Filtre
  9. Cliquez sur (Charger à partir d'une requête)
  10. Choisissez votre requête R_CelebriteHommeVivantAvecRemarque
  11. Cliquez sur OK
  12. Ajoutez le champ Remarque dans votre formulaire (Sinon le filtre Remarque Est Pas Null ne sera pas pris en compte)
  13. Appliquez le filtre

Voilà : vous avez 22 enregistrements, les mêmes que dans la requête bien sûr.

Tout ce qui était expliqué dans cette leçon prenait pour base un formulaire en mode tableau, mais ça marche de manière strictement identique pour les formulaires en mode Colonne (un enregistrement par écran). Mais dans ce cas, il faut évidemment se balader d'enregistrement en enregistrement pour constater que le filtre s'est correctement appliqué.

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

Il est possible de filtrer les données dans les formulaires de la même manière que dans les tables : avec le bouton droit de la souris.
Il est d'autre part possible de créer des requêtes de toutes pièces. Nous avons vu qu'il est aussi possible de passer en mode "Filtre" dans le formulaire, et d'extraire ainsi les enregistrements avec plus de souplesse.
On peut ensuite enregistrer ses filtres comme des requêtes directement en mode filtre du formulaire. Il est également possible de récupérer une requête extérieure comme filtre de formulaire.

Avez-vous bien compris ?

  1. Les filtres de formulaires fonctionnent
    a. Avec les formulaires en mode tableau seulement
    b. Avec les formulaires en mode colonne seulement
    c. Avec les formulaires en mode tableau ou en mode colonne ***

  2. Lorsqu'on crée une requête qui sera ensuite destinée à être récupérée comme filtre
    a. Elle doit être enregistrée comme une requête spéciale de type Filtre de formulaire
    b. Elle doit être enregistrée sous le nom proposé (Requête1)
    c. On peut lui donner n'importe quel nom ***

  3. On peut demander un tri en mode Filtre de formulaire
    a. Oui
    b. Non, on doit le demander en mode saisie de données ***

  4. Le filtre est détruit dès qu'on ferme le formulaire qui en contenait un :
    a. Automatiquement
    b. Pas du tout. Il reste en mémoire jusqu'à ce qu'on demande explicitement sa suppression ***

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

L'exercice consiste à créer 2 filtres depuis votre formulaire F_CelebritePourFiltre :

- La première contiendra les femmes qui ne font pas de sport: Vous exporterez ce filtre comme requête : R_FemmeNonSportive (Il y en a 24)
- La 2ème contiendra les sportifs/sportives qui sont nés avant l'année 1960 et les gens décédés qui font du cinéma : Vous exporterez ce filtre comme requête : R_VieuxEtDecedeCinema (Il y en a 14)

Quand vous aurez effectué, appliqué et enregistré cette 2ème requête, vous importerez la première requête en tant que filtre dans votre formulaire, histoire de revoir les femmes non-sportives.

Téléchargez la solution de l'exercice ici, qui n'est autre que ProFormation à la fin de cette leçon

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 ProFormation.mdb exactement dans l'état ou elle devrait être à la fin de cette leçon.

Avez-vous une question technique concernant cette leçon ? Cliquez ici !
Une remarque sur cette leçon ? Un problème ? Une erreur ? une ambiguité ? Soyez gentil de m'en informer