Exemple n° 3 : une liste triée !

Vous l'avez peu être remarqué, dans nos deux exemples précédents les enregistrements sont classés dans l'ordre alphabétique du code de l'article. Cela ne s'est pas fait tout seul, nous avons dès le départ indiqué dans les propriétés de la « liste » le critère de tri utilisé en choisissant un champ séquentiel indexé de la table des articles.

Nous allons maintenant modifier notre état de façon à trier les articles par famille et dans l'ordre décroissant des chiffres d'affaires.

Définition du critère de tri

 

Tel quel l'état fonctionne déjà, mais présente peu de différence par rapport à l'exemple précédent. Nous allons donc lui apporter des modifications, afin d'imprimer par famille le total des chiffres d'affaires.

 

 

Résultat à l'exécution : page n° 1

 

Page n° 2 :

 

 

Page n° 3 :

 

 

Remarques :

- Le mécanisme est simple, la section « Debut1 » est imprimée chaque fois que le parcours arrive sur une nouvelle famille. La section  « Fin1 » est déclenchée pour chaque famille, après impression de la dernière fiche. Nous voyons ici un exemple de rupture (niveau 1) dépendant du critère de tri (DART.FAM).

- Les « Zones » à totaliser réagissent différemment suivant la section dans laquelle elles se situent. On voit bien dans cet exemple, que le cumul du champ DART.CAV tient compte de toutes les pages quand il est placé dans la section « pied », alors qu'il ne tient compte que des enregistrements de la famille en cours (critère de tri n°1), quand il est placé dans FIN1.

- Les ruptures de page sont comme toujours traitées automatiquement, avec en plus une notion de « sections solidaires » ; en effet, le système se débrouille pour qu'il n'y ait jamais une section « Debut1 » imprimée sur une page, alors que le premier « Corps » est sur la page suivante.