Nom du livret
Transcription
Nom du livret
Secteur Tertiaire Informatique Filière étude - développement Activité « Développer des composants d’interface » Générer un état avec Crystal Report Accueil Apprentissage Période en entreprise Evaluation Code barre SOMMAIRE I INTRODUCTION....................................................................4 I.1 Présentation.................................................................................4 II CONCEPTION D’UN ETAT........................................................5 II.1 II.2 II.3 II.4 II.5 II.6 II.7 Les sections d’un état.....................................................................5 Les types de données d’un rapport.....................................................6 La mise en forme des données...........................................................7 Exemple.....................................................................................8 Définition des champs paramètres.....................................................11 Définition des paramètres d’impression..............................................12 Définition des paramètres d’exportation.............................................14 III LES APPLICATIONS WEB.......................................................15 III.1 Utilisation du modèle objet CrystalReportViewer .................................15 III.2 Utilisation du modèle objet ReportDocument ......................................16 Générer un état avec Cristal Reports afpa 2007– Informatique et télécoms – filière étude développement 3/17 I INTRODUCTION Développé par la société Crystal Decisions, racheté aujourd’hui par la société Business Objects, Crystal Reports permet de créer des états de qualité basés sur diverses sources de données. Cet outil permet d'accélérer le processus de création d'applications dites de reporting. Crystal Reports extrait des données d’une base de données, ou utilise un resultset ou un dataset créé dans le programme. Crystal Reports regroupe ces données et effectue des totaux pour produire des rapports mis en forme avec la possibilité d’utiliser des graphiques. Ces rapports peuvent être pré visualisés et/ou exportés sous forme de fichiers Words, Excel ou pdf. I.1 PRÉSENTATION Crystal Reports est un outil permettant aux développeurs de concevoir rapidement des états de qualité basés sur différents types de sources de données et pouvant être intégrés au sein d’applications diverses (Web ou Windows). Il existe une version autonome en évaluation qui permet de se familiariser avec l'outil. Dans sa version pour Microsoft Visual Studio .NET, Crystal Reports est entièrement intégré à l’environnement de développement facilitant la création d’états par simples opérations de glisser-déposer. Pour être utilisé sur une plateforme J2EE, en open source, il existe un plugin pour Eclipse. Crystal Reports intègre un certain nombre d'experts et d'assistants qui vous aident, étape par étape, à créer différents types de rapports, préparer des diagrammes, définir le format général de votre rapport, relier des bases de données associées, sélectionner des enregistrements et des groupes à insérer dans le rapport et regrouper des fichiers à inclure lors de la distribution de votre rapport Générer un état avec Crystal Reports afpa 2008– Informatique et télécoms – filière étude développement 4/17 II CONCEPTION D’UN ETAT II.1 LES SECTIONS D’UN ÉTAT Tout état dont la conception est initialisée par Crystal Reports est identifié par un type et une source de données; il se structure par défaut sur cinq niveaux : • En-tête de rapport Cette section contient toutes les informations qui seront imprimées une seule fois, au début du rapport, notamment son titre. Vous pouvez également y placer des tableaux croisés et des diagrammes qui contiennent des données concernant le rapport entier. • En-tête de page Cette section est normalement destinée aux données qui doivent s'afficher en haut de chaque page. Il peut s'agir d'informations telles que les noms des chapitres, le nom du document, etc. Vous pouvez également l'utiliser pour afficher un intitulé au-dessus des champs d'un rapport. Diagrammes et tableaux croisés ne peuvent pas figurer dans cette section, les formules placées dans cette section sont évaluées à chaque nouvelle page. • Détails Cette section, le corps du rapport, est imprimée une fois par enregistrement. C'est là qu'apparaît l'essentiel des données du rapport. Diagrammes et tableaux croisés ne peuvent pas figurer dans cette section, les formules placées dans cette section sont évaluées à chaque enregistrement. • Pied de page du rapport Cette section est réservée aux totaux généraux, aux diagrammes et aux tableaux croisés portant sur la totalité du rapport, et plus généralement, à toute information que vous ne voulez voir apparaître qu'une seule fois, à la fin du rapport. • Pied de page Cette section est habituellement destinée au numéro de page et à d'autres informations qui doivent apparaître au pied de chaque page. Générer un état avec Crystal Reports afpa 2008– Informatique et télécoms – filière étude développement 5/17 Lorsque vous ajoutez un groupe, un résumé ou un sous total à votre rapport, le programme crée deux sections supplémentaires : • En tête de groupe (au dessus de la section Détails) Vous placerez dans cette section le champ de nom de groupe, et si nécessaire, des diagrammes et des tableaux croisés comprenant des données du groupe. Cette section est imprimée au début du groupe. • Pied de page de groupe (au dessous de la section Détails) Cette section contient généralement la valeur de résumé, s'il y en a une, et elle peut être utilisée pour afficher des diagrammes ou des tableaux croisés ; cette section est imprimée à la fin du groupe. II.2 LES TYPES DE DONNÉES D’UN RAPPORT La plupart des données placées dans un rapport sont des champs de base de données qui seront normalement placés dans la section Détail. Certaines données ne peuvent être extraites directement de la base de données et doivent être calculées. Il est parfois nécessaire d'ajouter à un rapport des données qui ne se trouvent pas dans les champs de données. On peut alors créer un champ de formule, par exemple : • Pour créer un champ du type Prix total = Qte * prix unitaire • Pour mettre en forme l’apparence d’un texte, de champs de base de données • Pour sélectionner les enregistrements pris en compte dans le rapport Lors de la création de formules, vous pouvez utiliser la syntaxe Crystal ou la syntaxe Visual Basic. Chaque formule de Crystal Reports doit renvoyer une valeur de type Nombre, Devise, Chaîne, Booléen, Date, Heure et Date/heure. L’éditeur de formules présente 3 fenêtres (champ du rapport, fonctions, opérateurs) permettant de créer toute formule dans une 4eme fenêtre. Un champ d'expression SQL utilise la syntaxe SQL au lieu du langage de formule de Crystal Reports utilisé dans un champ de formule. Les expressions SQL permettent d'extraire de la base de données des ensembles de données spécifiques. Il est possible de trier, regrouper et sélectionner ces données à partir de champs d'expression SQL. Pour inviter l'utilisateur d'un rapport à saisir des informations, vous créez un champ de paramètre. Un paramètre peut être considéré comme une question à laquelle l'utilisateur doit répondre avant que le rapport ne puisse être généré. Les informations saisies par l'utilisateur (la réponse) permettent de déterminer ce qui apparaîtra dans le rapport. Un rapport utilisé par le service des ventes utilisera par exemple un paramètre demandant à l'utilisateur de choisir une région. Le rapport Générer un état avec Crystal Reports afpa 2008– Informatique et télécoms – filière étude développement 6/17 renverra alors les résultats pour la région spécifiée, au lieu de renvoyer les résultats pour toutes les régions confondues. Pour afficher un total qui cumule toutes les valeurs d’un champ (ou de toutes les valeurs dans certains ensembles de valeurs) sur les enregistrements sélectionnés, vous devez créer un champ de total cumulé et l'insérer dans le rapport. Crystal Reports vous permet d'insérer très facilement dans votre rapport des champs spéciaux comme le numéro de page, le numéro d'enregistrement, le numéro de groupe, la date d'impression, le nombre total de pages..etc … Lors de la conception d'un rapport, il s'avère parfois nécessaire d'insérer une image. Ainsi, vous pouvez souhaiter faire apparaître le logo d'une entreprise dans l'en-tête du rapport. Les objets texte sont utilisés dans les rapports dans un grand nombre de cas. Ils constituent un moyen puissant pour insérer des titres, étiqueter des résumés et d'autres données sur votre rapport, et combiner facilement des champs de base de données. II.3 LA MISE EN FORME DES DONNÉES Pour mettre en forme un objet Cliquez avec le bouton droit de la souris sur l'objet et cliquez sur Mettre en forme l'objet. L’éditeur de mise en forme d’améliorer la présentation de l’objet : bordure, police, paragraphe… toutes les définitions peuvent être fixes ou modulables par des formules grâce à l’éditeur de formules appelé en cliquant sur Pour mettre en forme un diagramme Cliquez avec le bouton droit de la souris sur le diagramme et cliquez sur Expert Diagramme. Pour mettre en forme une section de rapport Cliquez avec le bouton droit de la souris sur la section de rapport et cliquez sur Expert Section. Générer un état avec Crystal Reports afpa 2008– Informatique et télécoms – filière étude développement 7/17 II.4 EXEMPLE On désire éditer l’état des ventes par client pour le mois de janvier 2008, en affichant en rouge tout CA client inférieur à 100 €. Les 3 tables concernées de la base Article sont : Clients (clt_Num, clt_Nom, clt_Pnom, clt_Loc, clt_pays) Ventes (vnt_Clt, vnt_Mag, vnt_Art, vnt_Qte, vnt_Prix, vnt_Date) Articles (art_Num, art_Nom, art_Poids, art_Coul, art_Pa, art_Pv, art_Qte, art_Frs) Analyse de la conception du rapport : Les sections En-tête de groupe n° 1 et Pied de Page de groupe n° 1 ont été créées suite à l’ajout d’un nouveau groupe (grâce au menu contextuel Insérer un groupe sur la ligne Champs de nom de groupe dans l’explorateur de champs .ou dans le menu Crystal Reports / Insérer / Groupe), ce qui a permis d’insérer dans le rapport un champ de regroupement, Nom du groupe n° 1. L’objectif était de définir un groupe par client, les enregistrements étaient donc triés par ordre croissant et regroupés par Clt_Nom de la table Clients. Les chaînes de texte, Le ou Client : ou encore Total général : ont été saisies et positionnées dans l'état grâce au menu contextuel sur la section Insérer / Objet texte ou dans le menu Crystal Reports / Insérer / Objet texte. Le texte peut par la suite être modifié au click droit sur l’objet texte, grâce à l’option Modifier l’objet texte, et mis en forme (bordure, police, alignement …) grâce à l’option Mettre en forme l’objet. Les champs de base de données comme Art_Nom, Vnt_Qte ou Vnt_Prix ont été positionnés sur l'état par Glisser Déposer de la fenêtre Explorateur de champs/ Champs de base de données à la fenêtre de conception. Générer un état avec Crystal Reports afpa 2008– Informatique et télécoms – filière étude développement 8/17 En développant l’arborescence, on remarquera que les champ utilisés dans le rapport sont cochés ; en utilisant l’option Parcourir du menu contextuel de chaque champ, on obtient la visualisation des données. Les champs de total cumulé, bien que similaires aux champs de résumé, offrent plus de contrôle sur la façon dont le total est calculé et sur le moment où il est réinitialisé. • Le champ #CaClient a été créé grâce au menu contextuel Nouveau sur la ligne Champs de total cumulé dans l’Explorateur de champs. Il a fallu définir le nom du champ, le nom du champ de la base de données sur lequel porte l’opération (ventes.Vnt_Prix) ainsi que le type de l’opération (somme) ; il a fallu également définir à quel moment était évalué le champ (pour chaque enregistrement) et quand il devait être réinitialisé (au changement du groupe). Tous ces paramétrages peuvent être modifiés grâce au menu contextuel du champ de total avec l’option Modifier le total cumulé. • Le champ de résumé correspondant au total général, a été créé grâce au menu contextuel Insérer / Résumé ou a été défini le nom du champ à résumer (ventes.Vnt_Prix), le type de l’opération (somme) et la section emplacement du résumé. Ce paramétrage peut être modifié grâce au menu contextuel du champ de résumé avec l’option Changer l’opération de résumé. Les champs spéciaux, date d’impression, titre du rapport, ainsi que le numéro de page ont été positionnés sur l'état par Glisser Déposer de la fenêtre Explorateur de champs/ Champs spéciaux à la fenêtre de conception ou par le menu Crystal Reports / Insérer / Champs spéciaux. Il aura fallu définir au préalable alimenter certains champs spéciaux (titre du rapport, commentaires …) grâce à l’option du menu Crystal Reports/ Rapports / Propriétés du rapport. Une formule a été insérée dans l’éditeur de mise en forme pour afficher en rouge tous les chiffres d’affaire inférieurs à 100€. En cliquant, on obtient l’éditeur de formules Dans lequel a été saisi : if {#CaClient}<100 then crRed else crBlack Un champ de formule @VerifCA a été inséré grâce au menu contextuel Nouveau sur la ligne Champs de formule dans l’Explorateur de champs. if {#CaClient} < 100 then "???" qui éditera ??? en rouge sur le rapport lorsque le chiffre d’affaire sera inférieur à 100. Générer un état avec Crystal Reports afpa 2008– Informatique et télécoms – filière étude développement 9/17 Notre objectif était d’analyser les ventes pour le mois de janvier 2008 : On aurait pu définir une formule de sélection grâce au menu Crystal Reports/ Rapport / Formule de sélection qui nous permet de définir en dur, une formule du style : {Ventes.Vnt_Date} in DateTime (2008, 01, 01, 00, 00, 00) to DateTime (2008, 01, 31, 00, 00, 00) Une solution plus souple est d’utiliser un champ de paramètre, créé grâce au menu contextuel Nouveau sur la ligne Champs de paramètre dans l’Explorateur de champs. On créera donc 2 champs paramètres DatD et DatF qui représenteront les dates de début et de fin de sélection. Pour chaque paramètre, on indiquera alors son nom, le texte de l’invite associé ainsi que le type du paramètre (chaîne, nombre, date …). Plusieurs options sont disponibles permettant de définir si plusieurs valeurs sont autorisées, valeurs ou plage de valeurs … Il faut ensuite connecter les paramètre DatD et DatF au champ de base de données souhaité, par le menu Crystal Reports/ Rapport / Expert sélection. Les paramètres seront évalués lors de la demande de l’aperçu. Générer un état avec Crystal Reports afpa 2008– Informatique et télécoms – filière étude développement 10/17 L’aperçu du rapport principal donne : II.5 DÉFINITION DES CHAMPS PARAMÈTRES Les champs paramètres ont été définis dans le designer (voir paragraphe Conception d’un état). A ce stade, le projet peut être généré et exécuté. Une fenêtre automatique sera ouverte pour permettre la saisie de la valeur du paramètre déclaré dans le rapport. Toutefois, la valeur du paramètre peut provenir de champs saisis dans des contrôles d’une feuille de notre projet Java. Générer un état avec Crystal Reports afpa 2008– Informatique et télécoms – filière étude développement 11/17 Dans notre exemple : Les valeurs des paramètres seront issues de 2 contrôles DateTimePicker, dtpDateD et dtpDateP Pour passer les valeurs des paramètres du code de l’application à l’état, il se doit de coder les lignes de codes suivantes : En utilisant le modèle objet CrystalReportViewer : ListeVentes myReport = new ListeVentes(); this.CRViewer.ReportSource = myReport; // définition des infos de connection // … // définition des paramètres ParameterFields PFS = CRViewer.ParameterFieldInfo; PFS["DatD"].CurrentValues.AddValue(dtpDebut.Value.ToString()); PFS["DatF"].CurrentValues.AddValue(dtpFin.Value.ToString()); La collection de paramètres est extraite du viewer par le biais de sa collection ParameterFields. La valeur du paramètre est alors ajoutée à sa collection CurrentValues. En utilisant le modèle objet ReportDocument : Sous forme de rapport non incorporé, par le biais d’un objet ReportDocument, l’affectation des paramètres se fera, de la même façon entre les instructions Load et l’affectation de la propriété ReportSource du viewer. ReportDocument myReport = new ReportDocument(); string strChemin = @"C:\Init C#\" + Application.ProductName + "\\" + "ListeVentes.rpt"; myReport.Load(strChemin); // définition des infos de connection // … // définition des paramètres myReport.SetParameterValue("DatD", dtpDebut.Value); myReport.SetParameterValue("DatF",dtpFin.Value); this.CRViewer.ReportSource = myReport; On peut aller plus loin dans la gestion des paramètres en donnant la possibilité à un paramètre de prendre plusieurs valeurs et en gérant les valeurs par défaut. II.6 DÉFINITION DES PARAMÈTRES D’IMPRESSION L’impression d’un état peut s’effectuer de deux façons : • Par le biais de l'interface utilisateur graphique (GUI) : avec le bouton Imprimer de la barre d'outils fournie avec le contrôle CrystalReportViewer : la boite standard d’impression sera affichée avec des options limitées (pas de sélection de page, pas de choix de format de papier...) • En utilisant l'objet ReportDocument Générer un état avec Crystal Reports afpa 2008– Informatique et télécoms – filière étude développement 12/17 Le composant CrystalReportViewer permet de charger et de visualiser un état mais permet également de l’imprimer. Afin de personnaliser l’impression d’un état, il est possible de lui définir des options d’impression par l’intermédiaire de la propriété PrintOptions de l’objet ReportDocument. Cette propriété contient d’autres propriétés dont voici un bref aperçu : • PageMargins obtient ou définit les marges d’impression • PaperOrientation obtient ou définit l’orientation du papier (portrait ou paysage). • PaperSize obtient ou définit la taille du papier utilisé (A3, A4, enveloppe, …). • PaperSource obtient ou définit la source de papier à utiliser (bac d’alimentation supérieur, cassette papier, …). • PrinterDuplex obtient ou définit l’option de duplex de l’imprimante (impression simple face, impression recto-verso, …). • PrinterName obtient ou définit le nom de l’imprimante à utiliser. Un état peut être imprimé directement à partir du code de l’application par l’intermédiaire de la méthode PrintToPrinter, membre de l’objet ReportDocument. Cette méthode permet de définir le nombre de copies et les numéros des premières et dernières pages à imprimer. Pour de plus amples informations, se référer à la documentation de Crystal Reports. (aide en ligne) Exemple : au click sur le bouton Imprimer défini sur la feuille, impression du rapport chargé précédemment en utilisant les énumérations PaperOrientation et PaperSize de l’espace de nom CrystalDecisions.Shared. private void btnImprimer_Click(object sender, EventArgs e) { //définition des options d’impression PrintOptions printOptions = myReport.PrintOptions; printOptions.PrinterName = @"\\Servpsi\Lexmark"; printOptions.PaperOrientation = PaperOrientation.Portrait; printOptions.PaperSize = PaperSize.PaperA4; try { //appeler l’impression non assemblée de la page 1 // à la page 99. myReport.PrintToPrinter(1, false, 1, 99); string message = "OK"; } catch (Exception ex) { string message = "KO" + ex.Message; } } Générer un état avec Crystal Reports afpa 2008– Informatique et télécoms – filière étude développement 13/17 II.7 DÉFINITION DES PARAMÈTRES D’EXPORTATION Dans certains cas, un état ne doit pas être imprimé mais exporté sous la forme d’un fichier texte (pdf, Excel, Word, …). L’exportation d’un état peut s’effectuer de deux façons : • Par le biais de l'interface utilisateur graphique (GUI) : avec le bouton Exporter de la barre d'outils fournie avec le contrôle CrystalReportViewer (pas d’exportation possible en HTML) • En utilisant l'objet ReportDocument, au travers de sa propriété ExportOptions Celle-ci contient d’autres propriétés dont voici un bref aperçu : • ExportDestinationType obtient ou définit la destination d'exportation de l’état (serveur Microsoft Exchange, serveur Mail Microsoft, fichier sur le disque). • ExportFormatType obtient ou définit le format d’exportation (fichier html, Word, Excel, …). • ExportFormatOptions obtient ou définit les options de formatage pour le type d’exportation sélectionné précédemment. La méthode membre Export permet ensuite d’exporter l’état suivant les options définies précédemment. Exemple : : au click sur le bouton Exporter défini sur la feuille, export du rapport chargé précédemment en tant que fichier disque de format pdf en utilisant les énumérations ExportDestinationType et ExportFormatType de l’espace de nom CrystalDecisions.Shared. private void btnExporter_Click(object sender, EventArgs e) { // Options ExportOptions eO = new ExportOptions(); eO.ExportDestinationType = ExportDestinationType.DiskFile; eO.ExportFormatType = ExportFormatType.PortableDocFormat; // Propriétés pour export DiskFileDestinationOptions dfo = ExportOptions.CreateDiskFileDestinationOptions(); dfo.DiskFileName = @"C:\\Init C#\\liste.pdf"; eO.ExportDestinationOptions = dfo; // Exportation myReport.Export(eO); } L’instance de la classe ExportOptions va stocker par ses propriétés ExportDestinationType et ExportFormatType la destination d’exportation, ainsi que le format d’exportation. Le nom du fichier disque sera stocké par sa propriété ExportFormatOptions grâce à un objet de la classe DiskFileDestinationOptions. La méthode Export sera ensuite appelée avec son argument l’instance de la classe ExportOptions. Générer un état avec Crystal Reports afpa 2008– Informatique et télécoms – filière étude développement 14/17 III LES APPLICATIONS WEB La création d’un état Crystal Reports au sein d’un projet Web est la même que pour une application Windows : Pour afficher un état au sein d’une application, il suffit de l’associer au CrystalReportViewer de l’application. Le contrôle CrystalReportViewer comporte sensiblement les mêmes propriétés que dans le cas d’applications Windows à une différence près : une nouvelle propriété ReportSourceId Les conséquences : On peut toujours utiliser les modèles objet CrystalReportViewer et ReportDocument comme précédemment dans les applications Windows. Une xxxxxxxxxxxxxxxxxxx Généralement, le gestionnaire d'événements Page_Load permet de saisir le code de configuration du Web Form dans une application Web ASP.NET de manière à ce que ces instructions soient appelées pendant l'événement Page.Load (rechargement des pages à partir du Viewstate, ce qui implique une sérialisation des données) Mais le code de configuration du rapport Crystal doit être appelé plus tôt, car le contrôle CrystalReportViewer se lie à des objets qui ne peuvent pas être sérialisés (classe ReportDocument). La solution recommandée consiste à placer le code de liaison du rapport dans l'événement Init qui s'exécute avant que ViewState ne soit restauré. Dans un Web Form C# de Visual Studio 2005, les gestionnaires d'événements Page_Init, Page_Load ou Page_PreRender de la classe code-behind sont connectés automatiquement à l'événement Init, Load ou PreRender lorsque le paramètre AutoEventWireup de la directive Page est défini sur True. La signature de gestionnaire d'événement doit correspondre exactement pour pouvoir être appelée. III.1 UTILISATION DU MODÈLE OBJET CRYSTALREPORTVIEWER Exemple : Affichage du rapport incorporé ListeVentes.rpt au chargement de la feuille frmListeVentes dans un contrôle CrystalReportViewer de nom CRViewer. Le rapport est affiché au click sur le bouton Afficher. private void Page_Init(object sender, EventArgs e) { ConnectionInfo conBDArticle = new ConnectionInfo(); conBDArticle.ServerName = "XXXXXX"; conBDArticle.DatabaseName = "Article"; conBDArticle.IntegratedSecurity = true; // Recherche du chemin d’accès du fichier physique du rapport string reportPath = Server.MapPath("ListeVentes.rpt"); CRViewer.ReportSource = reportPath; // Infos de connexion TableLogOnInfos tableLogOnInfos = CRViewer.LogOnInfo; foreach (TableLogOnInfo tliCurrent in tableLogOnInfos) { tliCurrent.ConnectionInfo = conBDArticle; } } Générer un état avec Crystal Reports afpa 2008– Informatique et télécoms – filière étude développement 15/17 Les valeurs des paramètres seront issues de 2 contrôles Calendar, calD et calF protected void btnAfficher_Click(object sender, EventArgs e) { // paramètres ParameterFields PFS = CRViewer.ParameterFieldInfo; PFS["DatD"].CurrentValues.AddValue(this.calD.SelectedDate.ToString()); PFS["DatF"].CurrentValues.AddValue(this.calF.SelectedDate.ToString()); this.CRViewer.Visible = true; } III.2 UTILISATION DU MODÈLE OBJET REPORTDOCUMENT Exemple : Affichage du rapport incorporé ListeVentes.rpt au chargement de la feuille frmListeVentes dans un contrôle CrystalReportViewer de nom CRViewer. Le rapport est affiché au click sur le bouton Afficher. Les valeurs des paramètres seront issues de 2 contrôles Calendar, calD et calF ReportDocument myReport; //… private void Page_Init(object sender, EventArgs e) { myReport = new ReportDocument(); // Recherche du chemin d’accès du fichier physique du rapport string reportPath = Server.MapPath("ListeVentes.rpt"); myReport.Load(reportPath); this.CRViewer.ReportSource = myReport; // définition des infos de connection ConnectionInfo conBDArticle = new ConnectionInfo(); conBDArticle.ServerName = "XXXXXX"; conBDArticle.DatabaseName = "Article"; conBDArticle.IntegratedSecurity = true; TableLogOnInfo tliCurrent; foreach (CrystalDecisions.CrystalReports.Engine.Table tblTable in myReport.Database.Tables) { tliCurrent = tblTable.LogOnInfo; tliCurrent.ConnectionInfo = conBDArticle; tblTable.ApplyLogOnInfo(tliCurrent); } } protected void btnAffiche_Click(object sender, EventArgs e) { // définition des paramètres myReport.SetParameterValue("DatD", this.CalD.SelectedDate); myReport.SetParameterValue("DatF", this.CalF.SelectedDate); //this.CRViewer.ReportSource = myReport; this.CRViewer.Visible = true; } L’impression et l’exportation se gèrent de la même manière que pour une pplication WinForm. Générer un état avec Crystal Reports afpa 2008– Informatique et télécoms – filière étude développement 16/17 Etablissement référent DI NEUILLY Équipe de conception Elizabeth Cattanéo (AFPA Marseille Saint Jérôme) Remerciements : Noms ou texte sogos financeurs crédit photos Reproduction interdite Article L 122-4 du code de la propriété intellectuelle. « toute représentation ou reproduction intégrale ou partielle faite sans le consentement de l’auteur ou de ses ayants droits ou ayants cause est illicite. Il en est de même pour la traduction, l’adaptation ou la reproduction par un art ou un procédé quelconques. » Date de mise à jour jj/mm/aa afpa Date de dépôt légal mois année afpa / Direction de l’Ingénierie13 place du Générale de Gaulle / 93108 Montreuil Cedex association nationale pour la formation professionnelle des adultes Ministère des Affaires sociales du Travail et de la Solidarité