par Manuel Sergent Date de publication : 11/12/2006 Dernire mise jour : Cet article explique comment crer et mettre en forme un tat Crystal Reports simple avec Visual Studio .NET. Un article similaire rdig par David Pdehourcq vous prsente plus en dtails le fonctionnement d'un tat et le dploiement de ce dernier dans une application windowsform. L'objectif de mon article est de prsenter une manire lgrement diffrente de remplir un tat et d'aller un peu plus loin dans sa mise en forme. Les codes prsents dans cet article ont t conu avec Visual Studio .NET 2003 I - Cration de la Windows Form. II - Ajout de la source de donnes l'tat. III - Visualisation de l'tat IV - Mise en forme de l'tat. IV-A - Exemple : couleur de la police. IV-B - Cration d'un groupe. V - Insertion de diagramme VI - Le controle CrystalReportViewer Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 2 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ I - Cration de la Windows Form. Le but de ce chapitre est d'obtenir une windows form simple qui ressemble : Vous avez donc besoin des lments suivant : Un bouton nomm "btnChargement" dont l'vnement Click nous servira remplir la source de donnes de notre tat et d'afficher ce dernier. Un CrystalReportViewer nomm "crvETAT" qui contiendra notre tat Crystal Report. Un SQLDataAdapter (dans cet article j'utilise une source de donnes SQL Server 2000) pour crer notre requte sur la base de donnes SQL Server nomm "SqlDa". Un DataSet qui contiendra les donnes afficher dans l'tat nomm "DataSet1". Un objet SQLConnection pour se connecter notre base SQL nomm "SqlConnection1". Un lment Crystal Report nomm "ETAT" Le design de cette form tant trs simple, nous n'allons pas nous tendre dessus. Quelques prcisions tout de mme. Dans cet article nous allons afficher dans notre tat une liste de route avec un type. Deux types sont possibles "SUB" et "CS". Nous aurons donc une table SQL nomm "Tbl_Type_Route" avec les champs suivant Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 3 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ "Route_id" et "Type_Route". La requte de notre SQLDataAdapter sera donc trs simple : SELECT Route_id, Type_Route FROM Tbl_Type_Route Pour crer le dataset, clic droit sur notre SQLDataAdapter et "gnrer le groupe de donnes", je ne vous apprends rien ici. L' ajout de l'tat au projet se fait de la mme manire que pour ajouter une form (clic droit sur le projet - ajouter un nouvel lment - tat crystal report). Ajouter donc votre tat et nomm le "ETAT". Quand l'ajout sera effectif, prcisez que vous utilisez un tat vide. Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 4 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ II - Ajout de la source de donnes l'tat. Pour obtenir ceci : Dans l'explorateur de champs, faites un clic droit sur "Champs de base de donnes" - "Ajouter / Supprimer une base", dans "donnes du projet", choisissez "ADO.NET Datasets", puis grce au bouton flch, basculez notre DataSet dans le partie "Tables slectionnes". Ensuite pour placer nos donnes sur l'tat, il suffit de raliser une petite action de glisser-dplacer de nos champs "Route_id" et "Type_Route" dans la zone dtails de notre tat, nous obtenons ceci : Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 5 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ Petite prcision sur les diffrentes zones d'un tat : En-tte de l'tat : tout ce qui sera dans cette zone sera prsent que sur la premire page de l'tat. En-tte de page : tout ce qui sera dans cette zone sera prsent sur chaque pages de l'tat. Dtails : tout ce qui sera dans cette zone se reproduira autant de fois que le nombre de "Route_id" que nous avons obtenu grce notre requte. Pied de page de l'tat : tout ce qui sera dans cette zone sera prsent que sur la premire page de l'tat. Pied de page : tout ce qui sera dans cette zone sera prsent sur chaque pages de l'tat. Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 6 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ III - Visualisation de l'tat Il est maintenant temps de faire un premier test et de visualiser les donnes dans l'tat. Pour cela nous devons coder l'vnement Click de notre bouton : Try Cursor.Current = Cursors.WaitCursor ' ici nous remplissons notre DataSet DataSet11.Clear() SqlDa.Fill(DataSet11) ' ici on cre une instance de notre tat, nous prcisons que ca source est notre DataSet 'et que l'on veut l'afficher dans notre crystalreportviewer Dim report As New ETAT report.SetDataSource(DataSet11) crvETAT.ReportSource = report Cursor.Current = Cursors.Default Catch ex As Exception MessageBox.Show(ex.Message) End Try Et voila le rsultat : Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 7 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ Nous Pouvons voir nos donnes dans l'tat, c'est bien, mais avec une petite mise en forme, c'est mieux ! C'est l'objet du prochain chapitre. Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 8 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ IV - Mise en forme de l'tat. IV-A - Exemple : couleur de la police. Revenons notre tat en mode conception, et faisons un clic droit sur notre champ "Route_id" dans notre zone dtails, puis choisissons "mettre en forme", cette fentre apparait : Nous remarquons plusieurs onglets ou nous pouvons entre autre changer la couleur de police ou mettre des bordures. Pas besoin de s'tendre ici. Ce qui est intressant dans cette fentre c'est la prsence d'un trange Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 9 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ C'est l que c'est intressant, ce bouton va nous permettre de changer la proprit correspondante de notre champ "Route_id" de manire dynamique. Un petit exemple, imaginons que nous voulions mettre en rouge toutes les routes qui sont de types "SUB". Cliquez donc sur le bouton correspondant la couleur de la police. Cette fentre apparait : En haut de la fentre une zone droulante nous permets de choisir la syntaxe Basic, choisissez la donc. Les trois fentres du haut nous prsentent les champs de notre source de donnes, des constantes, des fonctions, des structures de commandes... afin d'viter de tapper tout le code la main. Nous allons donc programmer la proprite "Font_Color" de notre champ "Route_id" pour le mettre en rouge pour un certain type. Pour cela double cliqu sur la structure de commande du IF. Une fois que le curseur est dans le IF, double cliqu sur notre champ "Type_Route". Vous voyez la formule prendre forme dans la fentre du bas. Tappez ' = "SUB" ', puis dans le Then, tappez le mot cl "Formula = " et dans la fentre du millieu, choissisez la couleur Rouge. Le mot cl "Formula" fait rfrence la proprite sur laquelle nous travaillons, ici la Font_Color de notre champ "Route_id". Notre formule est donc prte et veux dire : Si Type_Route = "SUB" Alors Font_Color = Rouge ! Vous pouvez vrifier la syntaxe de notre formule en cliquant sur le bouton et enregistrer puis quitter en cliquant sur le bouton Faisons un test et relanons notre application, nous avons bien nos routes de type "SUB" apparaitre en rouge : Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 10 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ IV-B - Cration d'un groupe. Un groupe dans un tat va nous permettre de regrouper et d'ordonner les donnes selon certains critres. Nous allons dans cet exemple regrouper les routes par type de route. En affichant d'abord les CS routes puis les SUB. La cration d'un groupe se ralise dans la partie design de notre tat, dans l'onglet "explorateur de champs", faites un clic droit sur "Champ nom du groupe" puis "nouveau", nous voyons apparaitre cette fentre : Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 11 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ Choisissez donc le champ "Type_Route" et "dans l'order croissant" pour voir apparaitre les "CS" puis les "SUB". Vous voyez alors la zone de groupe sur notre design et si on relance notre application nous avons ceci : Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 12 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ Nous voyons apparaitre gauche nos groupes, ici nos types "CS" et "SUB" dans l'ordre croissant (alphabetique ici). Quand on clique sur l'un des groupes, une zone rouge nous y amne directement. Il est noter que nos zones d'tat (groupe, dtails, pied de page...) peuvent galement faire l'objet de mise en forme. En faisant un clic droit sur n'importe quelle section et en choisissant "mettre en forme une section", nous voyons cette fentre : Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 13 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ Vous pouvez par exemple en slectionnant la section dtails puis en validant l'option "Nouvelle page aprs" avoir une nouvelle page aprs chaque zone de dtails. C'est dire que l'on aura une route par page. Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 14 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ V - Insertion de diagramme Le but de ce chapitre est d'insrer un diagramme pour reprsenter nos donnes de manire plus synthtique. Voic une capture d'cran de ce que nous allons pouvoir obtenir trs rapidement : Nous allons insrer notre diagramme dans l'en-tte de l'tat. Faites donc un clic droit dans cette partie de l'tat puis "insertion" - "diagramme". Voici les tapes successives pour la cration de notre diagramme : Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 15 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ La premire chose faire est de choisir le type de notre diagramme, prenons le type sectoriel (ou camember). Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 16 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ C'est ici que nous allons prsicer que nous voulons la rpartition des routes selon les types de routes. Nous disons donc que sur un changement du type de route, nous calculons le nombre de routes. Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 17 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ Dans l'onglet texte, nous prcisons uniquement le texte mettre pour le titre, sous-titre... de notre diagramme. Le deuxime diagramme prsent sur notre image au dbut du chapitre a t conu exactement de la mme faon sauf que nous avons choisis un autre type de diagramme ! Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 18 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/ VI - Le controle CrystalReportViewer Nous allons ici parcourir quelques proprits du controle crystalReportViewer: DisplayGroupTree : permet de faire disparaitre la colonne blanche gauche de l'tat. Il est inutile lorque votre tat ne contient pas de groupe. DisplayToolBar : permet de faire disparaitre totalement la barre d'outils de l'tat. L'utilisateur n'aura alors plus accs l'impression, au zoom ... ShowCloseButton : permet de faire disparaitre le bouton "fermer" de l'tat. Il est bien souvent inutile ShowExportButton : cette proprite est trs interessante. Elle vous permets trs facilement d'exporter votre tat au format pdf, xls, doc, rtf d'un simple clic ! ShowGoToPageButton : ce bouton permets d'acceder directement une page de l'tat en tappant son numro ShowGroupTreeButton : ce bouton n'est plus ncessaire si vous dcidez de faire disparaitre le group tree ShowPageNavigateButton : permet d'afficher les boutons flechs pour se dplacer dans l'tat, vous pouvez naviguer de pages en pages ou vous rendre directement la premire ou la dernire page ShowPrintButton : trs utilse, permet d'imprimer votre tat d'un simple clic ShowRefreshButton : permet de rafraichier l'tat, pour ma part je ne l'ai jamais utilis ShowTextSearchButton : permet de rechercher un mot dans l'tat ShowZoomButton : permet de rgler le zoom de l'tat. par dfaut le zoom sera de 100%, vous pouvez changer le zoom par dfaut avec le code : VotreCrystalReportViewer.Zoom(2) (ici on affiche toute la page de l'tat) Cration et mise en forme d'tats Crystal Reports avec VS .NET par Manuel Sergent - 19 - Copyright 30/08/2006 - Manuel Sergent. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts. http://hulk.developpez.com/tutoriel/crystalreport/