crystal report

19
Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent Date de publication : 11/12/2006 Dernière mise à jour : Cet article explique comment créer et mettre en forme un état Crystal Reports simple avec Visual Studio .NET. Un article similaire rédigé par David Pédehourcq vous présente plus en détails le fonctionnement d'un état et le déploiement de ce dernier dans une application windowsform. L'objectif de mon article est de présenter une manière légérement différente de remplir un état et d'aller un peu plus loin dans sa mise en forme. Les codes présentés dans cet article ont été conçu avec Visual Studio .NET 2003

Upload: amine-raji

Post on 24-Jun-2015

143 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Crystal Report

Création et mise en forme d'états CrystalReports avec VS .NET

par Manuel Sergent

Date de publication : 11/12/2006

Dernière mise à jour :

Cet article explique comment créer et mettre en forme un état CrystalReports simple avec Visual Studio .NET. Un article similaire rédigé par DavidPédehourcq vous présente plus en détails le fonctionnement d'un état et ledéploiement de ce dernier dans une application windowsform. L'objectif demon article est de présenter une manière légérement différente de remplir unétat et d'aller un peu plus loin dans sa mise en forme. Les codes présentésdans cet article ont été conçu avec Visual Studio .NET 2003

Page 2: Crystal Report

I - Création de la Windows Form.II - Ajout de la source de données à l'état.III - Visualisation de l'étatIV - Mise en forme de l'état.

IV-A - Exemple : couleur de la police.IV-B - Création d'un groupe.

V - Insertion de diagrammeVI - Le controle CrystalReportViewer

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 2 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 3: Crystal Report

I - Création de la Windows Form.

Le but de ce chapitre est d'obtenir une windows form simple qui ressemble à çà :

Vous avez donc besoin des élèments suivant :

• Un bouton nommé "btnChargement" dont l'événement Click nous servira à remplir la source de données denotre é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 données SQL Server 2000) pour créer notre

requête sur la base de données SQL Server nommé "SqlDa".• Un DataSet qui contiendra les données à afficher dans l'état nommé "DataSet1".• Un objet SQLConnection pour se connecter à notre base SQL nommé "SqlConnection1".• Un élèment Crystal Report nommé "ETAT"

Le design de cette form étant très simple, nous n'allons pas nous étendre dessus. Quelques précisions tout demême. Dans cet article nous allons afficher dans notre état une liste de route avec un type. Deux types sontpossibles "SUB" et "CS". Nous aurons donc une table SQL nommé "Tbl_Type_Route" avec les champs suivant

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 3 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 4: Crystal Report

"Route_id" et "Type_Route".

La requête de notre SQLDataAdapter sera donc très simple :

SELECT Route_id, Type_Route FROM Tbl_Type_Route

Pour créer le dataset, clic droit sur notre SQLDataAdapter et "générer le groupe de données", je ne vous apprendsrien ici.

L' ajout de l'état au projet se fait de la même manière que pour ajouter une form (clic droit sur le projet - ajouter unnouvel élément - état crystal report). Ajouter donc votre état et nommé le "ETAT". Quand l'ajout sera effectif,précisez que vous utilisez un état vide.

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 4 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 5: Crystal Report

II - Ajout de la source de données à l'état.

Pour obtenir ceci :

Dans l'explorateur de champs, faites un clic droit sur "Champs de base de données" - "Ajouter / Supprimer unebase", dans "données du projet", choisissez "ADO.NET Datasets", puis grâce au bouton fléché, basculez notreDataSet dans le partie "Tables sélectionnées". Ensuite pour placer nos données sur l'état, il suffit de réaliser unepetite action de glisser-déplacer de nos champs "Route_id" et "Type_Route" dans la zone détails de notre état,nous obtenons ceci :

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 5 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 6: Crystal Report

Petite précision sur les différentes zones d'un état :

• En-tête de l'état : tout ce qui sera dans cette zone sera présent que sur la première page de l'état.• En-tête de page : tout ce qui sera dans cette zone sera présent sur chaque pages de l'état.• Détails : tout ce qui sera dans cette zone se reproduira autant de fois que le nombre de "Route_id" que nous

avons obtenu grâce à notre requête.• Pied de page de l'état : tout ce qui sera dans cette zone sera présent que sur la première page de l'état.• Pied de page : tout ce qui sera dans cette zone sera présent sur chaque pages de l'état.

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 6 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 7: Crystal Report

III - Visualisation de l'état

Il est maintenant temps de faire un premier test et de visualiser les données dans l'état. Pour cela nous devonscoder l'évènement Click de notre bouton :

TryCursor.Current = Cursors.WaitCursor

' ici nous remplissons notre DataSetDataSet11.Clear()SqlDa.Fill(DataSet11)

' ici on crée une instance de notre état, nous précisons que ca source est notre DataSet'et que l'on veut l'afficher dans notre crystalreportviewerDim report As New ETATreport.SetDataSource(DataSet11)crvETAT.ReportSource = report

Cursor.Current = Cursors.DefaultCatch ex As ExceptionMessageBox.Show(ex.Message)End Try

Et voila le résultat :

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 7 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 8: Crystal Report

Nous Pouvons voir nos données dans l'état, c'est bien, mais avec une petite mise en forme, c'est mieux ! C'estl'objet du prochain chapitre.

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 8 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 9: Crystal Report

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 zonedétails, puis choisissons "mettre en forme", cette fenêtre apparait :

Nous remarquons plusieurs onglets ou nous pouvons entre autre changer la couleur de police ou mettre desbordures. Pas besoin de s'étendre ici. Ce qui est intéressant dans cette fenêtre c'est la présence d'un étrange

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 9 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 10: Crystal Report

C'est là que c'est intéressant, ce bouton va nous permettre de changer la propriété correspondante de notre champ"Route_id" de manière dynamique. Un petit exemple, imaginons que nous voulions mettre en rouge toutes lesroutes qui sont de types "SUB". Cliquez donc sur le bouton correspondant à la couleur de la police. Cette fenêtreapparait :

En haut de la fenêtre une zone déroulante nous permets de choisir la syntaxe Basic, choisissez la donc. Les troisfenêtres du haut nous présentent les champs de notre source de données, des constantes, des fonctions, desstructures de commandes... afin d'éviter de tapper tout le code à la main. Nous allons donc programmer lapropriétée "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 fenêtre du bas. Tappez ' = "SUB" ',puis dans le Then, tappez le mot clé "Formula = " et dans la fenêtre du millieu, choissisez la couleur Rouge. Le motclé "Formula" fait référence à la propriétée sur laquelle nous travaillons, ici la Font_Color de notre champ"Route_id".

Notre formule est donc prête et veux dire : Si Type_Route = "SUB" Alors Font_Color = Rouge !

Vous pouvez vérifier la syntaxe de notre formule en cliquant sur le bouton et enregistrer puis quitter en

cliquant sur le bouton

Faisons un test et relançons notre application, nous avons bien nos routes de type "SUB" apparaitre en rouge :

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 10 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 11: Crystal Report

IV-B - Création d'un groupe.

Un groupe dans un état va nous permettre de regrouper et d'ordonner les données selon certains critères. Nousallons dans cet exemple regrouper les routes par type de route. En affichant d'abord les CS routes puis les SUB.

La création d'un groupe se réalise dans la partie design de notre état, dans l'onglet "explorateur de champs", faitesun clic droit sur "Champ nom du groupe" puis "nouveau", nous voyons apparaitre cette fenêtre :

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 11 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 12: Crystal Report

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 :

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 12 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 13: Crystal Report

Nous voyons apparaitre à gauche nos groupes, ici nos types "CS" et "SUB" dans l'ordre croissant (alphabetiqueici). Quand on clique sur l'un des groupes, une zone rouge nous y amène directement. Il est à noter que nos zonesd'état (groupe, détails, pied de page...) peuvent également faire l'objet de mise en forme. En faisant un clic droit surn'importe quelle section et en choisissant "mettre en forme une section", nous voyons cette fenêtre :

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 13 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 14: Crystal Report

Vous pouvez par exemple en sélectionnant la section détails puis en validant l'option "Nouvelle page après" avoirune nouvelle page après chaque zone de détails. C'est à dire que l'on aura une route par page.

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 14 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 15: Crystal Report

V - Insertion de diagramme

Le but de ce chapitre est d'insérer un diagramme pour représenter nos données de manière plus synthétique. Voicune capture d'écran de ce que nous allons pouvoir obtenir très rapidement :

Nous allons insérer notre diagramme dans l'en-tête de l'état. Faites donc un clic droit dans cette partie de l'état puis"insertion" - "diagramme". Voici les étapes successives pour la création de notre diagramme :

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 15 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 16: Crystal Report

La première chose à faire est de choisir le type de notre diagramme, prenons le type sectoriel (ou camember).

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 16 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 17: Crystal Report

C'est ici que nous allons présicer que nous voulons la répartition des routes selon les types de routes. Nous disonsdonc que sur un changement du type de route, nous calculons le nombre de routes.

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 17 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 18: Crystal Report

Dans l'onglet texte, nous précisons uniquement le texte à mettre pour le titre, sous-titre... de notre diagramme.

Le deuxième diagramme présent sur notre image au début du chapitre a été conçu exactement de la même façonsauf que nous avons choisis un autre type de diagramme !

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 18 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/

Page 19: Crystal Report

VI - Le controle CrystalReportViewer

Nous allons ici parcourir quelques propriétés du controle crystalReportViewer:

DisplayGroupTree : permet de faire disparaitre la colonne blanche à gauche de l'état. Il est inutile lorque votre étatne contient pas de groupe. DisplayToolBar : permet de faire disparaitre totalement la barre d'outils de l'état.L'utilisateur n'aura alors plus accès à l'impression, au zoom ...

• ShowCloseButton : permet de faire disparaitre le bouton "fermer" de l'état. Il est bien souvent inutile• ShowExportButton : cette propriétée est très interessante. Elle vous permets très 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

numéro• ShowGroupTreeButton : ce bouton n'est plus nécessaire si vous décidez de faire disparaitre le group tree• ShowPageNavigateButton : permet d'afficher les boutons flechés pour se déplacer dans l'état, vous pouvez

naviguer de pages en pages ou vous rendre• directement à la première ou à la dernière page• ShowPrintButton : très 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 régler le zoom de l'état.• par défaut le zoom sera de 100%, vous pouvez changer le zoom par défaut avec le code :

VotreCrystalReportViewer.Zoom(2)• (ici on affiche toute la page de l'état)

Création et mise en forme d'états Crystal Reports avec VS .NET par Manuel Sergent

- 19 -Copyright © 30/08/2006 - Manuel Sergent. Aucune reproduction, même 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'à 300000 E de domages et intérêts.

http://hulk.developpez.com/tutoriel/crystalreport/