From FAQ Filemaker

Tutoriel-Filemaker: Rapports avec sous-totaux

<==Rubriques statistiques ^ Modèles Divers==>

Nous allons fabriquer un "rapport" FileMaker Pro, ou un "état", terme largement utilisé avec d'autres plate-formes de développement. De quoi s'agit-il ? De produire un document à imprimer, montrant l'état d'une situation à un moment donné. Comme cela paraît un peu vague, prenons un exemple concret : on veut obtenir un document reprenant l'état des élèves inscrits à l'école pour une année scolaire donnée, par année d'étude et par classe. Quelque chose comme :

Bien entendu, cela présuppose que l'on ait des classes, des élèves et des inscriptions... Si vous n'en avez pas encore, créez-en : 6 niveaux d'années, de 1 à 6, avec pour chaque niveau de 2 à 3 classes (p.ex. pour le 2e niveau, les classes 2A et 2B). Ensuite des élèves dans la table PER, et des inscriptions de ces élèves dans la table INS, en mettant dans le zkf_CLA le zkp de la classe et dans le zkf_PER le zkp de l'élève. Sinon, on ne verra rien...
Bon, comme nous sommes très sympas, voici notre fichier avec des inscriptions.
Autre détail : on suppose que la rubrique statistique "NbreIns_s" a été créée dans la table INS depuis la page précédente...

Un rapport est, basiquement, un modèle en liste. Il sera le plus souvent destiné à être imprimé, donc pas de couleurs, pas de frioritures, pas de barre de navigation, rien que du beau texte.
La grosse difficulté lorsqu'on attaque un rapport est de savoir sur quelle table ce rapport est basé : l'école ? Les classes ? Les personnes ? Les inscriptions ? La réponse est simple à trouver : outre les titres, sous-titres, sous-totaux, totaux, etc, de quoi est constituée chaque ligne du rapport ? Dans notre cas, vu qu'on veut l'état des inscriptions, chaque ligne représente une inscription... Donc, le rapport est basé sur la table INS ! Pas besoin d'aller chercher plus loin.

OK, ce point étant éclairci, attaquons. En mode Modèle, du menu FileMaker Pro, "Modèles", "Nouveau modèle/rapport". On choisi donc un modèle "Colonne/rapport" (modèle en liste) :

On veille bien à sélectionner l'ancre INS__, et on nomme le modèle INS_RapportClasses, par exemple. Lorsqu'on clique sur "Suivant", on ne choisi pas le modèle simple "Colonne/rapport" (ce serait trop facile!), mais l'option "Rapport comportant des données groupées", et on coche les options "Inclure les sous-totaux" et "Inclure les totaux généraux", car on veut connaître, outre le nombre total d'inscriptions, également le nombre d'inscriptions par classe et par niveau :

On clique sur "Suivant". Il s'agit ici de sélectionner les rubriques que l'on veut voir apparaître sur le rapport, sous-titres compris. Donc, dans notre cas, il faudra des données de la table CLAsse et de la table PERsonnes. Comme on est dans la table INS, qui est une table intermédiaire, les données sont essentiellement liées. C'est donc dans les OT liées ins_CLA__ et ins_PER__Eleves que l'on va pêcher les informations.Pour la CLAsse, nous allons chercher dans l'OT liée ins_CLA__. ::Annee (le niveau) et ::Nom (la classe) qui seront nos sous-titres, ou nos catégories de subdivisions. Pour la table PER, dans ins_PER__ ::Nom et ::Prenom :

(NB : il n'est pas nécessaire à ce niveau de sélectionner la rubrique statistique NbreIns_s de la table INS : cela se fera plus tard). Lorsque la sélection est terminée, on clique sur "Suivant" et la nouvelle fenêtre propose de "catégoriser" le rapport. En d'autres termes, de le subdiviser. On connait déjà nos subdivisions : par niveau (Annee) puis par classe (Nom). On sélectionne donc ces deux rubriques de l'OT ins_CLA (remarquez que la présentation tout à droite change également) :

Puis on clique sur "Suivant". FileMaker Pro demande sur quelle rubrique on veut trier le rapport. Dans notre cas, le réponse est très simple, on vient de le dire : par niveau puis par classe... Heureusement, FileMaker Pro a retenu ces deux rubriques par défaut ! On pourrait imaginer de rajouter une troisième clé de tri : par nom d'élève, par exemple :

On clique une fois de plus sur "Suivant". Un peu plus compliqué... FileMaker Pro nous demande d'organiser nos sous-totaux. Il faut d'abord choisir une rubrique statistique de la table INS, qui effectuera le calcul désiré. Dans notre cas, il s'agit du nombre d'inscriptions, donc on peut allègrement utiliser la rubrique statistique déjà créée NbreIns_s, que l'on sélectionne en cliquant sur "Définir" en dessous de "Rubrique de type statistique". D'ailleurs, c'est la seule rubrique que FileMaker nous propose de choisir :

Remarque : c'est en général à ce niveau que l'on perd les pédales : on a oublié de se créer la rubrique statistique ad hoc avant de démarrer la construction du rapport...

La rubrique "NbreIns_s" étant sélectionnée comme rubrique statistique, on définit qu'elle est utilisée pour notre plus petite catégorie, soit par classe (Nom), et qu'on veut ce sous-total après les lignes de données, soit "Apr groupe d'enreg.". On clique ensuite "Ajouter sous-total"

Avant de cliquer sur "Suivant", nous allons pouvoir définir la deuxième catégorie, par niveau (Annee), en sélectionnant la même rubrique statistique "NbreIns_s", la catégorie "ins_CLA__::Annee", et en demandant également de placer le sous-total après les enregistrements. On n'oublie pas de cliquer sur "Ajouter sous-total" :

On clique ensuite sur "Suivant", et la fenêtre qui apparaît, très semblable à la précédente, concerne maintenant le total général du rapport. Même opération : on sélectionne la rubrique statistique "NbreIns_s", on demande de placer le total général "A la fin du rapport", et on clique "Ajouter total général" :

En cliquant sur "Suivant", FileMaker Pro reprend le cours normal des choses : on choisit le thème "Standard". Sur l'écran suivant, on peut mettre le n° de page et la date en pied de page,

on ne crée pas de script, et on affiche en mode Modèle avant de cliquer le bouton "Terminer". Ouf ! Voilà à quoi cela ressemble :

Pas très lisible, mais en cliquant sur l'icône en bas à gauche, juste à côté de "Modèle", on place le nom des éléments à l'horizontale, ce qui est déjà beaucoup plus explicite. Que voit-on ?

On remarque que la rubrique statistique "NbreIns" se retrouve bien dans chaque catégorie et dans le sous-total.

Le rapport est ainsi terminé. Mais un rapport ne se génère pas par un coup de baguette magique : il faut lui dire ce qu'il doit faire ! C'est le moment d'introduire la triple règle d'or de génération d'un rapport :

1. On recherche. Quoi ? Les inscriptions de l'année scolaire en cours et le type "Elève" (sinon on pourrait avoir également des professeurs). Où ? Sur la rubrique "zkc_Annee" de la table INS et sur la rubrique "ins_PER__::Type" de la table PER. Accessibles sur le modèle INS_Fiche, tout bonnement. Comment ? Mode Recherche, on introduit p.ex. "2007-2008" dans la rubrique "zkc-Annee" et "Elève" dans la rubrique "ins_PER__::Type", puis on fait "Enter" :
2. On trie. Quoi ? Les mêmes clés de tri que celles définies dans l'élaboration du rapport, soit ins_CLA__::Annee et ins_CLA__::Nom. Comment ? En mode Utilisation, à partir du menu FileMaker Pro, "Enregistrements, "Trier les enregistrements", puis on choisit les deux rubriques dans l'OT ins_CLA__ (qui sont directement choisie dans la fenêtre si on effectue ce tri juste après notre recherche, et, surtout, juste après avoir créé notre modèle) et on clique sur "Trier" :
3. On passe sur le modèle INS_RapportClasses que l'on vient de créer (et qu'on n'a pas oublié de reclasser dans les modèles INS_...) et on se met en mode Prévisualisation :

C'est un peu brut de décoffrage, mais tout y est si on y regarde bien ! Si on nettoie tout ça et qu'on rajoute un peu de texte à gauche et à droite, quelques cadres et effets de présentations très simples, voici ce que ça donne finalement :

Déjà nettement mieux ! Mais la fin du rapport, en fonction du nombre de pages, peut ressembler à ceci :

Pour limiter les risques que la fin se retrouve isolée sur une page, on peut aussi décider que chaque année démarrerait une nouvelle page. Rien de plus facile. En mode modèle, on double clique sur le sous-récapitulatif qui nous intéresse (le premier contenant l'année), et on coche "Saut de page avant chaque occurrence".

On retourne en prévisualisation... Chaque nouvelle année (pas scolaire, mais de classe) démarre une nouvelle page !!!

Prêt à être imprimé ! Un dernier truc avant de refermer cette page : c'est bien beau, mais on aimerait un rapport nettement plus succinct. Finalement, à la réflexion, on ne désire pas le nom des élèves. Ce qui importe, c'est le nombre par classe, par niveau et pour l'école entière. Rien de plus simple. En mode modèle, dans le menu FileMaker Pro, on clique "Modèles", "Dupliquer le modèle". FileMaker crée un modèle appelé "INS_RapportClasses copie" et nous place dessus. Bien sûr, notre premier réflexe est d'aller dans "Modèles" => "Format de modèle" pour lui donner un nouveau nom. Par exemple, INS_RapportClasseSynth. Pendant que nous y sommes, on en profite pour le mettre au bon endroit dans l'ordre des modèles.
Toujours en mode Modèle, on supprime l'élément "Corps" du modèle et on décoche notre "Saut de page avant chaque occurrence", qui ne se justifie plus. C'est tout ! Voici ce que ça donne :

Bon, les noms de classes sont un peu redondants... on va donc retourner sur notre modèle pour supprimer le premier sous-récapîtulatif après tri sur ::nom. On fait un peu de ménage...

Et voilà le résultat en prévisualisation (suivant le contenu du fichier, bien sûr).


Cela ne dispense pas, pour générer ce dernier rapport, comme tous les autres de respecter la triple règle d'or :

RECHERCHER
TRIER
PREVISUALISER

Une dernière remarque sur les rapports. Nous, latins, avons l'habitude de présenter les données, puis les totaux. Comme nous venons d'ailleurs de le faire. C'est culturel, on explique (certains diraient, on palabre), puis on présente la conclusion.
Les anglos-saxons, plus pressés sans doute, ont l'habitude d'aller d'abord à l'essentiel, puis, si on veut les connaitre, de présenter les détails.
FileMaker est conçu dans cet esprit, ce qui explique que notre total final, s'il pourrait être isolé en tête de page, ne peut l'être en bas de dernière page.

Ouf, après cette longue partie, notre fichier a bien évolué. Nous allons pouvoir terminer sur les modèles avec quelques remarques diverses.

<==Rubriques statistiques ^ Modèles Divers==>
Récupéré sur http://cqfd-fmp.fr/index.php?n=Tutoriel-Filemaker.Rapports
Page mise à jour le 19 avril 2024 à 08h37