Vous êtes sur la page 1sur 19

Construire un sous-tat avec Crystal Reports

par Adrien Artero (adrien-artero.developpez.com)

Date de publication : 15 avril 2008 Dernire mise jour : 15 avril 2008

Ce tutoriel a pour but de vous montrer comment dbuter avec les sous tats sur le logiciel Crystal Reports

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

Introduction I - Pourquoi un sous-tat ? II - Ralisation de l'tat III - Conception du sous-tat III-A - Cration du sous-tat III-B - Paramtrage du sous-tat III-C - Mise en forme du sous-tat IV - Finition de l'tat Conclusion Liens utiles Remerciements

-2Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

Introduction
Ce tutoriel va se baser sur une connexion la base de donnes de l'ERP X3 en se basant uniquement sur les champs et tables standards.

Pour l'exemple que nous suivrons tout au long de ce tutoriel, nous allons concevoir un tat de tous les mouvements de stock pour une priode donne. Pour avoir un stock initial, il va nous falloir calculer tous les mouvements de stocks qui ont eu lieu avant la priode donne.

Je vais concevoir assez rapidement la premire partie de l'tat. Je vous suggre donc de lire avant le tutoriel de Fleur Anne Blain, Initiation Crystal Reports XI Si vous souhaitez dcouvrir Crystal Reports 2008, il vous est possible de tlcharger une version d'valuation de 30 jours cette adresse : Tlchargement Crystal Reports 2008

-3Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

I - Pourquoi un sous-tat ?
Un sous-tat est un second niveau d'tat. Il permet de calculer ou lister des donnes qui ne correspondent pas aux critres de slection du premier niveau. Pour prendre l'exemple qui sera dvelopp dans cet article, il est nssaire de faire un sous-tat. Nous souhaitons lister les mouvements de stocks pour une priode donne. Nous allons donc mettre des bornes aux enregistrements afin de ne rcuprer que ceux qui nous intressent. En faisant ceci, il nous est impossible de savoir quels sont les mouvements antrieurs et donc de connatre le stock initial. Il faut donc raliser un sous-tat qui pourra calculer les mouvements antrieurs la priode. L'inconvnient majeur du sous-tat est le temps de traitement. S'il est rpt plusieurs fois dans l'tat, ce dernier mettre beaucoup plus de temps se charger compltement. De mme, lorsque plusieurs sous-tat sont utiliss, le temps d'affichage devient important. Un seul niveau de sous-tat est possible, c'est dire qu'il est impossible d'insrer un sous-tat dans un sous-tat. Les utilisateurs de Crystal Reports esprent que dans les prochaines versions, ce critre soit pris en compte. Il est galement possible de se servir de sous-tats pour les en-ttes ou pieds de page de documents (logos d'entreprise). Au lieu de configurer sur chaque tat, l'emplacement et la taille du logo dans l'en-tte ou le pied de page, il est possible de crer un tat sans table, et d'y insrer le logo. Une fois paramtr, il est possible d'enregistrer cet tat et de le r-insrer en tant que sous-tat dans vos documents. Voyons comment se conoit un sous-tat.

-4Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

II - Ralisation de l'tat
Pour concevoir cet tat, nous n'avons besoin que de 2 tables : ITMMASTER (table article) et STOJOU (table des mouvements de stocks)

Afin d'tre tranquille par la suite, on va tout de suite crer 4 paramtres : datedeb , datefin , articledeb et articlefin

Nous allons passer l'expert slection :

Le champ code article s'appelle ITMMASTER.ITMREF_0 et le champ date s'appelle STOJOU.IPTDAT_0 (date d'imputation du mouvement).

Ainsi, on va filtrer sur les bornes articles que l'on souhaite et les dates que l'on souhaite dans l'expert slection :

{ITMMASTER.ITMREF_0} in {?articledeb} to {?articlefin} and {STOJOU.IPTDAT_0} in {?datedeb} to {?datefin}

Crons maintenant un groupe par code article (ITMMASTER.ITMREF) l'aide de l'expert groupe :

-5Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

Nous pouvons maintenant passer la cration du sous-tat.

-6Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

III - Conception du sous-tat


Notre but est de dterminer le stock au dbut de la priode demande. Pour cela, nous allons crer un sous-tat stock_ini que nous allons placer dans l'en-tte du groupe Article.

III-A - Cration du sous-tat


Pour cela, Fichier / Insertion / Sous-tat

Il est possible de choisir un tat dj existant mais dans notre exemple, nous allons le crer. On saisit le nom stock_ini puis nous choisissons Assistant Etat

Dans ce sous-tat, nous allons reprendre les mmes tables et champs que le rapport principal car les infos sont les mmes, il n'y a que la date qui varie.

-7Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

Cliquons sur suivant. Il est possible ici de dj slectionner les champs que nous allons inclure dans le sous-tat : Il suffit pour cela de cliquer sur le champ disponible dans la partie de gauche, de cliquer sur la flche qui va vers la droite afin de slectionner le champ voulu.

La premire flche ajoute un champ dans le sous-tat La premire double flche ajoute la totalit des champs dans le sous-tat La seconde flche retire un champ du sous-tat La seconde double flche retire tous les champs du sous-tat

On obtient ainsi pour notre exemple :

Cliquons sur suivant. Tout comme si l'on cr un tat avec l'assistant, nous dfinissons les critres de notre sous-tat. Cliquons sur Terminer. Nous revenons la fentre d'insertion du sous-tat. Cette fois-ci, le bouton OK n'est plus gris. Cliquons donc dessus !

-8Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

Il nous suffit maintenant de dposer le sous-tat l'endroit dsir (en-tte de groupe pour ce qui nous concerne).

Et ainsi :

Notre sous-tat stock_ini est cr.

Il faut encore maintenant le relier l'tat principal, dfinir ses paramtres, ses critres, etc.

III-B - Paramtrage du sous-tat


Il va falloir dans un premier temps relier les 2 tats.

Il nous faut relier le code article : ITMMASTER.ITMREF lui-mme entre les 2 tats. Pour la date, il faut crer un paramtre dans le sous-tat afin de pouvoir dterminer la slection des enregistrements par la suite. Il n'est pas ici question de bornes car nous allons slectionner tous les enregistrements dont la date se situe avant la priode dtermine prcdemment.

Nous crons donc dans le sous-tat un paramtre dateref.

Nous retournons alors dans l'tat principal pour crer ces liens.

Il faut cliquer droit sur le sous-tat puis Changer les liens du sous-tat

-9Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

La fentre suivante est rpartie en 4 lments principaux. Il est capital de les maitriser car si le sous-tat est mal reli, les informations renvoyes seront incohrentes.

Champs disponibles : Ce sont tout simplement les champs de l'tat principal qui peuvent tre utiliss pour la liaison Champs auxquels relier : Ce sont tous les champs que nous allons prendre dans l'tat principal pour la liaison Champ de paramtre de sous-tat : C'est le paramtre du sous-tat qui va servir la liaison. Il est cr automatiquement si l'on prend un champ standard Slectionner des donnes dans le sous-tat : Ce sont les champs standards du sous-tat qui vont nous servir la liaison.

Dans l'exemple prcdent, nous avons slectionner le champ ITMMASTER.ITMREF en se positionnant dessus puis en cliquant sur la flche. Par dfaut, Crystal Reports va prendre automatiquement le champ auquel il y a le plus de chance qu'il soit reli en fonction du type de champ, du nom de champ, etc.

Le bon champ a t slectionn directement pour notre exemple. On voit ainsi que le champ de paramtre du sous-tat qui sera utilis s'appelle ?Pm-ITMMASTER.ITMREF_0

- 10 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

Nous pouvons maintenant, dans le 1er lement de l'cran, slectionner le champ de paramtre ?datedeb afin de le relier notre paramtre de sous-tat ?dateref. Une fois positionn dessus, nous cliquons sur la flche afin de le slectionner, puis nous dcochons Slectionner des donnes dans le sous-tat (nous ne prenons pas un champ standard mais un paramtre).

Ainsi, au niveau des paramtres de sous-tat utiliser, nous slectionnons dans le menu droulant, ?dateref

En allant vrifier les paramtres du sous-tat, on constate que le paramtre ?Pm-ITMMASTER.ITMREF_0 est bien cr.

Allons maintenant dans l'expert slection. On constate que le champ ITMREF doit tre gal au paramtre nouvellement cr.

- 11 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

Il va falloir nanmoins dterminer que nous souhaitons tous les enregistrements dont la date est antrieure ?dateref. Nous affichons alors la formule afin d'entrer le code suivant :

{ITMMASTER.ITMREF_0} = {?Pm-ITMMASTER.ITMREF_0} and {STOJOU.IPTDAT_0} < {?dateref}

Nous allons pouvoir maintenant intgrer les donnes que l'on souhaite dans le sous-tat.

III-C - Mise en forme du sous-tat


Afin de pouvoir utiliser les donnes de notre sous-tat dans l'tat principal, il va falloir "stocker" les donnes dans des variables partages. Partager les variables signifie qu'elles seront partages entre les 2 tats.

Par prcaution, il faut en en-tte de sous-tat, initialiser la variable (lui donner la valeur 0) afin qu'en cas de non enregistrement, les donnes renvoyes soient errones. Nous crons donc une formule @init que nous plaons en en-tte de sous-tat et dans laquelle nous crivons le code suivant :

stoini reprsentera notre stock initial et stofin notre stock final.

shared numbervar stoini; stoini:=0

Nous avons dtermin que pour le moment notre stock initial tait de 0. Pour connaitre notre rel stock initial la date de rfrence, nous allons cumuler tous les mouvements de stocks.

Pour cela, nous crons une formule @stoini o l'on ajoute notre variable la somme des mouvements de stocks et nous plaons cette formule en pied d'tat.

shared numbervar stoini; stoini:=stoini+sum({STOJOU.QTYSTU_0})

Pour l'instant, notre sous-tat ressemble ceci :

- 12 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

Afin de gagner de l'espace au niveau de l'affichage, il est possible de supprimer toutes les sections o l'on ne souhaite pas voir les donnes.

Pour voir quoi correspond cette valeur, il est bon d'ajouter un objet texte :

Nous en avons maintenant fini avec le sous-tat. Il ne reste plus qu' finaliser l'tat principal et c'est fini.

Revenons alors dans l'tat principal.

- 13 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

IV - Finition de l'tat
Par dfaut, Crystal Reports encadre le sous-tat. Nous allons enlever ces bordures dans un souci d'esthtique. Pour cela, il faut cliquer droit sur le sous-tat puis Mettre en forme le champ.

Dans l'onglet Bordure, nous enlevons tous les traits.

Nous pouvons inclure un objet texte avec la rfrence de l'article afin de la placer en en-tte de groupe. Nous obtenons ainsi :

Nous allons maintenant lister les mouvements de stocks de la priode en ajoutant la date et la quantit. Afin que les dates soient dans l'ordre chronologique, nous crons un deuxime groupe STOJOU.IPTDAT_0 dont nous masquons l'en-tte et le pied (le groupe ne sous sert qu' afficher les donnes dans l'ordre). Nous obtenons :

- 14 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

Nos mouvements tant lists, il va falloir les additionner au stock initial afin d'obtenir le stock final.

Nous crons pour cela, une formule stofin que nous plaons en pied de groupe et o nous mettons le code suivant :

shared numbervar stoini; shared numbervar stofin; stofin:=stoini+sum({STOJOU.QTYSTU_0},{ITMMASTER.ITMREF_0})

Ici encore, nous plaons un objet texte pour avoir une information sur la donne. Nous avons donc :

Nous avons fini notre tat, il ne nous reste plus qu' visualiser le rsultat :

- 15 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

Conclusion
Nous avons vu ici tous les points principaux de la ralisation d'un sous-tat. Les maitriser s'avre souvent utile dans la mesure o ils permettent d'aller encore plus loin dans l'exploration des donnes en contournant des critres de slection dtermins la base. Nous avons ici men bien un exemple simple. Il est toutefois possible de raliser des sous-tats plus complexe, tant par les jointures que par des conditions d'affichage de ce sous-tat.

- 16 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

Liens utiles
Forum d'entraide Crystal Reports FAQ Crystal Reports

- 17 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

Remerciements
Je remercie Fleur-Anne Blain pour l'aide et les corrections qu'elle m'a apport pour la ralisation de cet article et say pour ses remarques constructives.

- 18 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Construire un sous-tat avec Crystal Reports par Adrien Artero (adrien-artero.developpez.com)

- 19 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://adrien-artero.developpez.com/

Vous aimerez peut-être aussi