Apprendre a créer des Rapport en 7 etapes faciles et rapides, en utilisant le Control de Crystal Report, dans Microsoft Visual Studio 2010, en utilisant un DataSet et DataTable, pour sélectionner les données nécessaire a l’établissement du raport
1. Wiki Info Système | Préparé par ING. David JOSEPH
Objectif
Créer un rapport avec Crystal report pour Visual Studio 2010
Introduction
Aujourd’hui nous allons apprendre à créer des rapports avec Microsoft Visual Studio 2010, en utilisant
tout simplement des dataSet, DataTable.
Pour télécharger Crystal Report compatible avec Microsoft Visual Studio 2010
http://downloads.businessobjects.com/akdlm/cr4vs2010/CRforVS_13_0.exe
Première étape : Le projet « test_report »
Création du nouveau projet (ou vous pouvez utiliser un projet en cours, mais il est conseiller d’utiliser un
projet vide en vue de bien assimiler les notions) ;
Figure 1
2. Wiki Info Système | Préparé par ING. David JOSEPH
Deuxième étape : La base de données
Nous allons utiliser Microsoft SQL Server pour créer une nouvelle base de données « db_test » (Figure 2)
Figure 2
Une fois la table sauvegardée on va ajouter des données pour notre exemple (Figure 3) :
Figure 3
Troisième étape : Le DataSet
Nous allons créer un fichier XSD.
Clic sur Solution Explorer => Clic droit test_report => Clic sur Add new Item : la fenêtre suivante
devrait apparaitre (Figure 4)
3. Wiki Info Système | Préparé par ING. David JOSEPH
Figure 4
Sélectionner DataSet dans la liste. Et donner un nom à votre DataSet ; dans notre exemple on le
nommera dsSample.xsd
Clic sur OK
Maintenant on va ajouter un DataTable à notre dataSet
Dans la fenêtre du dataSet (généralement de couleur bleu), Clic droit (Figure 5) :
4. Wiki Info Système | Préparé par ING. David JOSEPH
Figure 5
Un fois notre DataTable créée on va devoir ajouter les colonnes dans la table.
Remarque :
Le nom des colonnes doivent impérativement est égal au nom des colonnes dans la base de donnes et
de même type.
Pour ajouter une colonne Clic droit sur le DataTable et choisissez Column (Figure 6)
5. Wiki Info Système | Préparé par ING. David JOSEPH
Figure 6
Ajouter toutes les colonnes que vous voulez afficher dans votre rapport (si la colonne ne fait pas parti du
DataTable que vous avez ajouté dans le DataSet vous ne pourrez pas le présenter dans le Crystal
Report).
Maintenant, on va modifier le type de donnes des colonnes, sinon on risque de tomber sur « error for
field and data type mismatch » erreur courante quand les types de variables ne sont pas
semblables.
Clic droit sur la datacolumn dans le datatable que vous voulez changer le type (par défaut le type est
« System.String »), aller dans le panel Property, et identifier DataType dans le combo box sélectionner
le type de votre colonne (et bien sûr similaire au type dans votre base de données) (Figure 7).
6. Wiki Info Système | Préparé par ING. David JOSEPH
Figure 7
Répéter cette opération pour les autres colonnes si nécessaire.
Notre fichier XSD, plus connu sur le nom de DataSet est maintenant fini et prêt à être utiliser.
Quatrième étapes : Création de notre fichier Crystal Report «simpleReport »
Nous allons créer notre fichier .rpt
Clic sur Solution Explorer => Clic droit test_report => Clic sur Add new Item : la fenêtre suivante
devrait apparaitre (Figure 8)
7. Wiki Info Système | Préparé par ING. David JOSEPH
Figure 8
Sélectionner Crystal Reports dans la liste, changer le nom (il est conseiller de nommer le fichier .rpt avec
un nom qui résume les informations qui y seront traites) ; dans notre exemple on le nommera
simpleReports.rpt
Clic OK
La fenêtre suivante (Figure 9) devrait suivre tout suite après avoir cliqué sur OK
8. Wiki Info Système | Préparé par ING. David JOSEPH
Figure 9
Clic sur OK
9. Wiki Info Système | Préparé par ING. David JOSEPH
Figure 10
Dérouler la liste de Project Data => ADO.NET DataSets =>dsSample
Sélectionner votre dataTable puis clic sur > pour ajouter le dataSet dans l’autre colonne.
Clic sur Finish
Votre Crystal Report devrait tout suite apparaitre (Figure 11). Pour ajouter les colonnes qui apparaitront
dans le rapport :
1) Clic sur Field Explorer => Database Fields => DataTable1
2) Faites glisser les colonnes dans la section Détail (dans cette section des données semblable
seront répéter successivement)
N.B : Les techniques de mise en page seront développées dans le prochain tutoriel
10. Wiki Info Système | Préparé par ING. David JOSEPH
Figure 11
Votre Crystal Report est maintenant prêt. Rendez-vous à la prochaine étape.
Cinquième étape : Préparation de notre WinForm
Revenons à notre Form (ou s’affichera le Crystal Report).
Dans votre ToolBox, identifier le control CrystalReportViewer, faites glisser le control sur votre Form.
Dans le panel Property identifié WindowState changer la valeur en Maximized, afin d’éviter des erreurs
dues à l’affichage du Crystal Report.
11. Wiki Info Système | Préparé par ING. David JOSEPH
Sixième étape : Un peu de Code
Premièrement nous allons ajouter quelques librairies à notre programme.
Cliquer sur votre Form (assurer vous de biens sélectionner votre Form), Appuyer sur F7, la fenêtre
Form1.cs s’affiche comme par magie ; puis ajouter votre code en haut de la page :
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
De retour sur votr Form, cette fois double clic sur Form1, afin de creer l’evenement Load_Form1
//Déclaration des variables
ReportDocument rptDoc = new ReportDocument(); //Création du nouveau Rapport
qui sera parametre
dsSample ds = new dsSample(); // Utilisation de notre DataSet
DataTable dt = new DataTable(); //Un DataTable pour récupérer la valeur de
votre requête
//Selectionner votre model Crystal Report
OpenFileDialog dialog = new OpenFileDialog();
dialog.Title = "Open";
dialog.Filter = "RPT|*.rpt*";
try
{
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
rptDoc.Load(dialog.FileName);
}
}
catch (ArgumentException ex)
{
MessageBox.Show(ex.Message.ToString(), "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
// Ajustement des variables
dt.TableName = "Exemple de Crystal Report";
dt = getAllOrders(); //Fonction pour recuperer les donnees
ds.Tables[0].Merge(dt);
//Afficher le DataTable dans le Crystal Report
rptDoc.SetDataSource(ds);
crystalReportViewer1.ReportSource = rptDoc;
12. Wiki Info Système | Préparé par ING. David JOSEPH
Septième étape: La fonction getAllOrders
Cette fonction consiste à sélectionner dans notre base de données les informations voulu en vue de
remplir le dataTable, qui a son tour devra remplir le dataSet.
public DataTable getAllOrders()
{
SqlConnection Con = new SqlConnection("Data Source=.SQLEXPRESS; Initial
Catalog=db_collection; Integrated Security=True");
SqlCommand cmd = new SqlCommand("SELECT * FROM tb_costumers", Con);
DataSet ds = null;
SqlDataAdapter adapter;
try
{
Con.Open();
ds = new DataSet();
adapter = new SqlDataAdapter(cmd);
adapter.Fill(ds);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
cmd.Dispose();
if (Con.State != ConnectionState.Closed)
Con.Close();
}
return ds.Tables[0];
}
13. Wiki Info Système | Préparé par ING. David JOSEPH
Exemple code au complet:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.Data.SqlClient;
using System.Configuration;
using System.IO;
namespace test_report
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//Pour de variable
ReportDocument rptDoc = new ReportDocument(); //Creation du nouveau Rapport
qui sera parametre
dsSample ds = new dsSample(); // Utilisation de notre DataSet
DataTable dt = new DataTable(); //Un dataTable pour recuperer la valeur de
votre requete
//Selectionner votre Crystal Report
OpenFileDialog dialog = new OpenFileDialog();
dialog.Title = "Open";
dialog.Filter = "RPT|*.rpt*";
try
{
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
rptDoc.Load(dialog.FileName);
}
}
catch (ArgumentException ex)
{
14. Wiki Info Système | Préparé par ING. David JOSEPH
MessageBox.Show(ex.Message.ToString(), "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
// Ajustement des variables
dt.TableName = "Exemple de Crystal Report";
dt = getAllOrders(); //Fonction pour recuperer les donnees necessaire dans
votre base de donnees
ds.Tables[0].Merge(dt);
//Afficher le DataTable dans le Crystal Report
rptDoc.SetDataSource(ds);
crystalReportViewer1.ReportSource = rptDoc;
}
public DataTable getAllOrders()
{
//Connection string replace 'databaseservername' with your db server name
SqlConnection Con = new SqlConnection("Data Source=.SQLEXPRESS; Initial
Catalog=db_collection; Integrated Security=True");
SqlCommand cmd = new SqlCommand("SELECT * FROM tb_costumers", Con);
DataSet ds = null;
SqlDataAdapter adapter;
try
{
Con.Open();
ds = new DataSet();
adapter = new SqlDataAdapter(cmd);
adapter.Fill(ds);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
cmd.Dispose();
if (Con.State != ConnectionState.Closed)
Con.Close();
}
return ds.Tables[0];
}
}
}