SAP Crystal Report pour le Guide du développeur

Transcription

SAP Crystal Report pour le Guide du développeur
SAP Crystal Reports, version développeur pour Microsoft Visual Studio
Version du document : Support Package 10 - 2014-06-23
SAP Crystal Report pour le Guide du
développeur de SAP SDK Visual
Studio .NET
Table des matières
1
Guide du développeur du SAP SDK Crystal Reports .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1
Démarrage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1
Présentation de SAP Crystal Reports, version développeur pour Microsoft Visual Studio
............................................................................4
1.1.2
1.2
1.3
Migration de l'application SAP Crystal Reports .Net. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Configuration de l'environnement de développement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.1
Configuration du système. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
1.2.2
Configuration d'un projet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Principes fondamentaux du SDK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.3.1
Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.3.2
Contrôle CrystalReportViewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.3.3
Quelle méthode de persistance utiliser avec SAP Crystal Reports ?. . . . . . . . . . . . . . . . . . . . 53
1.3.4
Evolutivité de l'application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
1.3.5
Utilisation de SAP Crystal Reports dans une batterie de serveurs Web ou un jardin Web
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
1.4
1.5
1.6
1.7
2
1.3.6
Utilisation de Crystal Reports en tant que service Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
1.3.7
Considérations de sécurité. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111
Utilisation du SDK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
1.4.1
Impression d'un rapport. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
1.4.2
Exportation d'un rapport. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123
1.4.3
Filtrage de données avec des paramètres ou des formules. . . . . . . . . . . . . . . . . . . . . . . . . .136
1.4.4
Définition de la source de données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
1.4.5
Visualisation d'un rapport. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
1.4.6
Personnalisation du contrôle CrystalReportViewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
1.4.7
Utilisation des rapports SAP Crystal Reports Read-Only (RPTR). . . . . . . . . . . . . . . . . . . . . 243
Tutoriels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
1.5.1
Tutoriels du modèle d'objet CrystalReportViewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
1.5.2
Tutoriels du modèle d'objet ReportDocument. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
1.5.3
Tutoriels de programmation allégée dans Visual Studio. . . . . . . . . . . . . . . . . . . . . . . . . . . 508
1.5.4
Tutoriels sur la connectivité des données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .549
1.5.5
Tutoriels supplémentaires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
Déploiement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
1.6.1
Composants de déploiement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .618
1.6.2
Déploiement pour Visual Studio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
Création des rapports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
1.7.1
Utilisation du SAP Crystal Reports Designer incorporé. . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
1.7.2
Formules - Référence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786
1.7.3
Interface utilisateur - Référence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Table des matières
1.8
Glossaire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1009
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Table des matières
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
3
1
Guide du développeur du SAP SDK
Crystal Reports .NET
1.1
Démarrage
Cette aide en ligne est conçue pour vous aider à développer vos propres applications Web ou Windows à l'aide du
SDK SAP Crystal Reports .NET. Elle comprend des tutoriels et des références de programmation qui vous
aideront à implémenter le SDK SAP Crystal Reports .NET.
1.1.1
Présentation de SAP Crystal Reports, version
développeur pour Microsoft Visual Studio
SAP Crystal Reports, version développeur pour Microsoft Visual Studio permet de créer des rapports complexes
de qualité professionnelle dans un programme basé sur une interface utilisateur graphique. Vous pouvez alors
connecter votre rapport à pratiquement n'importe quelle source de base de données ou à des données proxy,
comme un ensemble de résultats (par exemple, un objet DataSet ADO.NET). A l'aide des assistants du
concepteur d'interface utilisateur, vous pouvez définir la mise en forme, le regroupement, les diagrammes et
d'autres critères.
Vous pouvez héberger votre rapport dans une application Web ou Windows avec l'un des contrôles visualiseur de
rapports de SAP Crystal Reports. La présentation des rapports dans les clients Windows et HTML 4.0 est
hautement interactive et offre des fonctionnalités telles que l'exploration de diagrammes, la navigation dans les
rapports et la recherche de texte.
SAP Crystal Reports, version développeur pour Microsoft Visual Studio est fourni avec un SDK complet. Ce SDK
vous permet d'interagir avec le rapport par programmation au moment de l'exécution, grâce à l'emploi de l'un des
quatre modèles d'objet suivants :
●
CrystalReportViewer, le modèle d'objet le plus simple.
●
ReportDocument, le modèle d'objet le plus complet.
●
ReportClientDocument, le modèle d'objet le plus complet. Ce modèle d'objet est disponible avec un serveur
RAS.
●
InfoObject, un modèle d'objet puissant conçu pour la planification et la configuration de rapports dans la
structure SAP Crystal Reports Server ou de la plateforme SAP BusinessObjects Business Intelligence.
Remarque
Les modèles d'objet CrystalReportViewer et ReportDocument sont disponibles avec toutes les versions
de SAP Crystal Reports, version développeur pour Microsoft Visual Studio. Les modèles d'objet
ReportClientDocument et InfoObject nécessitent une licence mise à niveau. Voir Solutions de reporting de
SAP BusinessObjects Business Intelligence [page 65].
Vous pouvez associer des rapports à un projet Visual Studio de nombreuses façons :
●
Incorporez les rapports directement dans le projet.
●
Accédez aux rapports à partir d'un répertoire de fichiers.
4
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
●
Accédez aux rapports en tant que service Web de rapports à partir d'un serveur distant.
●
Connectez vos rapports en tant que services Crystal.
●
Avec une mise à niveau vers SAP Crystal Reports Server, accédez aux rapports via le serveur RAS.
●
Avec une mise à niveau vers la plateforme SAP BusinessObjects Business Intelligence, accédez aux rapports
via le Page Server ou le serveur RAS présent dans la structure de la plateforme SAP BusinessObjects
Business Intelligence.
1.1.1.1
Fonctionnalités disponibles dans
SAP Crystal Report Designer
SAP Crystal Reports Designer propose plusieurs fonctionnalités qui ne sont pas disponibles avec
SAP Crystal Reports, version développeur pour Microsoft Visual Studio :
Fonction
Description
Membres calculés dans des diagrammes de tableau croisé
Vous pouvez ajouter des lignes ou des colonnes à un
diagramme de Tableau croisé en insérant un membre
calculé. Ces lignes ou colonnes peuvent contenir des calculs
personnalisés (par exemple, la différence de ventes entre
deux régions) ou peuvent être entièrement utilisées à des fins
de mise en forme (par exemple, en insérant une ligne vide
toutes les trois lignes pour améliorer la clarté). Vous disposez
d'une entière souplesse dans la conception de vos propres
formules de calcul et pouvez choisir si elles apparaissent
seulement une fois ou se répètent régulièrement dans le
Tableau croisé.
Objets Flash incorporés
Vous pouvez incorporer un objet Flash ou créer un lien vers
un objet Flash dans une section quelconque de rapport
SAP Crystal Reports.
Résumés incorporés dans des tableaux croisés
Vous pouvez ajouter un calcul supplémentaire à votre
diagramme de Tableau croisé en insérant un résumé
incorporé. Les résumés incorporés n'ajoutent pas de lignes
ou de colonnes à votre Tableau croisé. Ils entraînent plutôt
l'apparition de calculs supplémentaires dans chacune des
cellules du Tableau croisé. Par exemple, dans un rapport
affichant les ventes régionales, vous pouvez insérer un calcul
pour chaque région, qui affiche le pourcentage des ventes
totales du pays.
Aperçu modifiable
Avec SAP Crystal Reports Designer, vous pouvez visualiser
un rapport dans l'onglet de conception ou l'onglet d'aperçu.
Vous disposez des mêmes possibilités de mise en forme
dans l'onglet Aperçu que dans l'onglet Conception.
Néanmoins, dans l'onglet Aperçu, vous travaillez avec les
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
5
Fonction
Description
données réelles. Au lieu d'un cadre de champ de données
représentant plusieurs valeurs de champ de données, les
valeurs réelles apparaissent dans le rapport.
Code-barres mis en forme
SAP Crystal Reports Designer comprend les formules et
polices nécessaires à la prise en charge des code-barres
Code39. Vous pouvez utiliser l'option Mettre en forme le
champ pour modifier l'apparence d'un code-barres.
Il existe de nombreuses raisons pour modifier l'apparence
d'un code-barres, dont les suivantes :
●
Pour changer la taille de sorte que le code-barres ne soit
ni trop grand ni trop petit pour être lu par un scanneur.
●
Champs de tri interactifs
Pour afficher le code-barres dans une autre couleur.
Vous pouvez concevoir votre rapport de sorte que les
utilisateurs puissent modifier un champ de tri ou un sens de
tri sans actualiser les informations de la base de données.
Pour ce faire, ajoutez un Contrôle de tri à votre rapport.
Un Contrôle de tri est particulièrement utile pour plusieurs
raisons :
●
Il permet aux utilisateurs de trier les données du rapport
pour une analyse plus approfondie sans quitter la zone
de dessin du rapport.
●
Il élimine la demande de traitement sur la base de
données.
●
Il réduit le temps d'attente des utilisateurs pendant le tri
des données.
●
Il permet aux utilisateurs de trier les champs du rapport,
même s'ils ne disposent pas d'une connexion ou des
droits d'accès à la base de données au moment de
l'affichage.
Workbench
Sur le Workbench, vous pouvez créer des projets contenant
un ou plusieurs rapports. Les options de la barre d'outils vous
permettent d'ajouter, supprimer ou renommer les dossiers,
rapports et packages d'objets. Vous pouvez réorganiser les
fichiers dans un dossier ou des dossiers en les faisant glisser
et en les déposant où vous souhaitez qu'ils apparaissent.
Vous pouvez également faire glisser des fichiers de rapport
de l'Explorateur Windows et les déposer dans le dossier de
votre choix sur le Workbench.
6
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.1.2
Migration de l'application SAP Crystal Reports .Net
Cette section contient des informations sur la migration de l'application SAP Crystal Reports .Net vers
SAP Crystal Reports, version développeur pour Microsoft Visual Studio.
Remarque
SAP Crystal Reports, version développeur pour Microsoft Visual Studio est doté d'un ensemble complet de
fonctionnalités et est disponible en téléchargement gratuit s'intégrant à Visual Studio 2010 ou version
ultérieure. SAP Crystal Reports, version développeur pour Microsoft Visual Studio n'est pas fourni avec
l'application SAP Crystal Reports Designer.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
7
Options de migration dans les différentes versions de SAP Crystal Reports
Ce diagramme représente les différents chemins de migration entre les versions de SAP Crystal Reports.
8
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Migration vers SAP Crystal Reports, version développeur pour Microsoft
Visual Studio
SAP Crystal Reports, version développeur pour Microsoft Visual Studio met automatiquement à niveau vos
anciens projets vers la version actuelle. Si un projet contient des références à d'anciens composants, l'utilisateur
est invité à effectuer une mise à niveau.
Si vous cliquez sur le bouton Oui, les projets et les fichiers associés sont mis à niveau vers la version actuelle de
SAP Crystal Reports. Si vous cliquez sur le bouton Non, le projet est adapté de manière à utiliser les références
d'origine. Certaines fonctionnalités récentes sont désactivées si elles ne sont pas prises en charge par les
composants plus anciens.
Remarque
Si le fichier de projet (tout fichier ASPX possédant des composants SAP Crystal Reports ou le fichier
web.config) est verrouillé, la mise à niveau ou l'adaptation échoue.
Informations associées
Solutions de reporting de SAP BusinessObjects Business Intelligence [page 65]
1.1.2.1
Problèmes de migration
Un rapport basé sur une source de données ADO.NET ne fonctionnera pas si le
projet vise .NET 4.x Framework
Les rapports basés sur une source de données ADO.NET ne fonctionneront pas si le projet vise .NET 4.x
Framework. L'erreur suivante se produit : "Additional information: Mixed mode assembly is built against version
'v2.0.50727' of the runtime and cannot be loaded in the 4.x runtime without additional configuration information
(Informations complémentaires : la liaison d'assembly en mode mixte a été créée avec la version v2.0.50727 du
programme d'exécution et ne peut pas être chargée dans le programme d'exécution 4.0 sans informations de
configuration supplémentaires)".
Pour résoudre ce problème, vous pouvez mettre à jour le fichier .config de votre projet. Ajoutez les lignes de
code suivantes dans la section <configuration></configuration> du fichier :
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.x"/>
</startup>
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
9
1.1.2.2
Limites en 64 bits
L'architecture 64 bits est prise en charge dans SAP Crystal Reports, version développeur pour Microsoft
Visual Studio x 64 (AMD64). Toutefois, l'architecture IA64 (Itanium) n'est pas prise en charge à ce jour.
Fonctionnalités actuellement non prises en charge dans les scénarios 64 bits :
●
Exportation de rapports au format HTML.
●
Composants de création de cartes géographiques.
●
Composants de police de codes à barres Azalea.
1.2
Configuration de l'environnement de développement
Cette section fournit des instructions détaillées sur l'installation et la configuration de votre environnement de
développement, ainsi que sur la création d'un site Web ou d'un projet Windows dans SAP Crystal Reports, version
développeur pour Microsoft Visual Studio.
1.2.1
Configuration du système
Cette section indique comment configurer votre environnement de développement pour tester et développer des
applications Windows ou des sites Web utilisant le SDK de SAP Crystal Reports .NET.
1.2.1.1
Eléments à installer
Vous devez installer SAP Crystal Reports, version développeur pour Microsoft Visual Studio avant de pouvoir
créer des applications Web ou Windows utilisant SAP Crystal Reports.
1.2.1.1.1
Versions de Visual Studio prises en charge
Si vous envisagez d'utiliser SAP Crystal Reports, version développeur pour Microsoft Visual Studio, vérifiez que la
version de Visual Studio que vous avez installée prend en charge SAP Crystal Reports.
Les éditions Visual Studio Ultimate, Premium et Professional sont prises en charge pour Visual Studio 2010 et
ultérieure. Les éditions Visual Studio Express ne sont pas prises en charge par SAP Crystal Reports.
Informations associées
Solutions de reporting de SAP BusinessObjects Business Intelligence [page 65]
10
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.2.1.1.2
Versions SAP Crystal Reports
Plusieurs versions de SAP Crystal Reports sont disponibles. De nombreuses procédures décrites dans ce
document s'appliquent à une version spécifique. Pour utiliser au mieux ce document, déterminez d'abord quelle
version de SAP Crystal Reports est installée sur votre système.
1.2.1.1.2.1
Pour déterminer la version de
SAP Crystal Reports que vous utilisez
Procédure
1.
Accédez au cache GAC (Global Assembly Cache) à l'emplacement C:\WINNT\Assembly ou C:\Windows
\Assembly.
2.
Recherchez le fichier CrystalDecisions.CrystalReports.Engine.
Remarque
Si vous avez installé différentes versions de SAP Crystal Reports, plusieurs versions de ces fichiers se
trouvent dans le Global Assembly Cache. Le fichier CrystalDecisions.CrystalReports.Engine est sélectionné
car il est inclus dans chaque version de SAP Crystal Reports.
3.
Recherchez la colonne Version affichée dans la fenêtre.
Il s'agit de la "version de l'assembly".
4.
Recherchez le numéro d'assembly le plus élevé.
5.
Comparez la version de l'assembly avec le numéro de version indiqué dans le tableau des versions de
SAP Crystal Reports.
1.2.1.1.2.2
Versions SAP Crystal Reports
Produit
Version de l'assembly
SAP Crystal Reports, version développeur pour Microsoft
Visual Studio (.NET 4.0 Framework)
13.0.2000.0
SAP Crystal Reports 2008 (.NET 2.0 Framework)
12.0.2000.0
SAP Crystal Reports 2008 (.NET 1.1 Framework)
12.0.1100.0
SAP Crystal Reports XI Release 2
11.5.3300.0
SAP Crystal Reports XI Release 1
11.0.3300.0
SAP Crystal Reports Basic pour Visual Studio 2008
10.5.3600.0
SAP Crystal Reports pour Visual Studio 2005
10.2.3600.0
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
11
Produit
Version de l'assembly
SAP Crystal Reports 10
10.0.3300.0
SAP Crystal Reports 9
9.2.3300
SAP Crystal Reports pour Visual Studio 2003
9.1.5000
SAP Crystal Reports 2008 et SAP Crystal Reports 2008 SP1 utilisent le même numéro de version d'assembly. Si
SAP Crystal Reports 2008 SP1 est installé, la version du fichier doit commencer par 12.1 et non par 12.0.
1.2.1.1.3
Installation du service de mise à jour de
SAP Crystal Reports
Contexte
SAP Crystal Reports, version développeur pour Microsoft Visual Studio fournit désormais en option un service de
mise à jour de SAP Crystal Reports qui recherche les mises à jour et les correctifs de SAP Crystal Reports.
Le service de mise à jour de SAP Crystal Reports, version développeur pour Microsoft Visual Studio n'est pas
fourni en tant que composant du programme d'installation. Vous devez le télécharger et l'installer séparément.
Procédure
1.
Après avoir installé SAP Crystal Reports, version développeur pour Microsoft Visual Studio, démarrez
Visual Studio et créez un site Web ou un projet Windows.
2.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom de projet affiché en gras,
puis cliquez sur
Ajouter
Nouvel élément .
3.
Dans la boîte de dialogue Ajouter un nouvel élément, sélectionnez Rapport Crystal.
4.
Dans le champ Nom, saisissez Test.rpt, puis cliquez sur Ajouter.
Remarque
Si vous utilisez le SAP Crystal Report Designer incorporé pour la première fois, un message vous invite à
accepter les termes du Contrat de licence utilisateur. Ensuite, la boîte de dialogue Service de mise à jour
s'ouvre. Si vous avez déjà utilisé le SAP Crystal Report Designer incorporé auparavant, vous devrez ouvrir
la boîte de dialogue Service de mise à jour manuellement.
Le SAP Crystal Reports Designer incorporé s'ouvre et affiche le nouveau rapport.
5.
Si la boîte de dialogue Service de mise à jour n'apparaît pas, cliquez sur Rechercher les mises à jour dans le
menu Crystal Reports.
Si le service de mise à jour de SAP Crystal Reports n'est pas installé, un message vous invite à le faire.
6.
Dans la boîte de dialogue Service de mise à jour, cliquez sur Oui.
Le site Web du service de mise à jour de SAP Crystal Reports s'affiche avec un lien permettant de télécharger
ce service.
12
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
7.
Téléchargez et installez le service de mise à jour de SAP Crystal Reports.
8.
Démarrez à nouveau Visual Studio.
9.
Ouvrez Test.rpt.
Le SAP Crystal Report Designer incorporé démarre et affiche le rapport.
10. Dans le menu Crystal Reports, cliquez sur Rechercher les mises à jour.
Le service de mise à jour démarre et recherche les mises à jour. Vous pouvez accepter ou refuser toutes les
mises à jour disponibles.
1.2.1.1.4
Code clé de produit SAP Crystal Reports
Le code clé consiste en une chaîne alphanumérique comportant 19 chiffres ou caractères. Dans
SAP Crystal Reports, version développeur pour Microsoft Visual Studio, lorsque vous créez des projets de
déploiement utilisant le programme Windows Installer, il peut être nécessaire d'indiquer un code clé de produit
pour valider les informations de licence des applications Web ou Windows.
1.2.1.2
Eléments à vérifier
Pour développer un site Web ou une application Windows qui utilise le SDK de SAP Crystal Reports .NET, vous
devez vérifier que les composants de Crystal Reports Developer ont été correctement installés et intégrés à
Visual Studio. Pour développer un site Web, vous devez également vérifier que le répertoire virtuel des
visualiseurs a été correctement installé sur les serveurs Web de développement et de déploiement.
Cette section détaille les paramètres à vérifier avant la création d'une application SAP Crystal Reports .NET.
Informations associées
Versions de Visual Studio prises en charge [page 10]
1.2.1.2.1
Vérification de l'installation de SAP Crystal Reports
Contexte
Pour vérifier que le composant SAP Crystal Reports de Visual Studio est installé, assurez-vous que son nom est
affiché dans la boîte de dialogue Ajouter un nouvel élément de l'application Visual Studio.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
13
Procédure
1.
Lancez Visual Studio.
2.
Créez un projet Web ou Windows (dans le langage de votre choix), ou ouvrez un projet Web ou Windows
existant.
3.
Dans le menu Projet, cliquez sur Ajouter un nouvel élément.
Remarque
Les nouveaux fichiers de rapport doivent être ajoutés directement à un projet. Vous ne pouvez pas créer un
rapport Crystal dans Visual Studio via le menu Fichier.
4.
Dans la boîte de dialogue Ajouter un nouvel élément, faites défiler la liste des éléments disponibles pour
vérifier que Crystal Reports y figure bien.
1.2.1.2.2
Répertoire des visualiseurs
SAP Crystal Reports utilise un répertoire virtuel pour accéder aux visualiseurs à afficher. Le nom du répertoire
virtuel et le chemin d'accès aux fichiers associés diffèrent dans chaque version de SAP Crystal Reports. Cela évite
les risques de conflit si vous installez plusieurs versions de SAP Crystal Reports sur le même ordinateur.
1.2.1.2.2.1
Emplacement par défaut du répertoire virtuel des
visualiseurs
Si vous avez installé SAP Crystal Reports avec les paramètres et chemins d'accès par défaut, les visualiseurs se
trouvent dans le répertoire virtuel indiqué ci-dessous.
Version
Structure
SAP Crystal Reports, 4.x Framework
version développeur
pour Microsoft Vi­
sual Studio
Chemin d'accès
Chemin d'accès au fichier lors de l'utilisation du serveur de déve­
loppement ASP.NET :
\Windows\Microsoft.NET\Framework
\v4.0.30319\ASP.NETClientFiles
\crystalreportviewers13
Chemin d'accès au fichier lors de l'utilisation d'IIS :
\inetpub\wwwroot\aspnet_client\system_web
\4_0_30319\crystalreportviewers13
SAP Crystal Reports, 2.0 Framework
version développeur
pour Microsoft Vi­
sual Studio
14
Chemin d'accès au fichier lors de l'utilisation du serveur de déve­
loppement ASP.NET :
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Version
Structure
Chemin d'accès
\Windows\Microsoft.NET\Framework
\v2.0.50727\ASP.NETClientFiles
\crystalreportviewers13
Chemin d'accès au fichier lors de l'utilisation d'IIS :
\inetpub\wwwroot\aspnet_client\system_web
\2_0_50727\crystalreportviewers13
1.2.1.2.2.2
Pour rechercher le répertoire des visualiseurs
Procédure
1.
Dans le Panneau de configuration, cliquez deux fois sur Outils d'administration, puis sur Internet Information
Services.
2.
Dans la boîte de dialogue Internet Information Services, développez le nœud Site Web, puis le nœud Site Web
par défaut.
3.
Localisez tous les dossiers contenant un dossier crystalreportsviewers13.
4.
Cliquez avec le bouton droit de la souris sur chaque dossier crystalreportsviewers13, puis sélectionnez
Propriétés.
5.
Dans la boîte de dialogue Propriétés, vérifiez que le chemin d'accès local est correctement configuré pour
votre version de SAP Crystal Reports ou de Visual Studio.
1.2.1.2.3
Répertoire d'exemples de rapports
Certains exemples de fonctionnalités, scénarios de liaison de rapports et tutoriels reposent sur des exemples de
rapports fournis avec SAP Crystal Reports.
Vous pouvez télécharger les exemples de rapports à partir de l'adresse suivante : http://
www.sdn.sap.com/irj/boc/downloads
1.2.2
Configuration d'un projet
Cette section présente des informations essentielles pour les développeurs ayant un niveau avancé ou
intermédiaire. Elle indique les meilleures pratiques à suivre pour créer et configurer un projet Windows ou un
projet/site Web à l'aide de SAP Crystal Reports, version développeur pour Microsoft Visual Studio.
En outre, le projet que vous allez créer sera utilisé dans les tutoriels présentés dans cette aide en ligne.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
15
1.2.2.1
Configuration d'un site Web dans Visual Studio
Cette section décrit la configuration d'un site Web dans Visual Studio. Le site Web que vous allez ainsi créer
servira de prérequis aux tutoriels de programmation classique fournis dans cette aide en ligne.
1.2.2.1.1
Création d'un site Web dans Visual Studio
Procédure
1.
Lancez Visual Studio.
2.
Dans le menu Fichier, sélectionnez Nouveau Site Web.
3.
Dans la boîte de dialogue Nouveau site Web, cliquez sur Site Web ASP.NET.
4.
Dans la liste déroulante Emplacement, sélectionnez Système de fichiers.
5.
Dans la liste déroulante Langage, sélectionnez le langage de programmation que vous souhaitez utiliser.
6.
Dans le champ de texte Emplacement, saisissez le chemin d'accès du répertoire C:\WebSites\, suivi du nom
de votre projet.
C:\WebSites\NomMonProjet
7.
Cliquez sur OK.
1.2.2.1.2
1.2.2.1.2.1
Préparation du Web Form
Pour créer le Web Form
Contexte
Dans cette section, vous allez configurer la classe code-behind pour le Web Form.
Remarque
Les termes "Web Form", "page ASPX" et "Default.aspx" sont utilisés de manière interchangeable.
Procédure
1.
Dans l'Explorateur de solutions, cliquez deux fois sur le fichier Default.aspx pour ouvrir le Web Form.
2.
Dans le menu Affichage, cliquez sur Code.
16
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
La classe code-behind s'ouvre. Cette classe s'appelle classe _Default. Le fichier de classe s'appelle
Default.aspx.cs ou Default.aspx.vb.
Remarque
Si votre page Default.aspx a été créée avec un code incorporé, son code n'a pas été placé dans un fichier
séparé. Dans ce cas, supprimez la page ASPX et recréez-la. Lorsque vous créez la page ASPX, activez la
case à cocher "Placer le code dans un fichier distinct".
3.
Si vous écrivez cette classe en langage Visual Basic, tapez "Option Strict On" au début de la classe.
Remarque
Il est recommandé de définir Option Strict sur On au début de chaque classe Visual Basic de votre site
Web. Ainsi, vous serez tenu de respecter les conventions d'écriture du code, à savoir l'emploi de
déclarations de variables fortement typées et la définition d'un cast valide, deux conventions qui sont
vérifiées au moment de la compilation du code. Cette précaution aide à réduire les exceptions générées à
l'exécution du code.
1.2.2.1.2.2
Pour ajouter des instructions Imports et Using
aux espaces de noms de référence
Procédure
1.
Ouvrez la page Default.aspx.
2.
Dans le menu Affichage, cliquez sur Code.
La classe code-behind du Web Form s'affiche.
3.
Au-dessus de la signature de classe, ajoutez une déclaration "Imports" [Visual Basic] ou "using" [C#] au
début de la classe contenant les espaces de noms SAP Crystal Reports suivants.
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
Remarque
Les classes de ces deux assemblies sont couramment utilisées dans tous les tutoriels. En ce qui concerne
les assemblies supplémentaires dont vous pourriez avoir besoin dans des tutoriels spécifiques, vous
trouverez des instructions pour les ajouter tout au long de ce tutoriel.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
17
1.2.2.1.2.3
Pour ajouter une méthode d'assistance privée
pour le code de configuration de SAP Crystal Reports
Procédure
Dans la classe, ajoutez une nouvelle méthode d'assistance privée nommée ConfigureCrystalReports(),
sans valeur renvoyée.
Private Sub ConfigureCrystalReports()
End Sub
private void ConfigureCrystalReports()
{
}
La méthode ConfigureCrystalReports() permet aux utilisateurs d'interagir avec le rapport au moment
de l'exécution. De plus, elle contrôle l'interaction par programme avec le rapport.
Étapes suivantes
Ensuite, vous allez ajouter un gestionnaire d'événements Page_Init à partir duquel appeler la méthode
ConfigureCrystalReports(). Le fait d'appeler la méthode ConfigureCrystalReports() à partir de ce
gestionnaire d'événements garantit que le code de configuration du rapport Crystal s'exécutera durant
l'événement d'initialisation de la page.
1.2.2.1.2.4
Pour ajouter un gestionnaire d'événements
Page_Init à la classe code-behind
Contexte
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 ce programme soit appelé pendant l'événement
Page.Load. Mais le code de configuration du rapport Crystal doit être appelé plus tôt, pendant l'événement
Page.Init.
Procédure
1.
Ajoutez l'événement Page_Init à votre code.
18
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
○
Si vous codez dans Visual Basic, sélectionnez Page Events dans la liste déroulante supérieure gauche et
l'événement Init dans la liste déroulante supérieure droite. Le gestionnaire d'événements Page_Init
sera ajouté à votre classe code-behind.
Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Me.Init
End Sub
○
Si vous codez en C#, saisissez le gestionnaire d'événements Page_Init à l'aide de la syntaxe exacte
indiquée.
private void Page_Init(object sender, EventArgs e)
{
}
Remarque
Dans un Web Form C# de Visual Studio 2005 ou version suivante, 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. La signature de gestionnaire d'événements
doit correspondre exactement pour pouvoir être appelée.
Cette fonctionnalité est disponible lorsque le paramètre AutoEventWireup de la directive Page, qui se
trouve au début de la page ASPX en mode HTML, est défini sur True.
Les versions précédentes de Visual Studio .NET définissaient toujours la directive Page
AutoEventWireup sur False, mais dans les Web Form C# de Visual Studio 2005 ou version suivante,
la directive Page AutoEventWireup est définie sur True par défaut.
2.
dans le gestionnaire d'événements Page_Init de Visual Basic ou C#, ajoutez un appel à la méthode
d'assistance ConfigureCrystalReports().
ConfigureCrystalReports()
ConfigureCrystalReports();
3.
Dans le menu Fichier, cliquez sur Enregistrer tout.
1.2.2.1.3
site Web
Pour ajouter un contrôle CrystalReportViewer à un
Procédure
1.
Ouvrez la page Default.aspx.
2.
Cliquez sur le bouton Design au bas du formulaire.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
19
3.
Dans la Boîte à outils, ouvrez le nœud Reporting afin de localiser le contrôle CrystalReportViewer.
Remarque
Dans les versions précédentes de SAP Crystal Reports, version développeur pour Microsoft Visual Studio,
le contrôle CrystalReportViewer apparaissait dans le nœud Crystal Reports.
4.
Faites glisser le contrôle CrystalReportViewer sur le Web Form.
5.
Dans le menu Fichier, cliquez sur Enregistrer tout.
Résultats
Si vous ajoutez un contrôle CrystalReportViewer à votre application, les références aux assemblies
SAP Crystal Reports seront automatiquement ajoutées à votre rapport.
1.2.2.1.4
Configuration du fichier Web.Config
Un fichier Web.Config dans une application Web ASP.NET stocke les paramètres globaux, tels que les
informations de connexion à la base de données, les références d'assembly et la gestion des erreurs. Ce fichier est
écrit en langage XML et son élément racine doit toujours être <configuration>. Il s'agit d'une configuration
avancée qui est facultative.
Les éléments suivants sont spécifiques à SAP Crystal Reports et peuvent être ajoutés à votre fichier Web.Config.
Remarque
Les numéros de version peuvent changer en fonction du produit dont vous disposez.
Remarque
Dans .NET 2.0 et versions ultérieures, la balise section du fichier Web.Config doit utiliser la syntaxe suivante :
<configSections>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="printControl"
type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</sectionGroup>
</configSections>
CrystalImageCleaner
Le processus CrystalImageCleaner supprime automatiquement les images générées dynamiquement
rendues par le contrôle CrystalReportViewer. Ce paramètre vous permet de définir l'intervalle entre les analyses
20
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
du répertoire d'images et l'âge minimal des fichiers avant suppression. Cet élément est automatiquement ajouté
au fichier Web.Config lorsque vous ajoutez le contrôle CrystalReportViewer à votre site Web. Il correspond à la
classe CrystalImageCleaner.
●
CrystalImageCleaner-Sleep initialise la durée en millisecondes pendant laquelle le nettoyeur d'image
reste en veille avant d'analyser et de nettoyer les fichiers image dans le répertoire des images dynamiques.
●
CrystalImageCleaner-Age initialise l'âge minimal d'un fichier, en millisecondes, avant sa suppression.
●
CrystalImageCleaner-AutoStart contrôle le processus CrystalImageCleaner. Le nettoyeur d'image
nettoie les images temporaires qui sont créées lors de la visualisation d'un rapport.
Remarque
Un seul nettoyeur d'image peut être démarré dans un processus de traitement ASP.NET unique.
<appSettings>
<add key="CrystalImageCleaner-AutoStart" value="true" />
<add key="CrystalImageCleaner-Sleep" value="60000" />
<add key="CrystalImageCleaner-Age" value="120000" />
</appSettings>
CrystalImageHandler
L'élément CrystalImageHandler affiche toutes les images dynamiques dans le contrôle CrystalReportViewer.
Ce paramètre configure le processus de traitement ASP.NET pour rediriger les requêtes adressées à
CrystalImageHandler.aspx vers une classe de traitement d'image interne uniquement. Si le paramètre
CrystalImageHandler ne figure pas dans votre fichier Web.Config, les images de votre site Web ne
s'afficheront pas. Cet élément est automatiquement ajouté au fichier Web.Config lorsque vous ajoutez le contrôle
CrystalReportViewer à votre site Web.
<system.web>
<httpHandlers>
<add verb="GET" path="CrystalImageHandler.aspx"
type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web,
Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
</httpHandlers>
</system.web>
documentView
L'élément documentView contrôle l'apparence du rapport dans la trame du rapport. Deux paramètres sont
fournis :
●
Si la valeur est définie sur printlayout, une bordure grise s'affiche autour du rapport et une ombre portée
s'affiche dans la trame. Il s'agit de la valeur par défaut.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
21
●
Si la valeur est définie sur weblayout le rapport remplit la trame.
<configSections>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="crystalReportViewer"
type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</sectionGroup>
</configSections>
<businessObjects>
<crystalReports>
<crystalReportViewer>
<add key="documentView" value="weblayout"/>
</crystalReportViewer>
</crystalReports>
</businessObjects>
EnableTextClipping
L'élément EnableTextClipping contrôle si le texte du champ est tronqué. Une fois défini sur true, le texte
contenu dans un champ ne chevauchera pas le texte dans le champ situé en regard..
<configSections>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="crystalReportViewer"
type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</sectionGroup>
</configSections>
<businessObjects>
<crystalReports>
<crystalReportViewer>
<add key="EnableTextClipping" value="true"/>
</crystalReportViewer>
</crystalReports>
</businessObjects>
globalResourcePath
L'élément globalResourcePath est la référence au chemin du répertoire de fichiers pour les ressources
globales. Ce répertoire de fichiers contient vos ressources de langue personnalisées dans un emplacement
central et peut être partagé par plusieurs applications Web. Ce paramètre vous permet d'accéder aux ressources
globales d'un site Web spécifique. Dans SAP CrystalReports.NET, les fichiers de ressources par défaut ne sont
pas fournis lors de l'installation du produit, mais peuvent être téléchargés à partir du site Web de support
technique de SAP BusinessObjects : http://help.sap.com. Cet élément doit être manuellement ajouté au fichier
Web.Config de votre site Web.
<appSettings>
22
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
<add key="globalResourcePath" value="c:\CrystalReportViewer_resource_files\"/>
</appSettings>
maxNumberListOfValues
L'élément maxNumberListOfValues contrôle le nombre d'éléments LOV qui seront envoyés au client. Contrôle
le nombre de valeurs affichées dans le panneau des paramètres. Si cette valeur est définie, seules les n premières
valeurs apparaissent dans la liste de valeurs. La boîte de dialogue Paramètres avancés permet de paginer
plusieurs ensembles de valeurs en fonction de la taille de la liste et de la valeur de l'élément
maxNumberListOfValues. Si vous disposez, par exemple, de 180 valeurs et que vous définissez l'élément
maxNumberListOfValues sur 50, vous pourrez afficher les 50 premières valeurs du panneau des paramètres.
Vous pourrez paginer les 180 valeurs dans la boîte de dialogue Paramètres avancés et afficher ainsi trois groupes
de 50 valeurs et un groupe de 30 valeurs.
Il est recommandé de définir systématiquement une valeur supérieure à 0. La valeur par défaut est 200.
<configSections>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="crystalReportViewer"
type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</sectionGroup>
</configSections>
<businessObjects>
<crystalReports>
<crystalReportViewer>
<add key="maxNumberListOfValues" value="50"/>
</crystalReportViewer>
</crystalReports>
</businessObjects>
printControl
L'élément printControl vous permet d'imprimer le rapport directement sur votre imprimante locale. Le
répertoire d'installation par défaut est C:\Program Files (x86)\SAP BusinessObjects\Crystal
Reports for .NET Framework 4.0\Common\Crystal Reports 2011\crystalreportviewers.
Ce paramètre rend le fichier .cab visible par votre site Web .NET SAP Crystal Reports. Cet élément doit être
manuellement ajouté au fichier Web.Config de votre site Web.
<configSections>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="printControl"
type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</sectionGroup>
</configSections>
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
23
<businessObjects>
<crystalReports>
<printControl>
<add key="url" value="http://localhost/PrintControl.cab" />
</printControl>
</crystalReports>
</businessObjects>
processingIndicatorDelay
L'élément processingIndicatorDelay contrôle le délai préalable à l'apparition de l'indicateur de traitement de
rapport. La valeur est spécifiée en millisecondes. Le fait de définir cette valeur sur 0 désactive l'indicateur de
traitement de rapport. La valeur par défaut est de 200 ms.
<configSections>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="crystalReportViewer"
type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</sectionGroup>
</configSections>
<businessObjects>
<crystalReports>
<crystalReportViewer>
<add key="processingIndicatorDelay" value="20"/>
</crystalReportViewer>
</crystalReports>
</businessObjects>
processingIndicatorText
L'élément processingIndicatorText contrôle le texte affiché dans l'indicateur de traitement de rapport. Le
texte par défaut est : Veuillez patienter pendant le traitement du document.
<configSections>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="crystalReportViewer"
type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</sectionGroup>
</configSections>
<businessObjects>
<crystalReports>
<crystalReportViewer>
<add key="processingIndicatorText" value="Thank you for waiting."/>
</crystalReportViewer>
</crystalReports>
</businessObjects>
24
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
reportMappings
L'élément reportMappings met à jour les sites Web créés dans Visual Studio 2003 qui utilisent des rapports
incorporés et les convertit en sites Web non incorporés lorsqu'ils sont ouverts dans Visual Studio 2005 ou version
suivante. Ce paramètre convertit le fichier .dll créé dans Visual Studio 2003 en fichier disque. Visual Studio 2005
et 2008 ne prennent pas en charge les sites Web incorporés et vous devez donc modifier votre fichier Web.Config
pour vous assurer que votre rapport sera toujours fonctionnel avec la nouvelle version de Visual Studio. Cet
élément doit être manuellement ajouté au fichier Web.Config de votre site Web. Le paramètre reportMappings
nécessite un chemin absolu.
Remarque
Cet élément est valide pour Visual Studio 2005 et Visual Studio 2008 uniquement.
<configSections>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="reportMappings"
type="CrystalDecisions.Shared.ReportMappingHandler" />
</sectionGroup>
</sectionGroup>
</configSections>
<businessObjects>
<crystalReports>
<reportMappings>
<add reportName="World Sales Report.rpt" path="C:\Report\World Sales
Report.rpt" />
</reportMappings>
</crystalReports>
</businessObjects>
resourceURI
L'élément resourceURI définit l'emplacement du répertoire crystalreportviewers dans l'application Web.
Le répertoire crystalreportviewers contient tous les fichiers requis par le visualiseur.
<configSections>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="crystalReportViewer"
type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</sectionGroup>
</configSections>
<businessObjects>
<crystalReports>
<crystalReportViewer>
<add key="resourceURI" value="~/crystalreportviewers12" />
</crystalReportViewer>
</crystalReports>
</businessObjects>
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
25
serverFileReportManager
L'élément serverFileReportManager est un service Web qui énumère les fichiers serveur situés sur le serveur.
Ce paramètre vous permet d'obtenir une liste d'objets (dossiers et rapports) depuis un ordinateur distant. Il a
pour valeur la racine du répertoire de fichiers du serveur. Dans cet exemple, la racine définie est c:\inetpub
\wwroot. Cet élément doit être manuellement ajouté au fichier Web.Config de votre site Web.
Remarque
Il correspond à la classe serverFileReportManager.
<configSections>
<sectionGroup name="crystalDecisions">
<section name="serverFileReportManager"
type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</configSections>
<crystalDecisions>
<serverFileReportManager>
<add key="rootDirectory" value="c:\inetpub\wwwroot" />
</serverFileReportManager>
</crystalDecisions>
UseAsynchronousRequests
Les requêtes asynchrones sont autorisées par défaut dans le visualiseur DHTML. Pour activer le bouton Retour
dans le navigateur afin d'utiliser le visualiseur DHTML, vous devez désactiver les requêtes asynchrones en
définissant ce paramètre sur false.
Remarque
Il est recommandé de ne pas définir l'élément UseAsynchronousRequests sur false. Cette action désactive
en effet la boîte de dialogue Paramètres avancés dans le panneau des paramètres ainsi que certaines
améliorations au niveau de la performance du visualiseur et certaines fonctionnalités qui permettent
d'améliorer l'apparence.
<context-param>
<param-name>crystal_use_asynchronous_requests</param-name>
<param-value>false</param-value>
</context-param>
UseBrowserLocale
L'élément UseBrowserLocale extrait les paramètres de langue de votre navigateur pour le contrôle
CrystalReportViewer. Lorsqu'il est défini sur true, ce paramètre configure le contrôle CrystalReportViewer pour
observer les paramètres régionaux du navigateur. Lorsqu'il est défini sur false, il limite les paramètres régionaux
26
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
qui sont affichés page par page. Cet élément doit être manuellement ajouté au fichier Web.Config de votre site
Web.
<configSections>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="crystalReportViewer"
type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</sectionGroup>
</configSections>
<businessObjects>
<crystalReports>
<crystalReportViewer>
<add key="UseBrowserLocale" value="true" />
</crystalReportViewer>
</crystalReports>
</businessObjects>
Exemple
Exemple de fichier Web.Config
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="CrystalImageCleaner-AutoStart" value="true"/>
<add key="CrystalImageCleaner-Sleep" value="60000"/>
<add key="CrystalImageCleaner-Age" value="120000"/>
</appSettings>
<connectionStrings/>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="CrystalDecisions.Web, Version=13.0.2000,
Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.Shared, Version=13.0.2000,
Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.ReportSource, Version=13.0.2000,
Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.CrystalReports.Engine,
Version=13.0.2000, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
</assemblies>
</compilation>
<authentication mode="Windows"/>
<httpHandlers>
<add verb="GET" path="CrystalImageHandler.aspx"
type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web,
Version=12.1.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
</httpHandlers>
</system.web>
</configuration>
Informations associées
Impression
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
27
Web : configuration de la localisation basée sur le navigateur
Web : configuration des ressources personnalisées globales ou locales
Comment ajouter ou supprimer des références dans Visual Studio
Versions SAP Crystal Reports
1.2.2.2
Configuration d'un projet Windows dans
Visual Studio
Cette section présente des informations essentielles pour les développeurs ayant un niveau avancé ou
intermédiaire. Elle indique les méthodes à suivre pour créer et configurer un projet Windows à l'aide de
SAP Crystal Reports, version développeur pour Microsoft Visual Studio.
La configuration d'un projet Windows présentée dans cette section fait appel à un modèle de programmation
classique. Au cours de cette procédure, vous serez amené à accéder à la classe Form1 et à entrer du code. Ce
projet Windows que vous allez ainsi créer servira de condition prérequise aux tutoriels de programmation
classique fournis dans cette aide en ligne.
1.2.2.2.1
Création d'un projet Windows dans Visual Studio
Procédure
1.
Lancez Visual Studio.
2.
Dans le menu Fichier, sélectionnez Nouveau, puis cliquez sur Projet.
3.
Dans la boîte de dialogue Nouveau projet, dans la liste Types de projets, sélectionnez un dossier de langage
pour C# ou Visual Basic.
4.
Dans la liste Modèles, cliquez sur Application Windows Forms.
5.
Dans le champ Nom, remplacez le nom de projet par défaut par le nom de votre projet.
Respectez la convention d'affectation de noms Pascal selon laquelle la première lettre du nom du projet doit
être une majuscule car le nom du projet sera également utilisé comme nom de l'espace de noms de
l'assembly généré à partir du projet.
6.
28
Cliquez sur OK.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.2.2.2.2
Application des paramètres de projet Visual Basic
standard (facultatif)
Contexte
Pour configurer un projet Visual Basic de manière à pouvoir l'utiliser avec les tutoriels fournis dans cette
documentation, vous devez apporter une modification mineure à ses paramètres.
Procédure
1.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du projet en gras affiché
sous le nom de la solution, puis sélectionnez Propriétés.
2.
Dans la vue Propriétés, cliquez sur l'onglet Compiler.
3.
Dans la liste Option Strict, cliquez sur On.
4.
Fermez la vue Propriétés.
5.
Dans le menu Fichier, cliquez sur Enregistrer tout.
Remarque
Il est recommandé d'activer OptionStrict dès le début de la création d'un projet Visual Basic. Ainsi, vous
serez tenu de respecter les conventions d'écriture du code, à savoir l'emploi de déclarations de variables
fortement typées et la définition d'un cast valide, deux conventions qui sont vérifiées au moment de la
compilation du code. Cette précaution aide à réduire les exceptions générées à l'exécution du code.
1.2.2.2.3
1.2.2.2.3.1
Préparation du Windows Form dans Visual
Pour créer le Windows Form
Contexte
Dans les applications Visual Basic 6 pour Windows, un formulaire par défaut est généralement toujours défini par
le nom Form1. Sur ce modèle, vous créez un projet Windows en lui attribuant le même nom de formulaire par
défaut, Form1, et l'extension .cs ou .vb selon le langage utilisé.
Procédure
1.
Si le formulaire Form1 n'est pas affiché dans la fenêtre principale, cliquez deux fois sur Form1 dans
l'Explorateur de solutions.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
29
Le formulaire Form1 s'ouvre dans le Designer.
2.
Dans le menu Affichage, cliquez sur Code.
Le mode code de la classe Form1 s'affiche. Il varie selon que votre application Windows est écrite en langage
Visual Basic ou C#.
En langage C#, la classe Form1 affiche les éléments suivants :
○
La signature de classe.
○
Un constructeur (Form1).
En langage Visual Basic, la classe Form1 affiche les éléments suivants :
○
La signature de classe (classe Form1).
Remarque
Des méthodes et variables supplémentaires de la classe Form1 sont contenues dans une classe
"partielle" séparée. (Ceci vaut pour C# et Visual Basic.) Les classes partielles sont expliquées
ultérieurement dans Configuration d'un projet Windows.
1.2.2.2.3.2
Pour ajouter une méthode d'assistance privée
pour le code de configuration de SAP Crystal Reports
Procédure
1.
Ajoutez à cette classe Form1 une nouvelle méthode d'assistance privée nommée
ConfigureCrystalReports(), sans valeur renvoyée.
Private Sub ConfigureCrystalReports()
End Sub
private void ConfigureCrystalReports()
{
}
Ajoutez ensuite un gestionnaire d'événements Form_Load, puis insérez un appel de la méthode
ConfigureCrystalReports() dans le gestionnaire d'événements Form_Load. La méthode
ConfigureCrystalReports() s'exécutera ainsi automatiquement lors du chargement du formulaire.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Cliquez deux fois sur Form1.
Vous repassez en mode code. Comme vous avez cliqué deux fois sur Form1, un gestionnaire d'événements
Form1_Load est automatiquement généré dans la classe Form1.
4.
Dans le gestionnaire d'événements Form1_Load, saisissez un appel à la méthode
ConfigureCrystalReports().
ConfigureCrystalReports()
30
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
ConfigureCrystalReports();
5.
Dans le menu Fichier, cliquez sur Enregistrer tout.
1.2.2.2.4
Ajout d'un contrôle CrystalReportViewer
1.2.2.2.4.1
Pour ajouter un contrôle CrystalReportViewer à
une application Windows
Procédure
1.
Ouvrez un Windows Form dans l'onglet Conception.
2.
Dans la Boîte à outils, ouvrez le nœud Reporting afin de localiser le contrôle CrystalReportViewer.
Remarque
Dans les versions précédentes de Visual Studio, le contrôle CrystalReportViewer apparaissait dans le
nœud Crystal Reports.
3.
Faites glisser le contrôle CrystalReportViewer sur le formulaire.
4.
Dans le menu Fichier, cliquez sur Enregistrer tout.
Résultats
Si vous ajoutez un contrôle CrystalReportViewer à votre application, les références aux assemblies
SAP Crystal Reports seront automatiquement ajoutées à votre rapport.
1.2.2.2.4.2
Pour ajouter des instructions Imports et Using
aux espaces de noms de référence
Procédure
1.
Si le dossier Références n'est pas affiché dans l'Explorateur de solutions, cliquez sur Afficher tous les fichiers
dans la barre d'outils de l'Explorateur de solutions afin d'afficher tous les fichiers de projet.
2.
Dans l'Explorateur de solutions, développez le dossier Références.
3.
Vérifiez que les assemblies SAP Crystal Reports suivantes ont été ajoutées :
○
CrystalDecisions.CrystalReports.Engine
○
CrystalDecisions.Shared
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
31
4.
Sélectionnez Form1, puis dans le menu Affichage, cliquez sur Code.
5.
Au-dessus de la signature de classe, ajoutez une déclaration "Imports" [Visual Basic] ou "using" [C#] au
début de la classe contenant les espaces de noms SAP Crystal Reports suivants.
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
1.3
Principes fondamentaux du SDK
1.3.1
1.3.1.1
Architecture
Choisir le modèle d'objet correct pour votre projet
Pour choisir le modèle d'objet approprié à votre projet, vous devez comprendre les conventions relatives à
l'utilisation du contrôle CrystalReportViewer, ainsi que la manière dont ce contrôle interagit avec les autres
modèles d'objet.
Remarque
Dans cette documentation, un modèle d'objet fait référence à une classe principale et aux classes qui lui sont
associées, le tout formant un modèle de programmation. Dans SAP Crystal Reports, ces modèles d'objet sont
axés sur une classe principale qui encapsule un fichier de définition de rapport. Cette classe principale et le
modèle d'objet associé permettent d'interagir avec le rapport en le programmant.
Conventions relatives à l'utilisation du contrôle CrystalReportViewer
Une application Web efficace établit une séparation nette entre sa couche présentation et sa couche logique
métier sous-jacente.
La structure du contrôle ASP.NET va naturellement dans le sens de ce modèle de conception. Il encapsule les
informations de présentation dans le contrôle, puis lie ce contrôle à un objet ou un modèle d'objet sous-jacent qui
crée la logique métier.
CrystalReportViewer est un contrôle .NET conforme à cette architecture. Il fonctionne comme un objet
d'affichage dans le Web Form ou le Windows Form (couche présentation) et peut être lié à n'importe lequel des
modèles d'objet suivants :
●
Modèle d'objet ReportDocument
●
Modèle d'objet ReportClientDocument (Report Application Server)
32
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
●
Modèle d'objet InfoObject (fourni avec SAP Crystal Reports Server ou la plateforme SAP BusinessObjects
Business Intelligence)
Dans un scénario qui respecte les conventions, le contrôle CrystalReportViewer se lie à l'un des modèles d'objet
qui créent la logique métier, généralement pour la manipulation des rapports.
Dans ce scénario, l'interaction par programmation du contrôle CrystalReportViewer se limite à modifier les
paramètres d'affichage (masquer ou afficher la barre d'outils du visualiseur ou l'un des boutons qui la composent
par exemple).
Modèle d'objet CrystalReportViewer
Le contrôle CrystalReportViewer contient des propriétés et des méthodes qui permettent d'interagir sur la
manière dont ce dernier affiche les rapports. Il comporte également un petit nombre de propriétés et de
méthodes qui permettent d'interagir avec les rapports auxquels il est lié. Ces propriétés et méthodes constituent
un modèle d'objet limité.
Certains scénarios de liaison de rapports font appel au modèle d'objet CrystalReportViewer. Dans ces scénarios,
le contrôle CrystalReportViewer est directement lié à un rapport (en indiquant le chemin d'accès au rapport dans
un répertoire de fichiers par exemple) sans avoir préalablement encapsulé ce rapport dans un modèle d'objet.
Dans ce cas, étant donné que le contrôle CrystalReportViewer encapsule directement le rapport, vous devez
utiliser son modèle d'objet limité pour interagir avec le rapport.
Toutefois, dans la plupart des scénarios de liaison de rapports, l'utilisation de CrystalReportViewer en tant que
modèle d'objet est déconseillée. Il est préférable de faire appel au modèle d'objet ReportDocument pour les
raisons suivantes :
●
Le modèle d'objet CrystalReportViewer peut engendrer des conflits entre modèles d'objet. Ne mélangez pas
le modèle d'objet CrystalReportViewer avec d'autres modèles d'objet.
●
Le modèle d'objet CrystalReportViewer ne permet qu'une interaction limitée avec les rapports. Il ne contient
que quelques-uns unes des fonctionnalités disponibles dans le modèle d'objet ReportDocument.
●
Dans le modèle d'objet CrystalReportViewer, la séparation entre la couche présentation et la logique métier
sous-jacente n'est pas clairement établie.
Modèle d'objet ReportDocument
ReportDocument est un modèle d'objet plus puissant et plus complet que CrystalReportViewer. Il fait partie du
SDK de Crystal Reports .NET et permet une manipulation étendue du code des rapports.
Quel modèle d'objet utiliser ?
Si vous n'envisagez pas de mise à niveau vers SAP Crystal Reports Server ou vers la plateforme SAP
BusinessObjects Business Intelligence, il est recommandé d'utiliser le modèle d'objet ReportDocument pour vos
tâches de développement avec le SDK de SAP Crystal Reports.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
33
Remarque
Dans SAP Crystal Reports 10 ou versions ultérieures et dans SAP Crystal Reports pour Visual Studio 2005 et
versions ultérieures, le modèle d'objet ReportDocument a été associé au modèle d'objet
ReportClientDocument pour faciliter la mise à niveau vers une solution de reporting gérée.
1.3.1.2
Eviter de mélanger les modèles d'objet
Ne mélangez pas le modèle d'objet CrystalReportViewer avec d'autres modèles d'objet.
Utilisé en tant que modèle d'objet limité, CrystalReportViewer fonctionne correctement, à condition qu'il soit
directement lié au rapport par le biais du chemin d'accès à ce dernier.
En revanche, si vous encapsulez le rapport dans un autre modèle d'objet (tel que ReportDocument ou
ReportClientDocument), puis si vous liez le contrôle à ce modèle d'objet, n'utilisez plus le modèle d'objet
CrystalReportViewer. Le modèle d'objet fourni par le contrôle CrystalReportViewer devient alors redondant par
rapport au modèle d'objet plus puissant auquel il est lié. Par ailleurs, les paramètres appliqués au modèle d'objet
CrystalReportViewer sont visibles par l'autre modèle d'objet, ce qui peut engendrer des comportements
inattendus et des exceptions.
Supposons que vous utilisiez le modèle d'objet ReportDocument pour exporter ou imprimer un rapport mensuel à
partir du serveur. Si vous avez défini un paramètre de mois dans ce rapport à l'aide du modèle d'objet
CrystalReportViewer, il se peut que vous rencontriez des problèmes. Le modèle d'objet ReportDocument ne peut
pas voir les paramètres appliqués dans le modèle d'objet CrystalReportViewer. Il tente d'exporter ou d'imprimer le
rapport sans avoir connaissance du paramètre de mois défini, et affiche ensuite le mauvais mois ou génère une
exception.
La meilleure solution consiste donc à limiter l'utilisation du contrôle CrystalReportViewer aux paramètres
d'affichage du rapport uniquement lorsque ce contrôle a été lié à l'un des modèles d'objet sous-jacents.
1.3.1.3
SAP Crystal Reports Designer incorporé
Le SAP Crystal Reports Designer incorporé permet de créer ou de modifier des rapports. Il se compose d'une
interface utilisateur graphique pour la conception de rapports en WYSIWYG et d'une série d'experts conçus pour
simplifier la connectivité entre les données, leur tri, leur regroupement et d'autres opérations complexes de
conception de rapports. SAP Crystal Reports Developer contient une version améliorée du concepteur incorporé
qui permet de créer des rapports et des applications de reporting performants. Le concepteur incorporé inclus
dans SAP Crystal Reports, version développeur pour Microsoft Visual Studio contient plusieurs fonctionnalités
présentes dans SAP Crystal Reports Designer.
Rôle du SAP Crystal Reports Designer incorporé dans l'architecture
Le SAP Crystal Reports Designer incorporé est inclus dans la description de l'architecture, car il joue un rôle
primordial dans SAP Crystal Reports, version développeur pour Microsoft Visual Studio : il permet en effet de
34
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
créer les fichiers de rapport à afficher. Toutefois, le SAP Crystal Reports Designer incorporé n'intervient qu'au
moment de la conception. L'interaction avec les rapports et leur affichage, qui interviennent au moment de
l'exécution, sont assurés par le SDK de SAP Crystal Reports. Par conséquent, si le concepteur incorporé permet
de créer des rapports qui sont utilisés dans l'architecture, il ne fait pas partie de l'architecture elle-même.
Informations associées
Utilisation du SAP Crystal Reports Designer incorporé [page 647]
1.3.1.4
Contrôles du visualiseur de rapports
SAP Crystal Reports, version développeur pour Microsoft Visual Studio inclut des contrôles de format standard
pour l'affichage des rapports. Chaque contrôle encapsule des informations complexes liées à la présentation des
rapports dans un objet GUI, dans la boîte à outils.
Deux contrôles sont fournis :
Le contrôle CrystalReportViewer.
Ce contrôle affiche le rapport en utilisant une présentation de type page,
avec la possibilité de naviguer entres les pages.
Le contrôle
CrystalReportPartsViewer.
Ce contrôle affiche les informations de résumé sur le rapport dans une
petite fenêtre de type portail, avec la possibilité d'explorer le rapport en
profondeur par le biais d'une série de parties liées.
Pour afficher un rapport, il suffit de faire glisser le contrôle de la boîte à outils vers le Web Form ou le Windows
Form, puis d'affecter la propriété ReportSource de ce contrôle à un rapport.
Informations associées
Comment utiliser les contrôles visualiseur de rapports ? [page 43]
1.3.1.5
Modèles d'objet
SAP Crystal Reports, version développeur pour Microsoft Visual Studio, inclut un SDK qui contient deux modèles
d'objets. Avec un supplément de licence, le SDK peut être étendu à quatre modèles d'objet.
Les contrôles du visualiseur de rapports fournissent le point d'entrée dans le SDK. Cela est dû au fait que le
visualiseur de rapports affiche les rapports en les liant à un objet de rapport. Tous les modèles d'objet contenus
dans le SDK exposent et manipulent des objets de rapport.
Chaque modèle d'objet offre un degré de puissance et de complexité croissant :
●
Le modèle d'objet le plus simple est CrystalReportViewer.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
35
Le contrôle CrystalReportViewer d'un Web Form ou d'un Windows Form possède par définition une classe
sous-jacente du même nom. Cette classe CrystalReportViewer expose les propriétés et les méthodes qui
permettent de modifier la fonctionnalité d'affichage du contrôle et d'interagir avec les classes qui gèrent les
connexions à la base de données, les paramètres et les formules de sélection. Cet ensemble de classes
constitue le modèle d'objet le plus simple. La classe CrystalReportViewer se présente sous deux formes
différentes : l'une dans un espace de noms Windows et l'autre dans un espace de noms Web. De nombreux
éléments de ce modèle d'objet se retrouvent par conséquent en double dans les deux espaces de noms, avec
certaines différences propres aux plates-formes Windows et Web.
Les classes de ce modèle d'objet sont contenues dans l'espace de noms CrystalDecisions.Web pour la
version Web Form de ce contrôle, et dans l'espace de noms CrystalDecisions.Windows pour la version
Windows Form du contrôle.
●
ReportDocument est un modèle d'objet plus complet.
La classe ReportDocument constitue une passerelle vers un ensemble de classes contenues dans l'espace
de noms Engine et qui incluent Database, DataDefinition, ExportOptions, PrintOptions,
ReportDefinition, ReportOptions et SummaryInfo. Il s'agit d'un ensemble complet de classes qui offre
des fonctionnalités plus puissantes de personnalisation et d'interaction avec le rapport.
Les classes de ce modèle d'objet sont contenues dans l'espace de noms
CrystalDecisions.CrystalReports.Engine.
●
Les modèles d'objet suivants sont disponibles par le biais d'une mise à niveau :
○
ReportClientDocument, modèle d'objet offrant des fonctionnalités de modification de rapport plus
avancées.
Cette classe sert de passerelle vers un modèle d'objet plus volumineux constitué de nombreuses classes
contenues dans plusieurs espaces de noms. Elle expose la structure du rapport dans son intégralité via le
SDK, ce qui permet de créer ou de modifier par programmation chaque aspect du rapport au moment de
l'exécution.
Les classes de ce modèle d'objet sont contenues dans le groupe d'espaces de noms
CrystalDecisions.ReportAppServer.
Le modèle d'objet ReportClientDocument est fourni avec un RAS (Report Application Server) qui
nécessite l'acquisition d'une licence supplémentaire. Un Report Application Server est fourni avec
SAP Crystal Reports Server et la plateforme SAP BusinessObjects Business Intelligence.
○
InfoObject, un modèle d'objet complet pour interagir avec les fonctions de niveau plateforme de
SAP Crystal Reports Server ou de la plateforme SAP BusinessObjects Business Intelligence est
également disponible. Ce modèle est fourni avec la licence SAP Crystal Reports Server ou de plateforme
SAP BusinessObjects Business Intelligence.
Cette classe sert de passerelle vers le modèle d'objet de plateforme complet de
SAP Crystal Reports Server ou de la plateforme SAP BusinessObjects Business Intelligence.
Les classes de ce modèle d'objet sont contenues dans le groupe d'espaces de noms
CrystalDecisions.Enterprise.
Remarque
Le modèle d'objet InfoObject est fourni uniquement avec SAP Crystal Reports Server et la plateforme
SAP BusinessObjects Business Intelligence, qui nécessitent l'acquisition d'une licence supplémentaire.
Informations associées
Choisir le modèle d'objet correct pour votre projet [page 32]
36
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Comparaison des solutions de reporting de SAP BusinessObjects Business Intelligence [page 66]
1.3.1.5.1
Modèle d'objet CrystalReportViewer
La classe CrystalReportViewer a deux rôles :
●
Dans un Web Form ou un Windows Form, la classe CrystalReportViewer est exposée comme un contrôle .NET
et peut être ajoutée au formulaire pour afficher un rapport. Pour avoir des informations spécifiques sur le rôle
de cette classe en tant que contrôle .NET, voir Contrôles du visualiseur de rapports [page 35].
●
Dans le code sous-jacent du Web Form ou du Windows Form, la classe CrystalReportViewer fournit le modèle
d'objet le plus simple du SDK. Ce modèle d'objet sera examiné plus loin dans cette section.
La manière la plus simple d'insérer un rapport dans un Web Form ou Windows Form consiste à ajouter le contrôle
CrystalReportViewer au formulaire, puis, dans la classe code-behind, à affecter à la propriété ReportSource de la
classe CrystalReportViewer le chemin d'accès au rapport sous forme de chaîne.
En affectant le chemin du rapport directement au contrôle (plutôt que de placer le rapport dans un modèle d'objet
plus complexe tel que ReportDocument ou ReportClientDocument), vous limitez l'interface au modèle d'objet le
plus simple : CrystalReportViewer.
Comparaison de modèles d'objet CrystalReportViewer
CrystalReportViewer possède deux diagrammes de modèle d'objet, car le même nom de classe et de contrôle (et
par conséquent son modèle d'objet sous-jacent) est utilisé pour les applications Windows et Web. Ainsi, le modèle
d'objet CrystalReportViewer se répète-t-il (à quelques différences près) dans deux espaces de noms différents.
La version Windows du modèle d'objet CrystalReportViewer comporte les principales classes et les principaux
événements partagés par les versions Windows et Web du modèle d'objet.
La version Web du modèle d'objet CrystalReportViewer contient les mêmes classes et événements que la version
Windows, auxquels s'ajoutent les événements suivants relatifs au mode de chargement des pages ASPX.
Informations associées
Contrôles du visualiseur de rapports [page 35]
Liaison de rapports à l'aide du modèle d'objet CrystalReportViewer [page 172]
1.3.1.5.2
Modèle d'objet ReportDocument
La classe ReportDocument fournit un modèle d'objet plus complet pour le SDK que le modèle d'objet
CrystalReportViewer.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
37
La classe ReportDocument fait partie de l'espace de noms CrystalDecisions.CrystalReports.Engine.
Elle sert de passerelle vers un ensemble de classes contenues dans l'espace de noms Engine, ce qui offre une
palette d'outils de programmation plus large pour manipuler un rapport.
Modèle d'objet ReportDocument
Dans la section précédente, vous avez appris à utiliser le modèle d'objet de base CrystalReportViewer en
affectant directement au contrôle CrystalReportViewer le chemin d'accès à un rapport.
Au niveau suivant, vous allez utiliser le modèle d'objet ReportDocument pour encapsuler le rapport dans une
instance de ReportDocument avant de l'affecter au contrôle. Vous accédez ainsi au modèle d'objet plus
complexe et puissant fourni par ReportDocument.
Remarque
Etant donné que les modèles d'objet CrystalReportViewer et ReportDocument sont tous deux impliqués
dans ce processus (le premier pour charger et afficher le rapport, le second pour encapsuler et manipuler le
rapport), il est fréquent de confondre leur rôle respectif. Une fois le rapport encapsulé à l'aide du modèle
d'objet ReportDocument, toutes les manipulations portant sur le rapport doivent être limitées à ce modèle. Si
vous essayez d'utiliser les propriétés et les méthodes de CrystalReportViewer pour manipuler le rapport,
les deux modèles d'objet entrent en conflit et se comportent de manière imprévisible.
Une fois que vous avez ajouté un modèle d'objet, limitez l'utilisation du code de CrystalReportViewer à la
définition des propriétés d'affichage.
ReportDocument et ReportClientDocument (RAS)
Dans SAP Crystal Reports 9, ces deux modèles étaient complètement séparés. Dans SAP Crystal Reports 10 et
versions ultérieures, cette séparation essentielle entre les deux modèles d'objet a été supprimée. Le modèle
d'objet ReportDocument fonctionne désormais comme un proxy vers un sous-ensemble de fonctionnalités à
partir du modèle d'objet ReportClientDocument.
SAP Crystal Reports 2008 permet d'accéder à une version limitée du modèle d'objet ReportClientDocument
via la propriété ReportDocument.ReportClientDocument.
Informations associées
Tutoriels du modèle d'objet ReportDocument [page 340]
Cette section présente divers tutoriels basés sur le modèle d'objet ReportDocument.
Liaison de rapports à l'aide du modèle d'objet ReportDocument [page 200]
Modèle d'objet CrystalReportViewer [page 37]
Choisir le modèle d'objet correct pour votre projet [page 32]
38
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.3.1.5.3
Modèle d'objet ReportClientDocument (RAS)
ReportClientDocument est le modèle d'objet le plus puissant et le plus complet pour manipuler les rapports. Ce
modèle d'objet n'est fourni qu'avec un RAS (Report Application Server), disponible sous la forme d'un RAS
BusinessObjects Enterprise géré ou non géré.
Le modèle d'objet ReportClientDocument est constitué de nombreuses classes contenues dans divers espaces
de noms. Chaque espace de noms a pour préfixe CrystalDecisions.ReportAppServer. Ce modèle d'objet
expose la structure du rapport dans son intégralité dans le SDK. Ainsi, vous pouvez créer et modifier par
programmation chaque aspect du rapport au moment de l'exécution, ainsi qu'en enregistrer les modifications.
Une instance de ReportClientDocument comprend un rapport qui peut être modifié par programmation en
fonction de ses propriétés de classe. Ces propriétés sont liées à une série d'autres bibliothèques dans le SDK qui
contiennent des contrôleurs, des modèles de définition de données et des modèles de définition de rapport :
●
ReportDefinition correspond à la présentation du rapport, tel qu'indiqué dans le
●
DataDefinition correspond à l'Explorateur de champs dans le SAP Crystal Reports Designer.
●
RowsetController correspond aux valeurs de données traitées de chaque ligne de détails, lors de la
SAP Crystal Reports Designer.
visualisation du rapport au moment de l'exécution.
Les instances de ReportClientDocument peuvent être des instanciations :
●
d'un fichier .rpt existant chargé à partir d'un répertoire, puis modifié avec les classes de définition de rapport
et de définition de données du SDK ReportClientDocument ;
●
d'un nouveau rapport entièrement vide créé avec les classes de définition de rapport et de définition de
données du SDK ReportClientDocument.
Cette instance de classe ReportClientDocument peut être chargée uniquement durant le temps nécessaire
pour transmettre l'instance au visualiseur pour affichage, avant qu'elle ne soit mise hors de portée. Toutefois,
vous pouvez également modifier l'instance de classe, puis l'enregistrer en tant que rapport (.rpt) dans un
répertoire avec l'une des classes du contrôleur.
Pour obtenir des informations détaillées sur le modèle d'objet ReportClientDocument, consultez la
documentation du SDK .NET RAS de SAP BusinessObjects.
ReportClientDocument dans SAP Crystal Reports 9
Avec l'application SAP Crystal Reports 9 (version Advanced) fournie avec le RAS non géré et les assemblys
RAS .NET, il était nécessaire de programmer le modèle d'objet ReportClientDocument. Les développeurs
pouvaient ainsi créer des projets .NET qui exploitaient le modèle d'objet ReportClientDocument.
Toutefois, cela impliquait également que les projets initialement créés avec le modèle d'objet ReportDocument
fourni avec SAP Crystal Reports devaient être intégralement reprogrammés pour être utilisés avec le modèle
d'objet ReportClientDocument inclus dans le RAS. Cela tenait au fait que les deux modèles d'objet étaient
complètement séparés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
39
ReportClientDocument dans SAP Crystal Reports 10 et versions ultérieures
Dans SAP Crystal Reports 10, cette séparation essentielle entre les deux modèles d'objet a été supprimée. Pour
ce faire, le modèle d'objet ReportDocument a été réécrit de façon à ce qu'il fonctionne comme un proxy vers un
sous-ensemble de fonctionnalités à partir du modèle d'objet ReportClientDocument. Les classes du modèle
d'objet ReportDocument exposent les mêmes signatures de propriété et de méthode qu'avant, mais la
fonctionnalité sous-jacente a été modifiée de manière à rediriger chaque propriété et chaque méthode vers les
propriétés et les méthodes du modèle d'objet ReportClientDocument plus puissant.
Cela ne signifie pas pour autant qu'une version de base de SAP Crystal Reports Developer offre un accès intégral
à un serveur RAS non géré ou au modèle d'objet ReportClientDocument. La version de base de
SAP Crystal Reports permet toujours de n'accéder qu'au modèle d'objet ReportDocument (même si le modèle
d'objet ReportDocument fonctionne comme un proxy vers un sous-ensemble du modèle d'objet
ReportClientDocument). Le moteur de création de rapports d'origine fourni dans les précédentes versions de
SAP Crystal Reports a été remplacé par une version limitée et incorporée du moteur de création de rapports RAS.
Vous ne pouvez installer le modèle d'objet ReportClientDocument et y accéder directement qu'en acquérant
une licence mise à niveau du serveur RAS non géré. A ce stade, tout le code correspondant au modèle d'objet
ReportDocument peut être facilement redirigé vers le serveur RAS distinct en définissant deux propriétés de
n'importe quelle instance de rapport donnée, et le modèle d'objet ReportClientDocument sous-jacent est
désormais accessible directement, lorsque vous l'extrayez de la propriété de la classe ReportDocument.
1.3.1.5.4
Modèle d'objet InfoObject (BOE)
Le modèle d'objet InfoObject est fourni avec les mises à niveau de SAP Crystal Reports Server et de la plateforme
SAP BusinessObjects Business Intelligence.
Remarque
Pour en savoir plus, voir Solutions de reporting de SAP BusinessObjects Business Intelligence [page 65].
InfoObject offre un modèle d'objet de niveau plateforme pour le SDK. InfoObject fonctionne comme une
classe de base dans laquelle de nombreux objets Enterprise sont encapsulés dans des classes dérivées. La
classe dérivée qui représente les rapports est la classe CrystalDecisions.Enterprise.Desktop.Report.
Le SDK de la plateforme SAP BusinessObjects Business Intelligence est construit autour de la classe d'objet
InfoObject et des classes assurant sa prise en charge.
Classe InfoObject
La classe InfoObject est utilisée dans le SDK pour représenter un large éventail d'entités d'informations. Cela
inclut à la fois des entités physiques, telles que des fichiers de rapport ou des fichiers PDF, et des entités du
réseau, telles que les utilisateurs, les serveurs ou les connexions FTP.
40
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
La classe InfoObject est une classe de base pour de nombreuses classes étendues correspondant à ces entités
d'informations de façon plus détaillée. Les classes étendues qui héritent d'InfoObject sont les suivantes :
Report, User, Server, Folder, Program, Ftp, Smtp, Word, Excel et Pdf.
La manipulation des instances de classes étendues et de classes InfoObject vous permet de créer une application
cliente ou une application de bureau.
Classes assurant la prise en charge
Deux autres classes prennent en charge la classe InfoObject.
La classe InfoStore La classe InfoStore fait office de contrôleur, ou passerelle, vers le référentiel CMS (Central
Management Server) (qui est une base de données), où sont stockées toutes les instances
d'InfoObject. La classe InfoStore est utilisée pour instancier, extraire et valider toutes les
instances de classe InfoObject stockées dans le référentiel CMS.
La classe indexée
InfoObjects
La classe indexée InfoObjects contient plusieurs instances d'InfoObject. Elle est utilisée par
InfoStore pour déplacer les instances InfoObject vers et depuis le référentiel CMS.
La classe Infostore ne peut pas gérer directement les instances InfoObject. Elles doivent être d'abord encapsulées
dans la classe indexée InfoObjects. Par le biais de cette classe indexée, chaque instance d'InfoObject peut être
ajoutée, extraite, mise à jour ou planifiée.
Remarque
Pour en savoir plus sur le SDK de SAP Crystal Reports Server ou de la plateforme SAP BusinessObjects
Business Intelligence, consultez la documentation correspondante.
Informations associées
Choisir le modèle d'objet correct pour votre projet [page 32]
1.3.1.6
Comparaison des architectures dans les solutions de
reporting SAP Business Intelligence
Quatre solutions de reporting SAP Business Intelligence sont disponibles :
●
SAP Crystal Reports, version développeur pour Microsoft Visual Studio
●
SAP Crystal Reports Developer
●
Report Application Server non géré (RAS)
●
SAP Crystal Reports Server ou plateforme SAP BusinessObjects Business Intelligence
Une différence d'architecture fondamentale entre chaque solution de reporting repose sur la façon dont le moteur
de rapport est placé et implémenté.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
41
Définition du moteur de rapport
Le moteur de rapport est une composante essentielle de chaque solution de reporting. Il traite toutes les
demandes utilisateur et génère en sortie les informations concernant les rapports.
La capacité maximale de traitement simultané des demandes utilisateur varie d'une solution à l'autre. Dans
certaines solutions, elle est conditionnée par la conception de l'architecture ou par les licences.
Les autres pièces maîtresses de chaque solution de reporting sont les suivantes :
●
le fichier de définition de rapport (.rpt) ;
●
la source de données ;
●
le visualiseur de rapports ;
●
le SDK ;
●
Une structure de plateforme (qui figure dans SAP Crystal Reports Server ou la plateforme SAP
BusinessObjects Business Intelligence).
Interaction du moteur de rapport avec les autres pièces maîtresses
Le moteur de rapport utilise le fichier de définition de rapport (.rpt) comme modèle. Il extrait ensuite les données
de la source de données et utilise la définition de rapport pour fournir le rendu du rapport demandé, puis le
transmet au visualiseur de rapports. Les informations reçues du visualiseur ou codées à l'aide du SDK d'interface
déclenchent des traitements supplémentaires de la part du moteur de rapport qui exécute d'autres opérations sur
le rapport.
Différences de configuration du moteur de rapport entre les solutions de
reporting SAP Business Intelligence
●
Le moteur de rapport est incorporé.
Dans SAP Crystal Reports, version développeur pour Microsoft Visual Studio, le moteur de rapport est
incorporé dans l'application.
La capacité maximale de traitement simultané de ce moteur de rapport incorporé est limitée à trois
demandes utilisateur. Cela n'est pas dû à une limite de licence arbitraire, mais à une restriction liée à
l'architecture du moteur de rapport incorporé.
●
Le moteur de rapport est extrait dans un processus serveur de rapports distinct.
Dans la solution qui fait appel au Report Application Server (RAS) non géré, le moteur de rapport est extrait
dans un processus serveur distinct. Ce processus serveur peut s'exécuter sur le même ordinateur ou être
placé sur un ordinateur distinct de manière à augmenter les performances en déchargeant le traitement de
votre serveur d'applications. Le serveur RAS non géré n'est plus disponible en tant qu'option de mise à
niveau. Il est recommandé d'effectuer à la place une mise à niveau vers SAP Crystal Reports Server. Pour en
savoir plus, voir Solutions de reporting de SAP BusinessObjects Business Intelligence [page 65].
●
Le processus serveur de rapports distinct est encapsulé dans une architecture de plateforme complète.
Dans la solution SAP Crystal Reports Server ou de plateforme SAP BusinessObjects Business Intelligence,
une architecture de plateforme complète, qui encapsule le processus serveur de rapports distinct (RAS), a
été ajoutée. Le Report Application Server (RAS) géré devient alors un simple serveur, parmi les nombreux
42
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
autres serveurs qui constituent l'architecture de plateforme. Ce type d'architecture offre une large palette de
fonctionnalités supplémentaires, telles que la planification, l'équilibrage des charges, le basculement et une
évolutivité à la fois verticale et horizontale.
1.3.2
Contrôle CrystalReportViewer
Pour afficher un rapport Crystal, vous devez ajouter un contrôle CrystalReportViewer à votre application. Le
contrôle CrystalReportViewer permet de lier et d'afficher des rapports dans le .NET Framework. Le contrôle
CrystalReportViewer par défaut inclut des éléments d'interface utilisateur pour vous aider à afficher, enregistrer
et parcourir un rapport.
Les deux contrôle CrystalReportViewer les plus fréquemment utilisés sont le contrôle CrystalReportViewer pour
les applications Windows, auquel on accède via la classe
CrystalDecisions.Windows.Forms.CrystalReportViewer, et le contrôle CrystalReportViewer pour les
sites Web, auquel on accède via la classe CrystalDecisions.Web.CrystalReportViewer. Pour en savoir
plus, voir la Référence de l'API .NET SAP Crystal Reports.
Remarque
Un contrôle CrystalReportViewer n'est nécessaire que si vous avez l'intention d'afficher des rapports Crystal.
Personnalisation du contrôle CrystalReportViewer
En fonction de votre application, vous pouvez modifier certains éléments du contrôle par défaut.
SAP Crystal Reports vous permet de personnaliser l'aspect et la convivialité du visualiseur dans votre application
de différentes manières, notamment :
●
La barre d'outils CrystalReportViewer peut être supprimée du visualiseur.
●
Les boutons de la barre d'outils CrystalReportViewer peuvent être ajoutés ou supprimés par programmation.
●
Le contrôle CrystalReportViewer prend en charge la personnalisation via la CSS ou Thèmes.
Informations associées
Personnalisation du contrôle CrystalReportViewer [page 225]
Visualisation d'un rapport [page 165]
1.3.2.1
Comment utiliser les contrôles visualiseur de
rapports ?
Les contrôles visualiseur de rapports sont des contrôles .NET qui peuvent être ajoutés à un formulaire dans une
application Web ou Windows pour afficher des rapports dans ce formulaire.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
43
Lorsque vous envisagez de générer une application à l'aide du SDK de SAP Crystal Reports, l'un des points les
plus importants à déterminer concerne l'utilisation des contrôles visualiseur de rapports. Connaître les principes
fondamentaux du SDK qui influencent ces contrôles vous aidera à choisir la structure la mieux adaptée à votre
projet SAP Crystal Reports, version développeur pour Microsoft Visual Studio.
Définition des contrôles .NET
Les contrôles Microsoft .NET forment une classe particulière de contrôles qui s'affichent dans la boîte à outils
Visual Studio. Ils sont ajoutés à un Web Form ou un Windows Form en tant qu'objets GUI et héritent des
caractéristiques d'une classe de contrôles de base commune. Les contrôles .NET classiques sont notamment
Button, DropDownList, CheckBox, TextBox ou DataGrid.
Les contrôles Microsoft .NET respectent la convention selon laquelle la couche présentation doit être séparée de
la couche logique métier. Les informations d'affichage sont encapsulées dans le contrôle lui-même dans le
Web Form ou le Windows Form. Dans la classe code-behind, le contrôle .NET est instancié en tant qu'instance de
niveau classe. Cette variable d'instance permet d'accéder aux propriétés, méthodes et événements du contrôle.
Les contrôles Microsoft .NET sont identiques d'un point de vue fonctionnel pour les Windows Forms comme pour
les Web Forms. Le .NET Framework permet de visualiser chaque page Web sous la forme d'un formulaire
contenant des contrôles, comme dans une application Windows.
Pourquoi SAP Crystal Reports utilise-t-il des contrôles .NET pour la
visualisation des rapports ?
L'un des avantages des outils de création de rapports tient au fait qu'ils encapsulent toutes les opérations
complexes liées à la structure, à la conception et au rendu des rapports dans un outil GUI très simple. De la même
manière, les contrôles .NET encapsulent des opérations complexes d'affichage et de remplissage de données
dans un objet GUI simple dans un Web Form ou un Windows Form.
L'utilisation de contrôles .NET permet de regrouper les opérations complexes d'affichage et de création de
rapports. Toutes les informations complexes liées aux rapports, qui étaient auparavant encapsulées uniquement
dans l'application SAP Crystal Reports autonome, sont désormais encapsulées dans un contrôle .NET comme
visualiseur de rapports.
Combien y a t'il de contrôles visualiseur de rapports ?
SAP Crystal Reports, version développeur pour Microsoft Visual Studio contient deux versions du contrôle
CrystalReportViewer : une pour les applications Web et l'autre pour les applications Windows. Le contrôle
CrystalReportViewer, situé dans l'espace de noms CrystalDecisions.Web, est utilisé par les projets Web ASP.NET.
Le contrôle CrystalReportViewer, situé dans l'espace de noms CrystalDecisions.Windows.Forms, est utilisé par
les projets Windows.
Le contrôle CrystalReportPartsViewer permet d'afficher seulement quelques parties des rapports dans une page
Web.
44
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Affichage d'un rapport à l'aide du contrôle CrystalReportViewer
Le contrôle CrystalReportViewer n'affiche qu'un rapport à la fois. Le rapport affiché par le contrôle dépend du
rapport que vous avez lié à votre code. Pour indiquer au contrôle le rapport qu'il doit afficher, vous devez lier sa
propriété ReportSource à un rapport particulier. Au moment de l'exécution, le contrôle charge le rapport lié à sa
propriété ReportSource et l'affiche.
Dans sa forme la plus simple, l'affectation se présente de la manière suivante :
crystalReportViewer1.ReportSource = "C:\WorldSalesReport.rpt"
crystalReportViewer1.ReportSource = "C:\\WorldSalesReport.rpt";
Dans cet exemple, le rapport est lié au contrôle directement à partir de son chemin d'accès au répertoire de
fichiers.
Il s'agit de la manière la plus élémentaire de lier un rapport au contrôle CrystalReportViewer.
Est-ce le cas du contrôle CrystalReportViewer ?
Non. Le contrôle CrystalReportViewer se lie à un objet de rapport et non à un objet de données.
En fait, le rôle du contrôle CrystalReportViewer est différent de celui des autres contrôles .NET. Les autres
contrôles .NET se lient aux données et mettent en forme les données brutes sur la page. Dans la mesure où le
composant SAP Crystal Reports Designer incorporé effectue cette opération automatiquement chaque fois qu'il
crée un rapport (qui, par définition, encapsule l'extraction et l'affichage des données), le contrôle
CrystalReportViewer n'intervient que dans l'affichage d'un objet de rapport.
Le tableau suivant effectue une comparaison entre la liaison à un contrôle de données .NET par rapport à la liaison
à un contrôle CrystalReportViewer.
Type de contrôle
Se lie à
Connectivité à la couche suivante
Contrôle de données .NET (tel que
le contrôle DataGrid)
un objet de données (DataSet, Data­ Aucun
Reader, DataView, IDictionary, ICol­
lection, DataTable).
Contrôle visualiseur de rap­
un objet de rapport (qui encapsule
ports .NET (tel que le contrôle Crys­ un fichier de rapport Crystal).
talReportViewer)
La connectivité entre données est
intégrée au fichier de rapport Crys­
tal, ce qui permet une connexion à
diverses sources de données, telles
que ODBC et OleDb, ainsi qu'aux
objets DataReader et DataSet.
Pour vous aider à vous souvenir qu'un contrôle CrystalReportViewer se lie à un objet de rapport et non à un objet
de données, la propriété source du contrôle visualiseur de rapports s'appelle ReportSource (et non DataSource).
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
45
Liaison de rapports automatique
Le contrôle CrystalReportViewer se distingue également de la plupart des autres contrôles .NET en ce sens qu'il
est inutile d'appeler manuellement une méthode de liaison pour effectuer une liaison. Ce contrôle lie en effet
automatiquement le visualiseur de rapports à l'objet de rapport.
Informations associées
Visualisation d'un rapport [page 165]
1.3.2.1.1
Pour ajouter un contrôle CrystalReportViewer à une
application Windows
Procédure
1.
Ouvrez un Windows Form dans l'onglet Conception.
2.
Dans la Boîte à outils, ouvrez le nœud Reporting afin de localiser le contrôle CrystalReportViewer.
Remarque
Dans les versions précédentes de Visual Studio, le contrôle CrystalReportViewer apparaissait dans le
nœud Crystal Reports.
3.
Faites glisser le contrôle CrystalReportViewer sur le formulaire.
4.
Dans le menu Fichier, cliquez sur Enregistrer tout.
Résultats
Si vous ajoutez un contrôle CrystalReportViewer à votre application, les références aux assemblies
SAP Crystal Reports seront automatiquement ajoutées à votre rapport.
1.3.2.1.2
site Web
Pour ajouter un contrôle CrystalReportViewer à un
Procédure
1.
46
Ouvrez la page Default.aspx.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
2.
Cliquez sur le bouton Design au bas du formulaire.
3.
Dans la Boîte à outils, ouvrez le nœud Reporting afin de localiser le contrôle CrystalReportViewer.
Remarque
Dans les versions précédentes de SAP Crystal Reports, version développeur pour Microsoft Visual Studio,
le contrôle CrystalReportViewer apparaissait dans le nœud Crystal Reports.
4.
Faites glisser le contrôle CrystalReportViewer sur le Web Form.
5.
Dans le menu Fichier, cliquez sur Enregistrer tout.
Résultats
Si vous ajoutez un contrôle CrystalReportViewer à votre application, les références aux assemblies
SAP Crystal Reports seront automatiquement ajoutées à votre rapport.
1.3.2.1.3
Liaison du contrôle CrystalReportViewer à un
fichier sur disque
Contexte
La manière la plus simple de lier un contrôle CrystalReportViewer à un rapport Crystal est de définir la propriété
ReportSource sur un emplacement du disque. Ce rapport non incorporé est affiché lors de l'exécution de
l'application.
Cette opération lie le rapport directement au contrôle. Toutes les interactions par programmation avec le rapport
doivent être effectuées dans le modèle d'objet limité CrystalReportViewer.
Procédure
1.
Ajoutez un contrôle CrystalReportViewer à l'application Windows ou au site Web.
2.
Ouvrez le Web Form ou Windows Form.
3.
Dans le menu Affichage, cliquez sur Code.
4.
Définissez la propriété ReportSource sur l'emplacement du rapport sur votre système de fichiers local.
○
Lors de l'utilisation d'une application Windows Form ou d'un site Web :
myCrystalReportViewer.ReportSource = "C:\MyReport.rpt"
crystalReportViewer.ReportSource = "C:\\MyReport.rpt";
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
47
○
Lors de l'utilisation d'une application WPF :
myCrystalReportViewer.ViewerCore.ReportSource = "C:\MyReport.rpt"
crystalReportViewer.ViewerCore.ReportSource = "C:\\MyReport.rpt";
1.3.2.2
Panneau Tâches guidées
Dans Visual Studio 2005 ou versions ultérieures, lorsque vous ajoutez un contrôle .NET à un Web Form ou un
Windows Form, le panneau des tâches guidées s'affiche. Il s'agit d'un petit panneau fixé dans l'angle supérieur
droit du contrôle .NET. Il contient des cases à cocher et des listes déroulantes qui permettent aux développeurs
de sélectionner des options de connectivité et d'autres types d'option pour le contrôle. Cette fonctionnalité réduit
considérablement le temps consacré par le développeur à l'écriture du code.
Dans un site Web, les sélections effectuées dans le panneau des tâches guidées génèrent automatiquement du
code XML dans la page ASPX.
Dans un projet Windows, les sélections effectuées dans le panneau des tâches guidées génèrent
automatiquement du code dans un fichier de classe masqué. Ce fichier de classe masqué est une classe
"partielle" qui sert d'addenda à la classe Windows Form existante. Les classes partielles sont une nouvelle
fonctionnalité de .NET Framework version 2.0.
Le panneau Tâches guidées permet de lier rapidement et facilement le contrôle CrystalReportViewer au contrôle
CrystalReportSource. Lorsque vous ajoutez le contrôle CrystalReportViewer à la page, le panneau des tâches
guidées s'affiche automatiquement en indiquant une série d'étapes permettant de créer et de configurer le
contrôle CrystalReportSource.
Le contrôle CrystalReportViewer fait très fréquemment appel au panneau des tâches guidées. Les sélections
accessibles dans ce panneau diffèrent selon que vous travaillez sur un projet Web ou sur un projet Windows.
Limites des tâches guidées avec le modèle de programmation allégée
Les tâches guidées facilitent l'utilisation d'un modèle de programmation allégée qui génère le code
automatiquement plutôt que d'avoir à l'écrire manuellement.
L'auto-génération du code permet, au premier abord, de gagner du temps mais il est ensuite difficile de passer
d'un mode de codage allégé à un mode classique lorsque vous voulez rendre un projet plus puissant ou flexible.
1.3.2.2.1
Panneau des tâches guidées CrystalReportViewer
pour projets Windows
Le panneau des tâches guidées CrystalReportViewer pour projets Windows permet de créer, de sélectionner
ou de modifier un rapport Crystal. Il offre également la possibilité de personnaliser le contrôle
CrystalReportViewer.
48
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Le panneau des tâches guidées pour projets Windows comporte les fonctionnalités suivantes :
Créer un rapport Crystal...
Cette commande de menu permet de créer un rapport à l'aide du composant SAP Crystal Reports Designer
incorporé.
Une fois l'opération terminée, le code du rapport est généré automatiquement de manière à lier ce dernier au
contrôle CrystalReportViewer pour un affichage immédiat.
Modifier le rapport Crystal actuel
Cette commande de menu permet de modifier plus en détail le rapport qui a été sélectionné ou créé pour la
source de rapport.
Choisir un rapport Crystal
Cette commande de menu vous permet de sélectionner un rapport Crystal ou un objet ReportDocument en tant
que source de rapport du contrôle CrystalReportViewer.
Une fois l'opération terminée, le code du rapport est généré automatiquement de manière à lier ce dernier au
contrôle CrystalReportViewer pour un affichage immédiat.
Effacer la source du rapport
Cette commande de menu efface la propriété ReportSource du contrôle CrystalReportViewer.
Choisissez une vue du volet des outils :
Cette commande de menu permet de sélectionner le volet des outils à afficher par défaut lors du chargement du
rapport. Vous pouvez sélectionner l'arborescence des groupes ou le panneau des paramètres ou encore choisir
de laisser vide le volet des outils.
Afficher la barre d'outils
Cette case à cocher permet d'afficher ou de masquer la barre d'outils du contrôle CrystalReportViewer.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
49
Afficher la barre d'état
Cette case à cocher permet d'afficher ou de masquer la barre d'état dans le contrôle CrystalReportViewer.
Annuler l'ancrage dans le conteneur parent
Cette commande de menu permet de définir la propriété Dock sur "None" ou sur "Fill". Par défaut, lorsqu'un
contrôle CrystalReportViewer est placé dans un Windows Form, la propriété Dock est définie sur "Fill". Si cette
commande de menu est sélectionnée et si la propriété Dock est définie sur "None", le contrôle
CrystalReportViewer peut être déplacé et redimensionné dans le Windows Form ou dans d'autres conteneurs
(contrôle Panel dans un Windows Form par exemple).
1.3.2.2.2
Panneau des tâches guidées CrystalReportViewer
pour sites Web
Le panneau des tâches guidées CrystalReportViewer pour sites Web permet de créer, de sélectionner ou de
modifier un rapport Crystal. Il offre également la possibilité de personnaliser le contrôle CrystalReportViewer et
d'activer la consignation des erreurs liées aux connexions à la base de données et aux valeurs de paramètre.
Le panneau des tâches guidées pour sites Web comporte les fonctionnalités suivantes :
Sélection de la source du rapport
Cette liste déroulante permet de sélectionner n'importe quelle source de rapport existante ou d'en créer une
nouvelle.
Une fois l'opération terminée, le code du rapport est généré automatiquement de manière à lier ce dernier au
contrôle CrystalReportViewer pour un affichage immédiat.
Configurer la source de rapport...
Cette commande de menu permet de configurer plus en détail la source de rapport qui a été sélectionnée ou
créée.
Modifier le rapport...
Cette commande de menu permet de modifier plus en détail le rapport qui a été sélectionné ou créé pour la
source de rapport.
50
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Choisissez une vue du volet des outils :
Cette commande de menu permet de sélectionner le volet des outils à afficher par défaut lors du chargement du
rapport. Vous pouvez sélectionner l'arborescence des groupes ou le panneau des paramètres ou encore choisir
de laisser vide le volet des outils.
Activer la barre d'outils
Cette case à cocher permet d'afficher ou de masquer la barre d'outils du contrôle CrystalReportViewer.
Activer la vue de rapport
Cette case à cocher permet d'afficher ou de masquer la vue de rapport dans le contrôle CrystalReportViewer.
Remarque
Vous pouvez désactiver la vue de rapport si vous souhaitez utiliser l'arborescence des groupes seule dans un
Web Form.
Activer l'invite de connexion à la base de données
Cette case à cocher permet d'activer ou de désactiver la consignation des erreurs liées aux connexions à la base
de données. Lorsqu'un rapport ne fournit pas toutes les informations nécessaires à sa connexion à une base de
données SQL Server, le message d'erreur "Echec de la connexion" est renvoyé. Toutefois, si la case à cocher est
activée, une fenêtre vous invitant à saisir les informations de connexion requises s'affiche.
Activer l'invite de saisie de paramètre
Cette case à cocher permet d'activer ou de désactiver la consignation des erreurs liées aux valeurs de paramètre.
Lorsqu'un rapport ne fournit pas toutes les informations nécessaires pour désigner un paramètre utilisé dans des
critères de sélection, le message d'erreur "Valeurs de paramètres manquantes" est renvoyé. Toutefois, si la case
à cocher est activée, une fenêtre vous invitant à saisir les informations requises sur le paramètre s'affiche.
Réutiliser la valeur des paramètres lors de l'actualisation du rapport
Cette case à cocher permet d'activer ou de désactiver la persistance des paramètres lors de l'actualisation des
rapports. Lorsque cette case à cocher est activée, les valeurs de paramètre transmises à un rapport lors de son
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
51
premier chargement son rendues persistantes. En revanche lorsqu'elle est désactivée, vous devez écrire du code
pour que les valeurs de paramètre soient transmises au rapport lors de chaque actualisation ultérieure.
Informations associées
Panneau des tâches guidées CrystalReportViewer pour projets Windows [page 48]
1.3.2.3
Contrôle CrystalReportPartsViewer
Dans le .NET Framework, le contrôle CrystalReportPartsViewer permet de lier et d'afficher un rapport
Crystal sous la forme d'une série de parties liées. Ceci réduit considérablement la zone requise pour afficher les
informations du rapport et est idéal pour afficher de petites quantités d'informations sur une page Web du portail.
Remarque
Les parties de rapport sont utilisées uniquement dans les sites Web ; elles ne sont pas disponibles pour les
projets Windows.
Le contrôle CrystalReportPartsViewer a été amélioré pour prendre en charge la structure des composants
WebPart, une infrastructure de portail introduite avec la version 2.0 d'ASP.NET.
La structure des composants WebPart permet aux développeurs d'encapsuler des contrôles de la page au sein de
composants WebPart configurables.
Informations associées
Tutoriel : Affichage de parties de rapport à l'aide du contrôle CrystalReportPartsViewer [page 499]
Dans ce tutoriel, vous allez apprendre à diviser le rapport en plusieurs parties et à afficher chaque partie en
cliquant sur une série de liens hypertexte successifs.
1.3.2.4
Contrôle CrystalReportSource
Le contrôle CrystalReportSource est un élément du modèle de développement d'applications avec balises fourni
avec ASP.NET version 2.0.
Remarque
Le contrôle CrystalReportSource n'est disponible que pour les sites Web.
Dans la structure de contrôle DataSource, les contrôles .NET visuels se connectent aux contrôles DataSource non
visuels (contrôles qui ne gèrent pas les informations d'affichage). Cette nouvelle structure DataSource encapsule
52
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
les informations de connectivité des données écrites sous forme de lignes de code dans les contrôles .NET insérés
dans le Web Form.
Dans la fenêtre Design, Visual Studio affiche le nom des contrôles connectés les uns aux autres.
Les fournisseurs de données .NET possèdent leur propre implémentation du contrôle DataSource. Par exemple,
le contrôle SqlDataSource accède à Microsoft SQL Server, tandis que le contrôle OracleDataSource accède à
Oracle.
En ce qui concerne SAP Crystal Reports, le contrôle est implémenté en tant que contrôle CrystalReportSource.
Cette conception s'inspire de la conception d'ASP.NET version 1.0 dans laquelle le contrôle CrystalReportViewer
contient une propriété ReportSource au lieu d'une propriété DataSource plus classique.
La différence entre le contrôle CrystalReportSource et le contrôle DataSource réside dans le fait que le premier
contient un rapport qui encapsule les données, tandis que le second (tel que SqlDataSource) contient les données
elles-mêmes.
1.3.3
Quelle méthode de persistance utiliser avec
SAP Crystal Reports ?
Lorsque vous envisagez de générer une application Web à l'aide du SDK de SAP Crystal Reports, l'un des points
les plus importants à prendre en considération concerne la méthode de persistance que vous allez utiliser.
Qu'est ce que la persistance ?
Les pages Web ne conservent ni le statut ni les informations d'identification d'un utilisateur lorsqu'il se connecte à
un site Web. Chaque page Web est demandée à partir d'un serveur, envoyée à l'utilisateur et le processus s'arrête
là. Cela fonctionne tant qu'il est question de lire des données texte, mais devient problématique lorsqu'il s'agit de
concevoir une application Web qui doit conserver les informations sur un utilisateur au fur et à mesure que les
pages sont rechargées et redirigées.
La persistance fait référence à l'utilisation d'un mécanisme qui conserve le statut de chaque utilisateur (tel que la
page de rapport actuelle visualisée par chaque utilisateur) indépendamment du fait que les pages sont rechargées
et redirigées.
Conventions relatives à la persistance
Cette section décrit les conventions utilisées pour rendre persistantes des modifications apportées à un rapport
Crystal dans une page Web tandis que ce rapport est actualisé au cours du rechargement de la page Web. Ces
changements peuvent aller du plus simple, comme accéder à la page suivante après que l'utilisateur a cliqué sur
le bouton Page suivante du visualiseur de rapports, au plus complexe, comme afficher des données
complètement différentes après modification des paramètres d'un rapport.
La persistance doit s'appliquer à ce qui suit :
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
53
●
Le contrôle CrystalReportViewer.
●
le rapport lié au contrôle CrystalReportViewer.
Comment assurer la persistance du statut dans les applications ASP et
ASP.NET
Dans les applications ASP et ASP.NET classiques, la persistance du statut est assurée soit par le navigateur Web,
soit par le serveur Web comme indiqué dans le tableau suivant.
Environnement
Client ou serveur ?
Nom
Méthode
ASP*
Navigateur client
Champs de formulaire
Transmet des paires nom/
valeur au fil des pages
Web par le biais de
champs de soumission de
formulaire.
ASP*
Navigateur client
Arguments URL
Transmet des paires nom/
valeur au fil des pages
Web par le biais d'argu­
ments URL.
ASP*
Navigateur client
Cookie
Affecte des paires nom/
valeur à un cookie sur le
navigateur client, puis ex­
trait le cookie dans une
nouvelle page.
ASP*
Serveur Web
Objet Session
Affecte des objets instan­
ciés à l'objet Session sur le
serveur, puis extrait le
contenu de cet objet Ses­
sion dans une nouvelle
page.
ASP*
Serveur Web
Objet Application
Affecte des objets instan­
ciés à l'objet Application
sur le serveur, puis extrait
le contenu de cet objet Ap­
plication dans une nou­
velle page.
ASP.NET
Navigateur client
Objet ViewState
Affecte des valeurs de
chaîne à l'objet ViewState
du Web Form ASP.NET.
ASP.NET
Serveur Web
Objet Cache
Identique à l'objet Applica­
tion, mais avec des fonc­
tionnalités avancées.
* Toutes les méthodes de persistance ASP continuent à fonctionner dans ASP.NET.
54
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Quelles sont les méthodes de persistance les mieux adaptées à
SAP Crystal Reports ?
Les méthodes de persistance les mieux adaptées à SAP Crystal Reports sont ViewState, Session et Cache.
Informations associées
ViewState et persistance du modèle d'objet CrystalReportViewer [page 55]
1.3.3.1
ViewState et persistance du modèle d'objet
CrystalReportViewer
Définition de ViewState
ViewState est une méthode basée sur le navigateur utilisée dans ASP.NET pour rendre persistant le statut de
visualisation, c'est-à-dire le Web Form. Sa fonction principale consiste à assurer la persistance des contrôles Web.
Les contrôles Web (également appelés contrôles serveur Web) sont calqués sur les contrôles Windows introduits
dans Visual Basic. Les contrôles Windows sont des objets contenus dans le formulaire qui encapsulent une partie
de fonctionnalité d'affichage telle qu'un champ de texte, un bouton ou une table de données.
Les contrôles Web sont semblables aux contrôles Windows. Tout comme les contrôles Windows, ils agissent sur
deux niveaux : dans la page Web et dans la classe code-behind qui prend en charge cette page Web. Tout comme
les contrôles classiques des Windows Forms, les contrôles Web encapsulent des parties discrètes de
fonctionnalités d'affichage dans des objets GUI : Button, TextField, DropDownList, DataGrid, etc. Dans la classe
code-behind, ces mêmes contrôles sont semblables aux classes qui exposent les propriétés et les méthodes.
Une page Web se distingue d'un Windows Form par le fait qu'il s'agit d'un environnement sans statut. Il est donc
nécessaire de recourir à un mécanisme de persistance afin de préserver le statut de la page Web au fil de ses
rechargements successifs.
ViewState conserve le statut des contrôles d'une page Web de la même manière que Session pour les objets
instanciés sur le serveur.
Remarque
ViewState conserve automatiquement le statut de tous les contrôles Web. Pour cela, ViewState doit stocker
chaque contrôle basé sur la propriété EnableViewState du contrôle (auquel la valeur True a été attribuée par
défaut).
Etant donné que ViewState stocke le statut des données à partir des contrôles Web de la page, l'objet ViewState
doit être inclus intégralement dans la page lorsque cette dernière est transférée du navigateur vers le serveur
Web et vice-versa. Cela s'obtient en cryptant l'intégralité de l'objet ViewState sous forme de chaîne, puis en
plaçant cette chaîne dans la valeur d'une balise de formulaire masquée dans la page. Par exemple, le code HTML
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
55
de l'objet ViewState pour une page Web ASP.NET contenant uniquement un contrôle Button se présente sous la
forme suivante :
<input type="hidden" name="__VIEWSTATE"
value="dDwtNTMwNzcxMzI0Ozs+I7GfLyg3p44eTLFCiVEiRKUBzFw=" />
ViewState ne stocke que les informations qui peuvent être converties au format chaîne.
Persistance de l'affichage de rapports du contrôle CrystalReportViewer
Le rôle du contrôle CrystalReportViewer consiste à afficher les rapports Crystal. Il convertit les rapports au format
HTML dans une page qui comporte une barre d'outils et une arborescence permettant de manipuler l'affichage
des rapports. La barre d'outils contient des boutons qui permettent d'effectuer des zooms, d'accéder à la page
suivante, d'imprimer, d'exporter, etc. L'arborescence peut être développée pour afficher des groupes de données
imbriqués.
En rendant les informations du contrôle persistantes, ViewState assure par conséquent la persistance du statut
de toutes les informations d'affichage des rapports (événements de la barre d'outils et de l'arborescence
compris) pour le contrôle CrystalReportViewer au fur et à mesure que les pages sont rechargées.
Supposons par exemple qu'un utilisateur soit en train de consulter la page 3 d'un rapport et qu'il clique sur le
bouton Page suivante de la barre d'outils du contrôle CrystalReportViewer, ViewState rendrait persistant le statut
des deux éléments d'information suivants :
●
le numéro de page actuel ;
●
le statut du bouton Page suivante (sur lequel l'utilisateur a cliqué).
Au cours du rechargement de la page, ViewState restaurerait le contrôle CrystalReportViewer à la page 3, puis
l'événement de clic sur Page suivante, ce qui entraînerait l'affichage de la page 4 du rapport par le contrôle.
Persistance du modèle d'objet du contrôle CrystalReportViewer
Outre l'affichage des rapports, le contrôle CrystalReportViewer joue un deuxième rôle : celui de modèle d'objet
limité (contenu dans la classe du contrôle CrystalReportViewer). Ce modèle d'objet limité peut être utilisé pour
interagir par programmation avec les rapports.
ViewState rend persistant le statut de ces deux rôles :
●
affichage des rapports
●
modèle d'objet CrystalReportViewer
Sachez toutefois que l'utilisation du modèle d'objet CrystalReportViewer est généralement déconseillée au profit
du modèle d'objet ReportDocument, plus complet. Cet autre modèle d'objet n'est pas contenu dans le contrôle,
mais il fait partie des bibliothèques de classes du SDK.
56
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Partage des mécanismes de persistance
Si vous utilisez le contrôle CrystalReportViewer dans ses deux rôles (affichage des rapports et modèle d'objet),
ViewState les rend tous deux persistants et vous n'avez pas à recourir à un autre mécanisme de persistance.
Remarque
Un exemple de ce cas consisterait à lier le contrôle CrystalReportViewer au chemin d'accès d'un répertoire de
fichiers. Voir Liaison au chemin d'accès d'un répertoire de fichiers par code [page 172].
Si vous décidez toutefois d'utiliser le contrôle CrystalReportViewer uniquement pour afficher les rapports, puis si
vous le liez à un modèle d'objet externe (tel que ReportDocument), vous devrez faire appel à un autre mécanisme
de persistance afin de rendre le modèle d'objet externe persistant. En général, cet autre mécanisme de
persistance est Session (ou plus occasionnellement Cache).
Informations associées
Quelle méthode de persistance utiliser avec SAP Crystal Reports ? [page 53]
Session et persistance du modèle d'objet ReportDocument [page 57]
Choisir le modèle d'objet correct pour votre projet [page 32]
1.3.3.2
Session et persistance du modèle d'objet
ReportDocument
Définition de Session
Session est une méthode de persistance du statut basée sur un serveur Web et utilisée à la fois dans ASP et
ASP.NET. Session permet de rendre persistant n'importe quel objet durant toute la session d'un utilisateur en
stockant cet objet dans la mémoire du serveur Web.
Cette méthode est généralement employée pour effectuer l'une des opérations suivantes :
●
Stocker des informations dont le statut doit être rendu persistant durant toute la durée d'une session
utilisateur, telles que les informations de connexion ou d'autres données requises pour permettre à
l'utilisateur de naviguer dans l'application Web.
●
Stocker un objet dont le statut doit être rendu persistant uniquement au cours du rechargement d'une page
ou d'un ensemble de pages regroupées pour des raisons fonctionnelles.
L'avantage de la méthode Session tient au fait qu'elle conserve sur le serveur Web les informations de statut de
l'utilisateur pour un accès à tout moment et depuis n'importe quelle page. Etant donné que ces informations ne
sont pas stockées par le navigateur, n'importe quel navigateur peut être utilisé, même des dispositifs de
navigation tels que des assistants personnels ou des téléphones portables.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
57
Limites de cette méthode de persistance
●
La quantité de mémoire serveur requise par la méthode Session augmente au fur et à mesure que les
utilisateurs se connectent.
●
Chaque utilisateur qui accède à l'application Web génère un objet Session distinct. La "durée de vie" de
chaque objet Session correspond à la durée de la session de l'utilisateur plus une période d'inactivité.
●
Si de nombreux objets sont rendus persistants dans chaque Session et si de nombreux utilisateurs emploient
simultanément l'application Web (générant ainsi beaucoup d'objets Session), la quantité de mémoire serveur
consacrée à la méthode de persistance Session peut devenir significative et limiter l'évolutivité.
Pour en savoir plus sur les autres méthodes de persistance, voir les sections suivantes :
●
ViewState et persistance du modèle d'objet CrystalReportViewer [page 55]
●
Cache et persistance du modèle d'objet ReportDocument [page 59]
Persistance du modèle d'objet ReportDocument à l'aide de Session
Si le rapport a été encapsulé dans le modèle d'objet ReportDocument, ce modèle d'objet doit être rendu
persistant à l'aide d'une méthode basée sur le serveur, telle que Session ou Cache.
Pour rendre persistant un rapport encapsulé dans le modèle d'objet ReportDocument à l'aide de Session,
instanciez ReportDocument, puis affectez-le à Session.
De par sa simplicité, Session est la méthode recommandée lorsque vous apprenez à générer une application Web
ASP.NET à l'aide de SAP Crystal Reports. Elle est également conseillée pour stocker des instances de
ReportDocument qui présentent un faible potentiel de partage.
Limites de la persistance du modèle d'objet ReportDocument à l'aide de
Session
Chaque fois qu'une instance de ReportDocument présente un faible potentiel de partage, utilisez la méthode de
persistance Cache à la place de Session.
Différence entre Session et ViewState
La fonction principale de Session consiste à rendre persistant le statut des objets dans la classe code-behind. Le
rôle principal de ViewState consiste à assurer la persistance du statut des contrôles d'une page Web. Lorsqu'un
contrôle d'une page Web est lié à un objet contenu dans la classe code-behind et que tous deux doivent être rendu
persistants d'un rechargement de page à un autre, Session et ViewState "se partagent les rôles".
Dans ce cas, ViewState assure la persistance d'un contrôle CrystalReportViewer, et Session celle d'un objet
ReportDocument lié à ce contrôle.
58
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Informations associées
Tutoriel : Persistance du modèle d'objet ReportDocument à l'aide de Session [page 341]
Dans ce tutoriel, vous allez utiliser le modèle d'objet ReportDocument et effectuer des modifications par
programmation sur un rapport au moment de l'exécution.
1.3.3.3
Cache et persistance du modèle d'objet
ReportDocument
Cache est une méthode de persistance du statut basée sur un serveur et utilisée dans ASP.NET. D'un point de vue
fonctionnel, Cache est identique à l'objet Application utilisé dans ASP comme dans ASP.NET :
●
L'objet Application permet de rendre persistant n'importe quel objet sur toute la portée de l'application.
●
L'objet Application n'est pas conçu pour conserver les informations propres aux utilisateurs.
Cache partage ces fonctionnalités avec Application, mais offre une intelligence plus avancée au niveau de la
gestion des données provisoires :
●
Un objet ajouté au cache peut-être configuré à l'aide de dépendances basées sur des fichiers, des clés ou des
délais. Si le fichier ou la clé associé(e) est modifié, ou si un certain délai arrive à expiration, l'objet est
automatiquement supprimé du cache, et une version mise à jour est placée dans le cache à la prochaine
requête portant sur l'objet.
●
Un objet placé dans le cache qui ne possède aucune dépendance et qui est inutilisé arrive automatiquement à
expiration.
●
Lorsqu'un objet est supprimé du cache, cela déclenche un événement. Vous pouvez écrire du code pour qu'il
s'exécute avec cet événement et charge une version mise à jour de l'objet dans le Cache.
Si une autre version d'un objet est ajoutée à l'aide de la chaîne clé d'origine, elle écrase la version précédente.
Pour éviter cette suppression, concaténez l'autre définition au niveau de la chaîne clé afin de rendre chaque
version de l'objet unique.
Comme l'objet Application, l'objet Cache stocke des informations accessibles à tous les utilisateurs, mais son
avantage sur Application tient au fait qu'il se met jour automatiquement en fonction des modifications apportées
à ses dépendances.
Comportement de l'objet Cache dans .Net 2.0 Framework
Le cache dans .Net 2.0 Framework est plus efficace et sûr, car il est géré par utilisateur et par session.
En d'autres termes, lorsqu'un utilisateur affiche un rapport, une copie du rapport est enregistrée dans le cache et
affichée pour cet utilisateur. Si l'utilisateur rouvre le rapport alors que la section en cours est active, l'application
affiche le rapport mis en cache. Cela évite de devoir exécuter le rapport à chaque fois qu'un même utilisateur
l'affiche. Si un autre utilisateur se connecte et ouvre le même rapport, l'application exécute le rapport une
seconde fois, enregistre une seconde copie du rapport dans le cache et l'affiche pour cet utilisateur. Tous les
utilisateurs ont leurs propres copies en cache du rapport pour leur session. Cela évite que plusieurs utilisateurs
partagent le même rapport.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
59
Limites de cette méthode de persistance
Les développeurs encore peu familiers de la méthode Cache peuvent être tentés de l'utiliser tout le temps pour
assurer la persistance, au détriment de la méthode Session. Or la méthode Cache n'est pas interchangeable avec
la méthode Session. Tenter d'émuler le caractère unique de Session en concaténant des données propres à
l'utilisateur au niveau de la clé du Cache charge le Cache avec des objets utilisateur qui, contrairement à ce qui ce
passe avec Session, n'arrivent pas à expiration une fois échu le délai d'attente utilisateur. Par conséquent, la
mémoire du serveur Web est plus fortement sollicitée par l'objet Cache que par l'objet Session.
Pour rendre persistantes des données propres à l'utilisateur, utilisez l'objet Session.
Pour en savoir plus sur les autres méthodes de persistance, voir :
●
ViewState et persistance du modèle d'objet CrystalReportViewer [page 55]
●
Session et persistance du modèle d'objet ReportDocument [page 57]
Persistance du modèle d'objet ReportDocument à l'aide de Cache
Si le rapport a été encapsulé dans le modèle d'objet ReportDocument, ce modèle d'objet doit être rendu
persistant à l'aide d'une méthode basée sur le serveur, telle que Session ou Cache.
Un rapport encapsulé dans le modèle d'objet ReportDocument peut être rendu persistant à l'aide de l'objet Cache
de l'une des manières suivantes :
●
Instanciez le rapport, puis affectez-le à l'objet Cache à l'aide de la même syntaxe que celle utilisée pour
affecter un rapport à l'objet Session.
Cette méthode fonctionne uniquement pour un rapport présentant un fort potentiel de partage, pour lequel
l'instance de ReportDocument ne se produit qu'une seule fois, en utilisant un ensemble de paramètres et de
références de connexion unique. Avec une instance de ReportDocument qui se produit plusieurs fois en
raison de modifications apportées à ses paramètres et à ses informations de connexion, le fait de réaffecter le
rapport à l'objet Cache en utilisant la même chaîne clé écrase la version précédente de l'instance de
ReportDocument.
●
Instanciez une version de la classe de rapport qui implémente l'interface ICachedReport.
Le SDK de SAP Crystal Reports comporte une structure intégrée de mise en mémoire cache des rapports.
Chaque rapport qui implémente l'interface ICachedReport est automatiquement ajouté au cache à l'aide
d'une clé unique basée sur les paramètres et références de connexion de l'utilisateur. Cette méthode
fonctionne avec n'importe quel rapport qui présente un fort potentiel de partage, mais peut donner quelques
variations en raison de modifications mineures apportées aux paramètres et aux références de connexion. En
ce qui concerne les rapports qui présentent un faible potentiel de partage (qui sont propres à l'utilisateur),
affectez-les à l'objet Session.
Limites de la persistance du modèle d'objet ReportDocument à l'aide de Cache
Cache est la méthode la mieux adaptée pour rendre persistantes des instances de ReportDocument qui
présentent un fort potentiel de partage pour les utilisateurs. Si le rapport est spécifique à l'utilisateur, Cache
consommera inutilement de la mémoire serveur en créant des instances basées sur l'utilisateur au niveau de
60
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
l'application qui resteront stockées dans la mémoire du serveur une fois échu le délai d'attente utilisateur. Les
rapports spécifiques à l'utilisateur doivent être affectés à l'objet Session.
Remarque
Dans la plupart des cas, utilisez Session pour rendre persistantes les instances de ReportDocument. Utilisez
Cache (ou plus spécifiquement, l'interface ICachedReport) uniquement lorsqu'un rapport présente un fort
potentiel de partage et qu'il est très volumineux, ou tellement complexe que l'extraction de ses données prend
plusieurs minutes.
Différence entre Cache et ViewState
La fonction principale de Cache consiste à rendre persistant le statut des objets dans la classe code-behind. Le
rôle principal de ViewState consiste à assurer la persistance du statut des contrôles d'une page Web. Lorsqu'un
contrôle d'une page Web est lié à un objet contenu dans la classe code-behind et que tous deux doivent être
rendus persistants au fur et à mesure que la page est rechargée, Cache et ViewState "se partagent les rôles".
Dans ce cas, ViewState assure la persistance d'un contrôle CrystalReportViewer, et Cache celle d'un objet
ReportDocument lié à ce contrôle.
Informations associées
Quelle méthode de persistance utiliser avec SAP Crystal Reports ? [page 53]
Limites de la persistance lors de la liaison de rapports avec le gestionnaire d'événements Page_Load [page 62]
1.3.3.3.1
Pour rendre persistant un rapport incorporé qui
implémente ICachedReport
Procédure
1.
Ajoutez le rapport au projet.
Une classe de rapport incorporé est alors créée. Est également créée une classe de rapport mis en cache qui
charge et renvoie une instance mise en cache de la classe de rapport incorporé.
2.
Instanciez la classe de rapport mis en cache.
3.
Affectez l'instance de la classe de rapport mis en cache au contrôle CrystalReportViewer.
Informations associées
Liaison à une classe de rapport incorporé et mis en cache [page 205]
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
61
1.3.3.3.2
Pour rendre persistant un rapport non incorporé
par le biais d'une classe utilitaire qui implémente
ICachedReport
Procédure
1.
Créez votre propre classe utilitaire de gestion du cache et configurez-la de sorte qu'elle implémente
ICachedReport.
2.
Dans cette classe utilitaire, chargez le rapport non incorporé à partir d'une chaîne chemin d'accès à l'aide de
la méthode ReportDocument.Load().
3.
Codez la méthode d'implémentation CreateReport() de manière à ce qu'elle renvoie l'instance
ReportDocument du rapport non incorporé.
4.
Instanciez la classe utilitaire de gestion du cache du rapport.
5.
Affectez l'instance de cette classe au contrôle CrystalReportViewer.
Informations associées
Liaison à un rapport non incorporé chargé dans une classe utilitaire de gestion du cache [page 207]
1.3.3.4 Limites de la persistance lors de la liaison de
rapports avec le gestionnaire d'événements Page_Load
Dans les applications Web ASP.NET, il est courant de placer tout le code concernant le lancement d'une page
dans le gestionnaire d'événements Page_Load (ce code étant appelé par l'événement Page.Load).
En particulier, le code concernant la liaison des données de contrôle est généralement stocké dans le gestionnaire
d'événements Page_Load. Toutefois, le fait de placer le code de liaison dans ce gestionnaire d'événements génère
un problème avec ViewState. Ce problème, et la solution généralement adoptée, sont décrits ci-après :
●
ViewState est utilisé pour assurer la persistance de deux éléments au fur et à mesure que les pages sont
rechargées : les données liées au contrôle et les événements de clic de souris effectués sur ce contrôle.
●
ViewState étant une chaîne, les données et les événements de clic de souris doivent être sérialisés.
●
Lors du rechargement des pages, les données tout comme les événements de clic sont restaurés à partir de
ViewState.
●
L'événement Page.Load s'exécute une fois la restauration de ViewState effectuée. Si le gestionnaire
d'événements Page_Load contient du code concernant la liaison du contrôle, ce code écrase le contenu de
ViewState lors du rechargement des pages, entraînant la perte des événements de clic et des données
d'origine.
●
Ce problème se manifeste en général sous la forme de contrôles ignorant les clics de souris (sélection
DropDownList par exemple) lorsqu'une page est rechargée.
●
Pour éviter que les données et les événements de clic ne soient écrasés, tout code de liaison dans le
gestionnaire d'événements Page_Load est placé dans un bloc conditionnel Not IsPostBack qui empêche que
le code ne soit appelé lors des publications.
62
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Cette solution se fonde toutefois sur le principe capital selon lequel les données comme les événements de clic de
souris peuvent être sérialisés dans ViewState. Or, le contrôle CrystalReportViewer se lie à des objets qui ne
peuvent pas être sérialisés (tout particulièrement les classes ReportDocument, ReportClientDocument ou
InfoObject).
Remarque
Il existe toutefois une exception : lorsque le contrôle CrystalReportViewer est lié à un rapport par le biais de son
chemin d'accès au répertoire de fichiers, la chaîne du chemin d'accès peut être rendue persistante dans
ViewState. Dans ce scénario, uniquement le contrôle CrystalReportViewer pourrait être placé dans un bloc
conditionnel Not IsPostBack. Ce scénario de liaison de rapports est toutefois moins puissant et moins utilisé
que les scénarios de liaison aux classes de rapports mentionnés ci-dessus.
Dans la mesure où seuls les événements de clic de souris du contrôle CrystalReportViewer peuvent être sérialisés
dans ViewState, la liaison à une classe de rapport qui ne peut être sérialisée engendre un problème insoluble lors
du rechargement des pages :
●
Si le code de liaison du rapport est placé dans un bloc conditionnel Not IsPostBack, les événements de clic de
souris provenant de ViewState sont conservés, mais la liaison du rapport n'a pas lieu, et une exception est
alors renvoyée.
●
Si le code de liaison du rapport est placé hors du bloc conditionnel, le rapport est lié correctement, mais le
contenu de ViewState est écrasé lors du processus, et les événements de clic de souris sont alors perdus.
Remarque
Cette situation se produit le plus souvent lorsque des clics sont effectués dans un rapport à plusieurs
pages au niveau du contrôle CrystalReportViewer. Le rapport ne cesse alors de revenir mystérieusement
en page 1.
Solution recommandée : placer le code de liaison du contrôle
CrystalReportViewer dans l'événement Init
La solution concernant le contrôle CrystalReportViewer consiste à placer le code de liaison de votre rapport dans
l'événement Init qui s'exécute avant que ViewState ne soit restauré.
Cette solution engendre toutefois une complication. Dans la mesure où l'événement Init est codé moins souvent
que l'événement Load, il est plus difficile d'accès. Dans les projets Web ou Windows pour Visual Studio .NET 2003,
le code qui gère l'événement Init se trouve dans la zone Code généré par le Concepteur Web Form, zone
généralement masquée et réservée au code généré.
Pour contourner le problème, procédez comme suit :
●
Extrayez tout le code de configuration et de liaison du contrôle CrystalReportViewer dans une méthode
d'assistance privée dénommée ConfigureCrystalReports().
●
Dans la zone Code généré par le Concepteur Web Form, placez une seule ligne de code dans le gestionnaire
d'événements Page_Init() ou dans la méthode de déclenchement d'événement OnInit() : un appel à la
méthode d'assistance ConfigureCrystalReports().
Les instructions concernant la création de la méthode d'assistance ConfigureCrystalReports() et son
remplissage sont indiquées dans la section Configuration d'un projet [page 15].
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
63
Informations associées
Tutoriel : Persistance du modèle d'objet ReportDocument à l'aide de Session [page 341]
Dans ce tutoriel, vous allez utiliser le modèle d'objet ReportDocument et effectuer des modifications par
programmation sur un rapport au moment de l'exécution.
1.3.4
Evolutivité de l'application
Lorsque vous planifiez la création d'une application à l'aide du SDK de SAP Crystal Reports, l'un des points les
plus importants à déterminer concerne la manière d'optimiser l'évolutivité de cette application. Vous pouvez faire
évoluer votre application de deux façons :
●
Optimiser les performances de votre application.
●
Optimiser les performances de votre rapport.
La mise en application de ces conventions est décrite dans les sections ci-après.
Evolutivité du code d'application
Avec le SDK de SAP Crystal Reports .Net, l'évolutivité peut être accrue en appliquant les meilleures pratiques
d'amélioration des performances suivantes :
●
Limiter l'utilisation des DataSets.
●
Tirer parti de la mise en cache des rapports.
●
Libérer le rapport de la mémoire après utilisation.
●
Partager le traitement entre les serveurs.
Evolutivité de l'application en réduisant la complexité du rapport
Lorsque vous concevez vos rapports et en particulier lorsque vous concevez des rapports pour le Web, vous
devez tenir compte de leur évolutivité. Les meilleures pratiques suivantes permettent d'optimiser l'évolutivité d'un
rapport.
●
Réduire si possible la taille et la complexité des rapports.
●
Transférer la sélection d'enregistrements vers le serveur de base de données.
●
Utiliser des sous-rapports à la demande.
64
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.3.4.1
Options de mise à niveau
1.3.4.1.1
Solutions de reporting de SAP BusinessObjects
Business Intelligence
La ligne de produits SAP BusinessObjects Business Intelligence contient plusieurs solutions de reporting. La
gamme des produits et les différentes licences de déploiement qui les accompagnent sont conçues pour
répondre à tous les besoins inhérents à une solution de création de rapports en terme d'évolutivité .
Cette page offre un aperçu de chacune de ces solutions de reporting. Vous trouverez des informations
complémentaires sur le site Web de SAP BusinessObjects.
SAP Crystal Reports, version développeur pour Microsoft Visual Studio
SAP Crystal Reports, version développeur pour Microsoft Visual Studio permet aux développeurs de créer et
d'intégrer rapidement et efficacement des rapports soigneusement présentés dans des applications, tout en
restant dans l'environnement de développement familier de Visual Studio.
SAP Crystal Reports, version développeur pour Microsoft Visual Studio contient la plupart des fonctionnalités
présentes dans SAP Crystal Reports. Celles-ci permettent notamment de créer des rapports, de les connecter à
un contrôle CrystalReportViewer et d'interagir avec eux par programme à l'aide du SDK de SAP Crystal Reports.
SAP Crystal Server ou plateforme SAP BusinessObjects Business Intelligence
Le serveur RAS inclus dans SAP Crystal Reports Server et dans la plateforme SAP BusinessObjects Business
Intelligence améliore considérablement les performances et l'évolutivité en termes de création, de manipulation
et de gestion des rapports.
SAP Crystal Reports Server est un logiciel peu coûteux qui offre tout ce dont vous avez besoin pour créer, gérer et
déployer en toute sécurité des rapports sur le Web. Il prend en charge toutes les étapes du processus de
reporting, de l'accès aux données à la conception, la gestion et la distribution des rapports, en passant par
l'intégration des rapports via des portails et des applications, facilitant ainsi le partage sur le Web de rapports
Crystal nouveaux ou existants.
La plateforme SAP BusinessObjects Business Intelligence est une plateforme multiserveur de Business
Intelligence (BI) conçue pour prendre en charge le reporting à grande échelle et les exigences en matière de BI.
Son environnement multiserveur offre le système de tolérance des pannes, l'équilibrage de la charge, l'évolutivité
et la fiabilité nécessaires pour mener à bien des projets plus stratégiques et de plus grande envergure. La
plateforme SAP BusinessObjects Business Intelligence est également recommandée pour ses fonctionnalités de
reporting avancées telles que l'auditing, l'Explorateur SAP Crystal Reports, le composant Encyclopedia pour
logiciels BusinessObjects Enterprise Premium et Process Tracker.
Pour créer, gérer et déployer en toute sécurité des rapports dans un environnement de petite ou moyenne
envergure, utilisez SAP Crystal Reports Server. Pour des applications stratégiques, des outils de Business
Intelligence supplémentaires et un maximum d'évolutivité, utilisez la plateforme SAP BusinessObjects Business
Intelligence.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
65
1.3.4.1.2
Comparaison des solutions de reporting de SAP
BusinessObjects Business Intelligence
Cette table contient des informations qui vous aideront à choisir la solution de reporting SAP BusinessObjects
Business Intelligence adaptée à vos besoins en termes d'évolutivité.
Fonction
SAP Crystal Reports, ver­ SAP Crystal Reports
sion développeur pour
Microsoft Visual Studio
SAP Crystal Reports Ser­
ver ou plateforme SAP
BusinessObjects Busi­
ness Intelligence
Prise en charge ASP.NET
X
X
X
Visualisation interactive
des rapports
X
X
X
Connexion unique
X
X
X
Prise en charge des appli­
cations Windows
X
X
X
Report Designer amélioré
X
X
Prise en charge de péri­
phériques mobiles
X
X
Pilotes de base de don­
nées natifs
X
X
Sources de données OLAP
X
X
Vérification des dépen­
dances des rapports
X
X
Modèles
X
X
Paramètres de mise en
cascade dynamiques
X
X
Déploiement multi-plate­
forme
X
Système de gestion de la
distribution des informa­
tions
X
Sécurité intégrée
X
Equilibrage de la charge
X
Référentiel d'objets rap­
port
X
Planification des rapports
X
Création et modification
des rapports par program­
mation
66
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
X
X
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Fonction
SAP Crystal Reports, ver­ SAP Crystal Reports
sion développeur pour
Microsoft Visual Studio
SAP Crystal Reports Ser­
ver ou plateforme SAP
BusinessObjects Busi­
ness Intelligence
Modèle d'objet CrystalRe­
portViewer
X
X
X
Modèle d'objet ReportDo­
cument
X
X
X
X
X
Modèle d'objet Report­
ClientDocument
Serveur RAS
X
Modèle d'objet InfoObject
X
Evolutivité
Faible
Prise en charge de plu­
sieurs versions de .Net
Framework
Faible
Moyenne à élevée
X
X
Informations associées
Comparaison des architectures dans les solutions de reporting SAP Business Intelligence [page 41]
1.3.4.1.3
Report Application Server (RAS)
Le serveur RAS peut être utilisé pour créer et modifier des rapports Crystal, ainsi que pour traiter des requêtes
liées aux pages.
Report Application Server (RAS) est l'une des technologies de SAP BusinessObjects. Il s'agit à la fois d'un SDK
client et d'un serveur. Le serveur RAS peut être utilisé pour créer et modifier des rapports Crystal, ainsi que pour
traiter des requêtes liées aux pages. Lorsqu'un processus serveur extrait un rapport demandé, le RAS le transmet
au visualiseur de rapports.
Le serveur RAS n'est disponible qu'en tant que composant de SAP Crystal Reports Server ou de la plateforme
SAP BusinessObjects Business Intelligence.
Serveur RAS géré
On appelle serveur RAS géré un serveur RAS dont le fonctionnement est contrôlé par d'autres composants de la
structure Enterprise. SAP Crystal Reports Server et SAP BusinessObjects Enterprise offrent un environnement de
serveurs qui facilite la gestion et la distribution de rapports sur le Web à l'échelle de l'entreprise. Le serveur RAS
géré est l'un des nombreux serveurs de cet environnement. Il peut traiter des rapports situés sur le même
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
67
ordinateur que le serveur Web et le SDK du RAS (rapports non gérés) ou sur un serveur de référentiel de rapports
distinct (rapports gérés).
Le serveur RAS géré peut utiliser les modèles d'objet ReportClientDocument et InfoObject.
Utilisation de l'API RAS sans serveur RAS
Dans SAP Crystal Reports, vous pouvez accéder à la fonctionnalité avancée de création et de modification de
rapport de l'objet de modèle ReportClientDocument à partir du SDK CR .NET. Le module de déploiement de ce
scénario exige uniquement les assemblys .NET, ce qui signifie que vous utilisez l'API RAS contenue dans les
processus.
Cependant, si vous utilisez l'API RAS contenue dans les processus, vous perdez les avantages de performance et
de stabilité offerts par un système hors processus, orienté serveur. Pour bénéficier de ces avantages, utilisez l'API
RAS conjointement avec un serveur RAS dans un environnement SAP Crystal Reports Server ou de plateforme
SAP BusinessObjects Business Intelligence.
Pour en savoir plus et consulter un exemple de code, voir la propriété ReportClientDocument de la classe
CrystalDecisions.CrystalReports.Engine.ReportDocument dans le document de référence de l'API.
Informations associées
Comparaison des architectures dans les solutions de reporting SAP Business Intelligence [page 41]
Modèle d'objet ReportClientDocument (RAS) [page 39]
1.3.4.2
1.3.4.2.1
simples
Optimisation du code
Eviter d'utiliser des DataSets pour des requêtes
La création de rapports à partir de DataSets offre des avantages, mais ces derniers ne doivent pas
nécessairement être utilisés en tant que mécanisme d'accès aux données lorsque l'évolutivité d'une application
est en jeu. Si votre application crée un DataSet uniquement pour un rapport, et plus particulièrement si la requête
utilisée est une requête simple telle que SELECT field 1, field 2 FROM table, l'emploi d'un DataSet
présente peu d'intérêt.
Dans des cas semblables, faire en sorte que SAP Crystal Reports se connecte directement à la base de données
et effectue la requête (comme cela se produit par défaut pour tout rapport créé à l'aide du
SAP Crystal Reports Designer) s'avère plus rapide et consomme moins de mémoire.
Les DataSets sont utiles lorsque :
●
Les données de plusieurs sources de données doivent être combinées.
●
Les données du DataSet doivent être modifiées après l'exécution de la requête.
68
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Informations associées
Tutoriel : Connexion aux DataSets ADO.NET [page 549]
1.3.4.2.2
En cas d'utilisation des DataSets, les mettre en
mémoire cache
Les DataSets sont encore plus efficaces en termes d'évolutivité lorsqu'ils sont mis en cache,
Au moment de l'exécution, lorsqu'un rapport est chargé, le moteur de rapport SAP Crystal Reports tente de
regrouper les connexions à la base de données. Par exemple, si trois utilisateurs consultent la même page ASPX
avec le même rapport, ces trois requêtes sont regroupées dans une seule connexion à la base de données.
Toutefois, la requête elle-même n'est pas regroupée. Même si elle est identique dans les trois cas, la requête doit
être exécutée chaque fois qu'un rapport est demandé par le moteur de rapport. Dans le cas d'une requête lente ou
d'un ensemble de données volumineux, ce mode de requête par utilisateur peut constituer un goulot
d'étranglement pour l'application.
L'exécution répétée de cette même requête par utilisateur pour remplir un DataSet de manière redondante
s'avèrerait encore pire au niveau de la charge de mémoire.
Pour réduire le nombre de requêtes envoyées à la base de données, placez le DataSet dans l'objet Cache ASP.NET
après la première requête de sorte que toutes les tâches de rapport partagent ce même DataSet dans le Cache.
Informations associées
Connexion aux DataSets ADO.NET [page 159]
Création de rapports à partir de DataSets ADO.NET [page 667]
Explique comment connecter votre rapport à un DataSet ADO.NET.
1.3.4.2.3
Utiliser la méthode Close() pour libérer le rapport
Utilisez l'une des méthodes Close() disponibles pour libérer la mémoire utilisée par le rapport.
Une autre façon d'optimiser l'évolutivité dans un projet SAP Crystal Reports, version développeur pour Microsoft
Visual Studio consiste à utiliser l'une des méthodes Close() disponibles pour libérer la mémoire utilisée par le
rapport.
Deux méthodes Close() sont disponibles :
●
ReportDocument.Close() qui est utilisée avec SAP Crystal Reports ;
●
ReportClientDocument.Close() qui est utilisée avec le SDK du RAS.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
69
Méthode ReportDocument.Close()
Vous pouvez utiliser la méthode ReportDocument.Close() pour libérer la mémoire consommée par le rapport
Crystal sur le serveur Web.
Le mode d'accès à la méthode ReportDocument.Close() varie selon que le rapport est incorporé ou non
incorporé :
●
Si le rapport est incorporé, une classe wrapper de rapport est générée pour représenter le rapport dans du
code. Cette classe wrapper de rapport hérite de ReportDocument et permet d'accéder à la méthode Close()
par héritage.
●
Si le rapport est non incorporé, il est chargé depuis le répertoire de fichiers dans une instance de
ReportDocument, ce qui permet d'accéder à la méthode Close() directement à partir de la classe
ReportDocument.
Le rapport Crystal et l'instance ReportDocument consomment tous deux de la mémoire. Une fois que l'instance
ReportDocument est libérée de la mémoire, le rapport continue d'utiliser la mémoire.
Ainsi, l'instance ReportDocument est mise hors de portée lorsque le chargement de la page Web est terminé.
Lorsque le garbage collection .NET supprime l'instance ReportDocument, la mémoire utilisée par celle-ci est
libérée sur le serveur Web.
Le rapport demeure quant à lui en mémoire sur le serveur Web. Il ne peut pas être supprimé, car il n'existe plus
d'instance ReportDocument pour y accéder. Lorsque ces circonstances se répètent à grande échelle, la mémoire
du serveur Web se remplit de rapports auxquels on ne peut plus accéder.
Pour résoudre ce problème, appelez la méthode ReportDocument.Close(). Le rapport est ainsi fermé sur le
serveur Web et la mémoire est libérée pour d'autres rapports.
A quel moment appeler la méthode ReportDocument.Close()
La méthode ReportDocument.Close() ne doit pas être appelée sur la page avant que le rapport n'ait été affiché,
car même si le rapport a été fermé, ReportDocument le rouvrira s'il est de nouveau référencé. La méthode Close()
ne doit être appelée qu'une fois le processus d'affichage terminé.
L'événement Page_Unload représente le moment adéquat pour appeler la méthode Close().
Méthode ReportClientDocument.Close()
Lorsque vous utilisez un serveur RAS géré ou non géré, les rapports sont stockés sur le Report Application Server,
mais ils sont représentés sur le serveur Web par une instance de ReportClientDocument. Si l'instance
ReportClientDocument est mise hors de portée sans avoir appelé la méthode ReportClientDocument.Close(), le
Report Application Server conserve le rapport ouvert en mémoire, même lorsque l'on ne peut plus y accéder.
Lorsque ces circonstances se répètent à grande échelle, la mémoire du Report Application Server se remplit de
rapports auxquels on ne peut plus accéder sur le serveur Web.
Pour résoudre ce problème, appelez la méthode ReportClientDocument.Close(). Le rapport est fermé sur le
Report Application Server et la mémoire est libérée pour d'autres rapports.
70
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
A quel moment appeler la méthode ReportClientDocument.Close()
La méthode Close() ne doit pas être appelée sur la page avant que le rapport n'ait été affiché, car le rapport doit
rester ouvert sur le serveur jusqu'à la fin du processus d'affichage.
Pour une instance ReportClientDocument, la méthode Close() ferme immédiatement le rapport, qui ne peut alors
plus être rouvert. Par conséquent, si la méthode Close() est appelée avant l'affichage du rapport, celui-ci sera
inaccessible et une exception sera renvoyée.
L'événement Page_Unload représente le moment adéquat pour appeler la méthode Close().
Informations associées
Comparaison des rapports incorporés et non incorporés [page 165]
1.3.4.2.4 Configurer une batterie de serveurs Web ou un
jardin Web
Une batterie de serveurs Web permet d'étendre un site Web sur plusieurs serveurs. Un jardin Web permet
d'étendre un site Web sur plusieurs ordinateurs sur un seul serveur. Etendre la charge du processus de rapport à
travers plusieurs CPU ou plusieurs serveurs peut améliorer la performance de votre application Web de reporting.
Informations associées
Utilisation de SAP Crystal Reports dans une batterie de serveurs Web ou un jardin Web [page 75]
1.3.4.3
1.3.4.3.1
Optimisation des rapports
Utiliser des rapports moins volumineux
Une autre façon d'optimiser l'évolutivité dans un projet SAP Crystal Reports, version développeur pour Microsoft
Visual Studio, consiste à réduire la taille des rapports.
Faites en sorte, si possible, que vos rapports contiennent moins de 15 pages. Dans les applications Web, les
utilisateurs souhaitent souvent ne consulter que quelques informations importantes et non des pages et des
pages de données.
Il se peut que les rapports utilisés dans les applications de bureau ne soient plus adaptés aux applications Web.
Pour réduire la taille des rapports, utilisez des formules de sélection d'enregistrements afin de limiter le nombre
d'enregistrements renvoyés dans les rapports. Vous avez pour cela le choix entre trois possibilités :
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
71
●
Vous pouvez coder en dur une formule de sélection d'enregistrements dans le rapport à l'aide du
SAP Crystal Reports Designer incorporé.
●
Vous pouvez filtrer par programmation de manière encore plus précise les enregistrements qui ont été
extraits du rapport.
○
Avec le modèle d'objet CrystalReportViewer, utilisez la propriété SelectionFormula ou
ViewTimeSelectionFormula de CrystalReportViewer.
○
Avec le modèle d'objet ReportDocument, utilisez la propriété RecordSelectionFormula de
ReportDocument.
Informations associées
Tutoriel : Filtrage des données à l'aide des formules de sélection [page 290]
Dans ce tutoriel, vous allez apprendre à utiliser des formules de sélection afin de filtrer les enregistrements à
afficher dans un rapport Crystal.
1.3.4.3.2
Utiliser des graphiques moins volumineux
Une autre façon d'optimiser l'évolutivité dans un projet SAP Crystal Reports, version développeur pour Microsoft
Visual Studio, consiste à réduire la taille des graphiques utilisés dans les rapports.
Il ne s'agit pas de supprimer les graphiques des rapports lorsque l'évolutivité d'une application est en question,
mais vous devez les utiliser avec modération en raison de leur forte consommation de ressources système.
Lorsqu'un rapport contenant un graphique (diagramme ou image) est affiché dans un contrôle
CrystalReportViewer, le moteur de rapport doit créer un fichier JPG temporaire (dans le dossier dynamic_images)
et le navigateur doit effectuer une demande distincte auprès du serveur Web pour pouvoir l'extraire.
Le contrôle CrystalReportViewer recherche également de façon régulière des anciennes images dans le dossier
dynamic_images afin de les supprimer. Cet accès au disque peut réduire les performances du rapport. Une
utilisation limitée des diagrammes et des images réduit l'accès au disque à son minimum.
Informations associées
Configuration du fichier Web.Config [page 20]
Répertoire des visualiseurs [page 14]
72
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.3.4.3.3
demande
Redéfinir les sous-rapports pour réduire la
Le fait de modifier la méthode d'utilisation des sous-rapports dans votre application peut avoir un impact
important sur les performances de votre application.
Une autre façon d'optimiser l'évolutivité dans un projet SAP Crystal Reports, version développeur pour Microsoft
Visual Studio, consiste à refactoriser les appels aux sous-rapports afin de réduire la demande.
A propos de l'utilisation des sous-rapports
Si les sous-rapports peuvent être fréquemment utilisés pour créer des rapports complexes, ils représentent une
charge considérable. Cela ne veut pas dire pour autant que vous ne devez pas en utiliser. Toutefois, leur utilisation
doit être limitée.
Notez également que lorsque des sous-rapports sont placés dans des sections qui se répètent (en-têtes de
groupes ou section Détails par exemple), chaque instance de sous-rapport requiert sa propre tâche de rapport.
Cela signifie qu'un rapport contenant 100 enregistrements avec un sous-rapport dans la section Détails implique
en réalité l'exécution de 101 tâches de rapport.
Refactorisation des sous-rapports en tant que contrôle DataGrid .NET lié à des
rapports
Les sous-rapports sont généralement utilisés dans un modèle résumé/détails :
●
Le rapport principal affiche les lignes de résumé.
●
Chaque ligne est liée à un sous-rapport qui contient un rapport de détails.
S'il n'est pas nécessaire d'imprimer les données de résumé, présentez-les dans une liste de lignes plutôt que dans
un rapport. En d'autres termes, au lieu d'utiliser en tant que résumé un rapport lié à plusieurs sous-rapports pour
les détails, utilisez un contrôle DataGrid .NET qui se lie à plusieurs rapports standard pour les détails. L'utilisation
du contrôle DataGrid .NET en tant que résumé constitue une solution plus simple et plus évolutive.
Pour cela, liez un jeu de résultats de données à un contrôle DataGrid, avec un lien permettant d'accéder au
rapport sur chaque ID de ligne. Un seul rapport est ainsi utilisé pour chaque ligne (avec un paramètre qui accepte
un ID unique qui lui a été transmis par l'URL de l'ID de ligne du contrôle DataGrid).
Dans ce scénario, aucun traitement de rapport n'est effectué lorsque le contrôle DataGrid s'affiche. Il intervient
uniquement lorsque l'un des liens contenus dans le contrôle DataGrid est sélectionné.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
73
1.3.4.3.4 Ne pas utiliser de champs bloquant le traitement à
la demande
Une autre façon d'optimiser l'évolutivité dans un projet SAP Crystal Reports, version développeur pour Microsoft
Visual Studio, consiste à ne pas utiliser de champs qui bloquent le traitement à la demande.
SAP Crystal Reports traite les rapports à la demande. Par exemple, si la première page d'un rapport doit être
affichée, Crystal Reports ne traite que cette première page, et non le rapport dans son intégralité. Toutefois, le fait
d'insérer dans la première page d'un rapport des champs ou des formules qui impliquent que le rapport soit traité
en entier empêche le traitement à la demande.
Si par exemple le champ spécial "Page N/M" est placé dans la première page d'un rapport, ce dernier doit être
traité dans son intégralité pour déterminer son nombre total de pages et ainsi assurer le rendu du champ. La
première page doit donc attendre que la totalité du rapport ait été traitée avant de pouvoir s'afficher. Il se produit
la même chose lorsque vous utilisez un champ pourcentage de résumé pour vos calculs.
Il est donc déconseillé d'utiliser ces types de champ.
1.3.4.3.5
Sélection de l'option Aucune imprimante sous
Configuration de l'impression
La sélection de l'option Aucune imprimante sous Configuration de l'impression est une autre façon d'optimiser
l'évolutivité dans un projet SAP Crystal Reports, version développeur pour Microsoft Visual Studio.
Option Aucune imprimante
Généralement, lorsque vous créez un rapport Crystal, une imprimante par défaut a été sélectionnée sur
l'ordinateur de développement. Cette imprimante par défaut détermine la présentation des images, des polices et
des champs de base de données du rapport.
La sélection d'une imprimante par défaut a pour avantage d'assurer l'uniformité de l'affichage des rapports : ceuxci s'affichent selon la présentation définie au niveau de l'imprimante par défaut. L'inconvénient est que cela peut
poser un problème en termes d'évolutivité.
Par exemple, certains pilotes d'impression présentent des fuites de mémoire ou des fuites de descripteurs de
fichiers. Si un rapport est configuré pour un pilote d'impression présentant l'un de ces problèmes, les
performances du rapport seront également affectées.
Par conséquent, pour assurer l'évolutivité, il est recommandé de modifier le rapport de manière à ce qu'il n'utilise
aucun pilote d'impression.
Remarque
Le fait de ne configurer aucun pilote d'impression pour votre rapport peut notamment avoir pour conséquence
une différence de présentation du rapport par rapport au résultat obtenu depuis l'imprimante souhaitée. Après
avoir défini l'option Aucune imprimante pour le rapport, il est recommandé de le tester sur l'imprimante
souhaitée. Si nécessaire, modifiez la présentation du rapport.
74
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Informations associées
Suppression du pilote de l'imprimante par défaut de votre rapport [page 123]
1.3.5
Utilisation de SAP Crystal Reports dans une batterie de
serveurs Web ou un jardin Web
Cette section présente brièvement comment utiliser un site Web SAP Crystal Reports, version développeur pour
Microsoft Visual Studio, dans une batterie de serveurs Web ou dans un jardin Web.
Une batterie de serveurs Web permet d'étendre un site Web sur plusieurs serveurs. Un jardin Web permet
d'étendre un site Web sur plusieurs processeurs au sein d'un serveur unique. La répartition de la charge de travail
liée au traitement de rapport sur plusieurs processeurs ou plusieurs serveurs peut améliorer les performances de
votre application de reporting basée sur le Web.
1.3.5.1
Architecture d'une batterie de serveurs Web ou d'un
jardin Web
Architecture de la batterie de serveurs Web
Une batterie de serveurs Web se compose de plusieurs serveurs exposés aux navigateurs clients sous la forme
d'un serveur virtuel unique, avec une carte Media Access virtuelle et une adresse TCP/IP.
Derrière cette couche virtuelle, chaque serveur de la batterie de serveurs Web reçoit tous les paquets du réseau,
mais ne traite qu'un sous-ensemble de ces paquets. La capacité à partager de manière égale la charge de travail
est ce qui confère aux batteries de serveurs Web une puissance de traitement extrêmement performante.
Cette distribution des paquets est gérée par l'équilibrage de la charge réseau. L'équilibrage de la charge réseau
effectue les opérations suivantes :
●
Répartit équitablement les demandes du client entre les serveurs.
●
Détermine quel serveur traitera une demande donnée.
●
Vérifie que l'utilisation des ressources du serveur et les temps d'attente du client sont optimisés.
●
Offre des alternatives performantes à l'affinité du client.
Remarque
Dans un scénario d'affinité du client, les clients qui se connectent sont limités de sorte qu'ils reviennent
chaque fois vers le même serveur.
L'affinité du client est généralement désactivée car elle peut créer un goulot d'étranglement en raison des
demandes destinées à un serveur particulier.
Chaque serveur d'une batterie de serveurs Web dispose d'un pilote de périphérique réseau d'équilibrage de la
charge réseau qui communique avec les autres serveurs, et chaque serveur est généralement doté de deux cartes
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
75
réseau. La seconde carte permet les communications internes pour que l'équilibrage de la charge réseau puisse
s'effectuer sur un autre réseau interne.
Le pilote de périphérique réseau d'équilibrage de la charge réseau est fourni avec la famille Windows Server des
systèmes d'exploitation.
Architecture du jardin Web
Un jardin Web est identique à une batterie de serveurs Web, excepté qu'au lieu d'utiliser plusieurs serveurs reliés
entre eux, il utilise un seul ordinateur doté de plusieurs processeurs.
Le serveur SMP (multitraitement symétrique) unique utilise ASP.NET pour exécuter un processus de traitement
ASP.NET séparé sur chaque processeur. Ce serveur gère plusieurs demandes de clients sur ses différents
processeurs.
1.3.5.2
Processus de traitement ASP.NET
ASP.NET s'exécute dans le cadre d'un processus appelé processus de traitement ASP.NET. Toutes les
fonctionnalités ASP.NET s'exécutent dans le cadre de ce processus.
Un serveur Web standard contient un seul processus de traitement ASP.NET. Ce n'est pas le cas des batteries de
serveurs Web et des jardins Web :
●
Une batterie de serveurs Web contient plusieurs processus de traitement ASP.NET.
Chaque serveur du groupe de serveurs gère un processus de traitement ASP.NET séparé.
●
Un jardin Web contient plusieurs processus de traitement ASP.NET.
Chaque processeur du serveur SMP gère un processus de traitement ASP.NET séparé.
Choix d'un processus de traitement ASP.NET
Lorsqu'un client Web se connecte à une batterie de serveurs Web ou un jardin Web, l'un des différents processus
de traitement ASP.NET est sélectionné pour exécuter la demande.
●
Dans une batterie de serveurs Web, l'équilibrage de la charge réseau détermine le processus de traitement
ASP.NET sélectionné.
●
Dans un jardin Web, le processus de traitement ASP.NET sélectionné est déterminé par ASP.NET.
Gestion de l'état avec plusieurs processus de traitement ASP.NET
Lorsque l'on passe d'un scénario avec un seul processus de traitement ASP.NET (un serveur Web standard) à un
scénario avec plusieurs processus de traitement ASP.NET (une batterie de serveurs Web ou un jardin Web), des
complications apparaissent au niveau de la gestion de l'état.
76
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Les pages Web sont sans état ; un serveur Web doit donc assurer la persistance de l'état par d'autres moyens. Les
moyens les plus courants de gérer un état sur le serveur Web sont l'état de session et le cache ASP.NET.
Session et Cache sont tous deux contenus dans l'espace mémoire d'un seul processus de traitement ASP.NET.
Mais dans une batterie de serveurs Web ou un jardin Web, plusieurs processus de traitement ASP.NET
fonctionnent simultanément. Ni Session ni Cache ne peuvent gérer l'état de plusieurs processus au sein d'un seul
processus de traitement ASP.NET.
Par conséquent, une couche supplémentaire est requise pour la gestion de l'état : un serveur d'état de session
hors processus qui stocke et extrait les informations sur l'état de chaque processus de traitement ASP.NET dans
la batterie de serveurs Web ou l
Informations associées
Etat de session hors processus [page 77]
Quelle méthode de persistance utiliser avec SAP Crystal Reports ? [page 53]
1.3.5.3
Etat de session hors processus
Dans les batteries de serveurs Web et les jardins Web, l'état de session doit être partagé à travers plusieurs
serveurs à l'aide d'une forme d'état de session hors processus.
Deux solutions sont couramment utilisées :
●
Déployer le serveur d'état de session hors processus fourni avec ASP.NET.
●
Configurer manuellement chaque serveur Web pour stocker les données d'état de session sur un serveur SQL
Server.
Obligation de sérialisation
Dans les deux solutions, tous les objets à stocker doivent être sérialisables. Si un objet ne peut pas être sérialisé, il
ne peut pas être rendu persistant sur un serveur d'état hors processus.
Remarque
Tous les modèles d'objet du SDK de SAP Crystal Reports ne peuvent pas être sérialisés. Toutefois, SAP fournit
une solution de mise à niveau pour gérer l'état des rapports à l'aide d'un serveur hors processus.
Informations associées
Modèles d'objet sérialisables dans SAP Crystal Reports [page 78]
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
77
1.3.5.4
Modèles d'objet sérialisables dans
SAP Crystal Reports
Quatre modèles d'objet sont disponibles pour SAP Crystal Reports : deux sont fournis avec SAP Crystal Reports
et deux sont disponibles par mise à niveau.
Cette section explique quels modèles d'objet peuvent être sérialisés pour être utilisés avec un serveur d'état de
session hors processus.
Remarque
Pour une présentation de l'état de session hors processus, voir Etat de session hors processus [page 77].
Sérialisation et modèle d'objet CrystalReportViewer
Le modèle d'objet CrystalReportViewer est un modèle d'objet limité inclus avec l'API du contrôle
CrystalReportViewer. En raison de la portée limitée de ce modèle d'objet, il n'est généralement pas
recommandé. On conseille plutôt d'utiliser le modèle d'objet plus puissant ReportDocument.
Toutefois, le modèle d'objet CrystalReportViewer peut être utilisé dans une batterie de serveurs Web ou un
jardin Web. En effet, CrystalReportViewer est contenu dans un contrôle Web et la persistance du contrôle
Web est gérée côté client, avec ViewState. La persistance ViewState place l'état des contrôles serveur Web
ASP.NET dans une chaîne cryptée, puis inclut cette chaîne cryptée sous la forme d'un champ de formulaire
masqué dans la page ASPX durant le rechargement de la page. Les informations sur l'état peuvent être fournies à
n'importe quel processus de traitement ASP.NET.
Remarque
Cette forme de persistance du client fonctionne uniquement au moment du rechargement de la page.
ViewState ne peut pas assurer la persistance des informations à travers les pages.
Sérialisation et modèle d'objet ReportDocument
Le modèle d'objet ReportDocument est plus puissant que CrystalReportViewer et son utilisation est par
conséquent généralement recommandée dans SAP Crystal Reports.
Toutefois, dans SAP Crystal Reports versions 9 et antérieures, la classe ReportDocument n'a pas pu être
sérialisée et par conséquent, n'a pas pu être utilisée avec un serveur d'état de session hors processus dans une
batterie de serveurs Web ou un jardin Web.
Ce problème a été résolu dans SAP Crystal Reports 10 et versions ultérieures en rapprochant le modèle d'objet
ReportDocument d'un objet sérialisable, ReportClientDocument.
Le modèle d'objet ReportClientDocument est accessible de plusieurs manières.
78
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Pour utiliser le modèle d'objet ReportDocument dans une batterie de serveurs Web ou un jardin Web, il faut que
le serveur d'état de session hors processus ASP.NET stocke l'état de l'instance ReportDocument sérialisée et
que le serveur RAS non géré stocke le fichier de rapport Crystal .rpt.
Remarque
Vous ne pouvez sérialiser le modèle d'objet ReportDocument que si vous avez installé le serveur RAS et
configuré les propriétés ReportDocument.ReportAppServer et ReportDocument.EnterpriseSession
de telle sorte qu'elles désignent ce serveur.
Sérialisation et modèle d'objet ReportClientDocument
Le modèle d'objet ReportClientDocument peut être sérialisé. Le modèle d'objet ReportClientDocument est
accessible de plusieurs manières.
Modèle d'objet InfoObject
Le modèle d'objet InfoObject fait partie de la solution de mise à niveau de Crystal, de
SAP Crystal Reports Server ou de la plateforme SAP BusinessObjects Business Intelligence.
SAP Crystal Reports Server et la plateforme SAP BusinessObjects Business Intelligence sont des solutions
d'entreprise multiserveur qui servent généralement d'alternative à une batterie de serveurs Web ou un jardin Web
existant.
Informations associées
Utilisation de SAP Crystal Reports dans une batterie de serveurs Web ou un jardin Web [page 75]
Choisir le modèle d'objet correct pour votre projet [page 32]
ViewState et persistance du modèle d'objet CrystalReportViewer [page 55]
1.3.5.5
Configuration de SAP Crystal Reports pour une
batterie de serveurs Web ou un jardin Web
Serveurs supplémentaires
En plus des serveurs de la batterie de serveurs Web ou du jardin Web, deux serveurs supplémentaires sont
nécessaires :
●
Le serveur d'état de session hors processus ASP.NET, pour stocker l'état de l'instance ReportDocument
sérialisée.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
79
●
Un serveur RAS non géré pour stocker le fichier de rapport Crystal .rpt.
Remarque
Pour en savoir plus, voir Solutions de reporting de SAP BusinessObjects Business Intelligence [page 65].
Utilisation particulière de ReportDocument
La batterie de serveurs Web ou le jardin Web utilise le serveur d'état de session hors processus ASP.NET pour
stocker l'objet ReportDocument sérialisé. Dans ce scénario, l'objet ReportDocument n'est pas utilisé de la même
façon que dans une installation classique de SAP Crystal Reports.
En effet, la méthode ReportDocument.Load() ou la propriété ReportDocument.FileName lie l'instance
ReportDocument à un rapport hors processus stocké sur le serveur RAS non géré. Pour avoir des exemples de
l'utilisation de ces solutions, voir les informations de configuration ci-dessous.
Remarque
Le stockage du fichier de rapport .rpt sur le serveur RAS non géré hors processus signifie que chaque
processus de traitement ASP.NET dans la batterie de serveurs Web ou le jardin Web peut accéder au même
fichier de rapport .rpt à partir d'un emplacement central.
Configuration de ReportDocument pour le serveur RAS non géré
La relation entre l'instance ReportDocument et le serveur RAS non géré peut être configurée de l'une des
manières suivantes :
●
Chargez le rapport Crystal incorporé local de l'instance ReportDocument sur le serveur RAS non géré au
moment de l'exécution. Ceci permet de stocker temporairement le fichier de rapport .rpt sur le serveur RAS
non géré hors processus.
●
Associez un rapport externe stocké en permanence sur le serveur RAS non géré hors processus à l'instance
ReportDocument, en affectant le chemin d'accès au répertoire du fichier de rapport sur le serveur RAS non
géré à la propriété FileName de l'instance ReportDocument.
Instance ReportDocument sur le serveur d'état de session, fichier .rpt sur le
serveur RAS non géré
L'instance ReportDocument, qui peut être sérialisée lorsqu'elle est utilisée en coopération avec la solution de mise
à niveau Crystal du RAS non géré, est stockée sur le serveur d'état de session hors processus ASP.NET.
Etant donné que l'instance ReportDocument reste active sur le serveur d'état de session, le fichier de rapport
Crystal .rpt associé à l'instance ReportDocument reste ouvert sur le serveur RAS non géré.
80
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Dans la batterie de serveurs Web ou le jardin Web, lorsqu'un autre processus de traitement ASP.NET extrait
l'instance ReportDocument à partir du serveur d'état de session hors processus, l'instance ReportDocument
accède au fichier .rpt associé à partir du serveur RAS non géré.
Ecriture d'image sur le partage réseau
Il vous faut configurer un détail supplémentaire lorsque vous utilisez une batterie de serveurs Web.
Les images qui sont écrites durant le processus de création de rapports (telles que les diagrammes dynamiques)
doivent être placées sur un partage réseau commun pour que n'importe quel processus de traitement ASP.NET
puisse y accéder. Chaque ordinateur doit être configuré pour écrire les images sur le même partage réseau et
pour accorder des autorisations d'accès au compte de traitement ASP.NET sur chaque ordinateur qui écrit sur ce
partage.
Pour configurer un ordinateur afin qu'il puisse accéder à ce répertoire, ajoutez les informations ci-dessous à votre
registre.
[HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 12.0\Report Application Server
\Viewer]
"CrystalImageDir"="\\fileserver\images"
Instructions de configuration détaillées
Pour des informations détaillées sur les problèmes de configuration posés par l'exécution de SAP Crystal Reports
dans une batterie de serveurs Web ou un jardin Web, consultez le site Web du support technique.
1.3.6
Utilisation de Crystal Reports en tant que service Web
Cette section explique comment utiliser des rapports Crystal qui ont été publiés en tant que services Web de
rapports.
Les services Web permettent de partager les données et les fonctionnalités de différentes applications. Un logiciel
de comptabilité peut ainsi être connecté à un logiciel de gestion de commandes client par exemple. Les services
Web peuvent également être utilisés entre différentes sociétés afin de partager leurs données et leurs
applications.
Les services Web sont indépendants de toute technologie de composants ou convention d'appel d'objets pour les
raisons suivantes :
●
Ils utilisent le protocole HTTP en tant que protocole Web.
●
Ils font appel au langage XML.
●
Ils prennent en charge SSL (Secure Socket Layer).
Tout programme peut accéder aux services Web, quels que soient son langage de programmation, le modèle de
composant ou le système d'exploitation utilisé.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
81
SAP Crystal Reports permet de publier et d'utiliser facilement des rapports en tant que services Web de rapports.
Les applications Web et Windows peuvent être connectées à un service Web de rapports et afficher le rapport
Crystal exposé par ce service.
1.3.6.1
Publication et utilisation d'un rapport en tant que
service Web
Dans SAP Crystal Reports, version développeur pour Microsoft Visual Studio, vous pouvez publier des rapports
Crystal en tant que services Web.
Publication d'un rapport en tant que service Web de rapports
Dans SAP Crystal Reports, version développeur pour Microsoft Visual Studio, lorsque vous sélectionnez l'option
permettant de publier un rapport Crystal dans un service Web de rapports, ce dernier est compilé en DLL et un
fichier XML portant l'extension ".asmx" (fichier des services Web .NET) est alors généré. Ce fichier .ASMX décrit
les fonctions publiques, les paramètres d'entrée, les types de données et les types de données renvoyées qui sont
exposés par le service Web de rapports. Les fichiers DLL et ASMX sont publiés sur le serveur Web en tant que
services Web de rapports. Le service Web de rapports peut désormais être appelé par l'intermédiaire de son URL
par une application cliente à partir d'un navigateur Web. Les données sont transmises depuis et vers le service
Web via le protocole HTTP sous forme de langage XML.
Utilisation du rapport en tant que fichier de service Web de rapports dans une
application cliente
Pour accéder à partir d'une application cliente au service Web de rapports publié, vous devez transmettre la
chaîne URL de ce dernier à la propriété ReportSource du contrôle CrystalReportViewer à partir d'un site Web ou
d'un projet Windows.
Informations associées
Utilisation des services Crystal [page 84]
Utilisation de Crystal Reports en tant que service Web [page 81]
82
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.3.6.1.1
Pour publier un service Web de rapports
Prérequis
Avant de commencer, vous devez disposer d'un rapport Crystal existant. Le rapport est publié en tant que service
Web, qui peut ensuite être utilisé par la propriété CrystalReportViewer.ReportSource.
Procédure
1.
Démarrez Visual Studio.
2.
Dans le menu Fichier, sélectionnez Nouveau, puis cliquez sur Site Web.
3.
Dans la liste Modèles Visual Studio installés, cliquez sur Service Web ASP.NET.
4.
Dans le champ Emplacement, saisissez le nom et le chemin d'accès du répertoire de fichiers de votre service
Web.
C:\WebServices\MyCrystalReportsWebServices
5.
Cliquez sur OK.
6.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom de projet affiché en gras,
puis sélectionnez Ajouter un élément existant.
7.
Dans la boîte de dialogue Ajouter un élément existant, sélectionnez Tous les fichiers (*.*) sous Types de
fichiers.
8.
Ajoutez un rapport existant Crystal à votre projet.
9.
Cliquez avec le bouton droit de la souris sur le rapport, puis sélectionnez Publier en tant que service Web.
Un nouveau service est créé.
10. Cliquez avec le bouton droit de la souris sur Service Web, puis sélectionnez Définir comme page de début.
Lorsque vous exécutez votre application, le nouveau service Web s'affiche dans le navigateur Web. Vous
pouvez utiliser l'URL du service Web en tant que source du rapport pour un contrôle CrystalReportViewer.
Remarque
Dans Visual Studio 2005 et versions ultérieures, le serveur Web utilisé par défaut pour afficher l'aperçu des
sites et des services Web n'est pas IIS, mais le serveur Web Visual Web Developer. Lorsque vous utilisez ce
serveur Web, l'URL contient uniquement un numéro de port temporaire et aléatoire, valide uniquement au
moment de la compilation. Pour accéder à l'URL du service Web à partir d'une application cliente, vous
devez tout d'abord configurer le répertoire de fichiers du projet de service Web en tant que répertoire
virtuel dans IIS. Ce répertoire virtuel fournit alors une URL cohérente qu'il est possible d'appeler à partir de
l'application cliente.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
83
1.3.6.1.2
Pour utiliser le service Web de rapports à partir
d'un projet client
Prérequis
Avant de commencer, vous devez disposer d'un accès à un rapport ayant déjà été publié en tant que service Web.
Procédure
1.
Ajoutez le contrôle CrystalReportViewer à votre site Web ou votre application Windows.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Affectez l'URL d'un service Web de rapports à la propriété ReportSource de la classe
CrystalReportViewer.
myCrystalReportViewer.ReportSource =
"http://localhost/MyCrystalReportsWebService/Hierarchical_GroupingService.asmx"
crystalReportViewer.ReportSource =
"http://localhost/MyCrystalReportsWebService/Hierarchical_GroupingService.asmx";
Résultats
Lorsque vous exécutez votre application, le contrôle CrystalReportViewer affiche le rapport publié par le service
Web.
1.3.6.2
Utilisation des services Crystal
SAP Crystal Reports, version développeur pour Microsoft Visual Studio, permet de se connecter par
programmation aux rapports via le service Web des services Crystal. Les services Crystal facilitent la connexion
aux rapports exposés par différents serveurs du réseau.
Les sources des rapports sous-jacentes et les classes que ces derniers génèrent (lorsqu'ils sont déplacés par
glissement dans un Web Form ou un Windows Form) varient au fil des versions successives de SAP Crystal
Reports.
84
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Utilisation des services Crystal avec SAP Crystal Reports 2005 ou une version
plus récente
Dans Visual Studio 2005, les services Crystal sont accessibles par programmation. Ils permettent de générer une
liste de rapports disponibles sur un ordinateur local ou distant, ainsi que d'accéder à ces rapports via un service
Web.
Le code de connexion doit être saisi manuellement dans SAP Crystal Reports, version développeur pour Microsoft
Visual Studio.
Les services Crystal utilisent le protocole des services Web de rapports pour accéder à un répertoire virtuel du
serveur, appelé répertoire virtuel des visualiseurs.
Utilisation des services Crystal avec SAP Crystal Reports pour
Visual Studio .NET 2003
Dans SAP Crystal Reports pour Visual Studio 2003, les services Crystal étaient accessibles à partir de
l'Explorateur de serveurs.
Le sous-nœud Services Crystal de chaque serveur se développe pour afficher d'autres sous-nœuds. Le nom de
ces sous-nœuds varie en fonction des versions de SAP Crystal Reports, mais ils ont un comportement commun :
chaque sous-nœud Services Crystal se développe pour afficher une liste de rapports à partir du répertoire de
fichiers de l'ordinateur local ou à partir des serveurs du réseau.
Un sous-nœud Services Crystal peut parfois utiliser le protocole des services Web de rapports. Dans ce cas, il
l'utilise pour accéder à un répertoire virtuel du serveur, appelé répertoire virtuel des visualiseurs.
Dans d'autres cas, une connexion directe est établie avec un serveur RAS non géré, SAP Crystal Reports Server
ou la plateforme SAP BusinessObjects Business Intelligence. Dans ce cas, le protocole des services Web de
rapports n'est pas utilisé.
Il se peut que vous deviez ajuster vos paramètres de pare-feu afin d'accéder au CMS de la plateforme SAP
BusinessObjects Business Intelligence. Le port par défaut pour le CMS est 6400. Contactez votre administrateur
système pour plus d'informations sur l'adresse réseau et les paramètres de port de votre système de plateforme
SAP BusinessObjects Business Intelligence. Pour plus d'informations sur la personnalisation des ports, voir le
Guide d'administration de la plateforme SAP BusinessObjects Business Intelligence.
Remarque
Les nœuds disponibles dépendent de la configuration et du contrat de licence dont vous disposez.
Un rapport exposé via le nœud Services Crystal peut être déplacé par une simple opération glisser-déplacer vers
la barre d'état des composants d'un Web Form ou d'un Windows Form dans Visual Studio NET 2003.
Informations associées
Répertoire des visualiseurs [page 14]
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
85
1.3.6.3
Crystal
Configuration des fichiers serveur dans les services
Parmi les groupes de services Crystal fournis avec SAP Crystal Reports, version développeur pour Microsoft
Visual Studio, figurent les fichiers serveur. Les fichiers serveur constituent un ensemble de services Web de
rapports qui sont exposés par le biais d'un répertoire virtuel à partir du chemin d'accès à un répertoire de fichiers
situé sur le disque dur.
Différentes conditions d'implémentation sont requises pour chaque version de Visual Studio.
1.3.6.3.1
Configuration des fichiers serveur dans Visual
Studio .NET 2003
Les fichiers serveur correspondent à un ensemble de services Web de rapports qui sont exposés à partir du
répertoire virtuel des visualiseurs dans IIS. Les fichiers serveur étaient à l'origine fournis sous la forme d'un nœud
Services Crystal dans SAP Crystal Reports pour Visual Studio .NET 2002, mais ce nœud a depuis été supprimé.
Chaque nouvelle version de SAP Crystal Reports continue à prendre en charge les fichiers serveur dans le SDK,
mais leur utilisation nécessite une configuration particulière pour chaque version.
Les fichiers serveur sont générés à partir des fichiers de rapport sous-jacents figurant dans le dossier des
exemples de rapports (ou tout autre dossier désigné) du chemin d'accès au répertoire de fichiers du serveur Web.
Vous pouvez accéder aux fichiers serveur de deux manières :
●
Via un nœud visible sous Services Crystal.
Ce mode d'accès est uniquement disponible dans SAP Crystal Reports pour Visual Studio 2003.
●
En programmant la classe ServerFileReport dans le SDK.
Vous pouvez accéder aux fichiers serveur par le biais du SDK avec toutes les versions de
SAP Crystal Reports .NET.
Les fichiers serveur sont exposés par le biais d'un répertoire virtuel dans IIS. La connexion aux fichiers de rapport
sous-jacents nécessite la configuration des droits d'accès au dossier.
Les droits d'accès sont configurés par le biais d'une entrée de fichier web.config.
Configuration des fichiers serveur dans Visual Studio .NET 2003
Dans Visual Studio .NET 2003, le dossier de configuration des fichiers serveur est devenu obsolète et remplacé
par l'ajout d'une entrée de configuration au fichier web.config.
Vous pouvez ajouter cette entrée de configuration au fichier web.config de chaque projet, l'un après l'autre. Il est
toutefois recommandé de l'ajouter au fichier web.config situé dans le répertoire virtuel des visualiseurs de
SAP Crystal Reports afin de rendre cette information accessible à tous les projets Visual Studio .NET. Avant
d'effectuer cette opération, lisez la section suivante pour en savoir plus sur le répertoire virtuel des visualiseurs.
86
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Fichiers serveur et répertoire virtuel des visualiseurs
Les fichiers serveur sont pris en charge en dehors d'IIS (Internet Information Services) à partir d'un service Web
centralisé situé dans un répertoire virtuel des visualiseurs spécial. Chaque nouvelle version de
SAP Crystal Reports crée un répertoire virtuel des visualiseurs supplémentaire dans IIS, ce qui permet de
conserver plusieurs versions de SAP Crystal Reports.
Un problème de maintenance se pose si vous avez codé les fichiers serveur dans un projet d'une version
antérieure de SAP Crystal Reports et si vous procédez à une mise à niveau vers une version ultérieure. Pour
permettre le fonctionnement des instances de ServerFileReport, dans votre code, le nom du répertoire virtuel des
visualiseurs dans la propriété WebServiceURL de chaque instance de ServerFileReport doit être remplacé par le
répertoire virtuel des visualiseurs actuel.
Informations associées
Configuration des fichiers serveur dans Visual Studio 2005 et les versions plus récentes [page 89]
Utilisation de Crystal Reports en tant que service Web [page 81]
Répertoire des visualiseurs [page 14]
1.3.6.3.1.1
Pour modifier le répertoire virtuel des
visualiseurs dans la propriété WebServiceURL des instances de
ServerFileReport
Procédure
1.
Recherchez dans votre projet toutes les occurrences dans lesquelles la propriété WebServiceURL d'une
instance de ServerFilesReport a été affectée.
2.
Comparez le nom du répertoire virtuel des visualiseurs actuellement affecté dans votre code à celui utilisé
dans les versions précédentes
3.
Changez le nom du répertoire virtuel des visualiseurs utilisé dans la version de SAP Crystal Reports la plus
récente.
4.
Recompilez l'application et vérifiez que les rapports se chargent correctement.
Étapes suivantes
Modifiez le fichier web.config du répertoire virtuel des visualiseurs de manière à configurer correctement les
fichiers serveur dans toutes les versions postérieures à Visual Studio .NET 2002.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
87
1.3.6.3.1.2
Pour ajouter l'entrée de configuration des fichiers
serveur au fichier web.config du répertoire virtuel des
visualiseurs (toutes les versions postérieures à Visual
Studio .NET 2002)
Procédure
1.
Localisez le répertoire virtuel des visualiseurs de la version SAP Crystal Reports la plus récente.
2.
Pour vous assurer que le répertoire virtuel des visualiseurs fonctionne, ouvrez un navigateur, puis saisissez
l'URL du service Web de rapports publié dans le répertoire virtuel des visualiseurs.
Option
Description
Visual Studio 2003
http://localhost/CrystalReportWebFormViewer2/
ServerFileReportService.asmx?wsdl
SAP Crystal Reports 2008 http://localhost/crystalreportviewers12/
ServerFileReportService.asmx?wsdl
3.
Ouvrez le fichier web.config situé dans le répertoire virtuel des visualiseurs dans un éditeur de texte.
Remarque
Si vous le souhaitez, vous pouvez également apporter ces modifications uniquement dans le fichier
web.config de l'application Web cliente qui accèdera à ces rapports des fichiers serveur.
4.
Au tout début du fichier web.config, à l'intérieur de la balise configuration, ajoutez une entrée configSections
qui déclare un nouveau type sectionGroup (crystalDecisions) et sa section (serverFileReportManager).
<configSections>
<sectionGroup name="crystalDecisions">
<section name="serverFileReportManager"
type="System.Configuration.NameValueSectionHandler, System,
Version=1.0.3300.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089, Custom=null" />
</sectionGroup>
</configSections>
5.
Après la balise de fermeture de configSections, ajoutez le nouveau type sectionGroup et la section que vous
avez déclarés à l'étape précédente.
Dans l'exemple ci-dessous, remplacez la valeur du répertoire racine par celle du répertoire dans lequel vous
avez stocké vos rapports. Pour cet exemple, le chemin du fichier est le suivant : C:\program files
\Microsoft Visual Studio .NET 2003\Crystal Reports\Samples\Reports\Feature Examples.
<crystalDecisions>
<serverFileReportManager>
<add key="rootDirectory"
value="C:\program files\Microsoft Visual Studio .NET 2003\Crystal Reports\Samples
\En\Reports\Feature Examples" />
</serverFileReportManager>
</crystalDecisions>
88
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Remarque
Vous devez saisir le chemin d'accès du répertoire de fichiers au dossier de rapports dans le champ de
valeur.
6.
Enregistrez les modifications apportées au fichier web.config.
1.3.6.3.2
Configuration des fichiers serveur dans Visual
Studio 2005 et les versions plus récentes
Les fichiers serveur correspondent à un ensemble de services Web de rapports qui exposent des rapports sur un
serveur IIS. Les fichiers serveur étaient à l'origine fournis sous la forme d'un nœud Services Crystal dans
SAP Crystal Reports pour Visual Studio .NET 2002, mais ce nœud a depuis été supprimé. Chaque nouvelle
version de SAP Crystal Reports continue à prendre en charge les fichiers serveur dans le SDK, mais leur utilisation
nécessite une configuration particulière pour chaque version.
Les fichiers serveur sont générés à partir des fichiers de rapport sous-jacents figurant dans le dossier des
exemples de rapports (ou tout autre dossier désigné) du répertoire de fichiers du serveur Web.
Configuration des fichiers serveur
La configuration des fichiers serveur pour Visual Studio 2005 ou une version plus récente s'effectue en deux
étapes. La première étape consiste à créer le service Web de rapports qui va exposer les rapports. La deuxième
étape consiste à modifier le fichier web.config correspondant au nouveau service Web. Dans Visual Studio 2005,
l'utilisation du dossier de configuration pour les fichiers serveur qui se faisait dans Visual Studio .NET 2002 a été
déconseillée au profit de l'ajout d'une entrée de configuration dans le fichier web.config.
Vous pouvez ajouter l'entrée de configuration au fichier web.config de chaque projet, l'un après l'autre. Il est
toutefois recommandé d'ajouter cette entrée de configuration au fichier web.config situé dans le répertoire virtuel
qui contient les services Web de rapports.
Informations associées
Connexion aux services Web de rapports à partir d'un site Web sécurisé [page 93]
Utilisation de Crystal Reports en tant que service Web [page 81]
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
89
1.3.6.3.2.1
Pour créer les services Web de rapports requis
pour les fichiers serveur
Procédure
1.
Démarrez Visual Studio.
2.
Dans le menu Fichier, sélectionnez Nouveau, puis cliquez sur Site Web.
3.
Dans la boîte de dialogue Nouveau site Web, sélectionnez Visual C# dans la liste Langage.
4.
Dans la liste Modèles, cliquez sur Service Web ASP.NET.
5.
Dans le champ Emplacement, remplacez le nom de projet par défaut par le nom de votre projet.
Pour cet exemple, le projet sera enregistré dans C:\InetPub\wwwroot\ sous le nom
CrystalReportsWebServices.
C:\InetPub\wwwroot\CrystalReportsWebServices\
6.
Cliquez sur OK.
7.
Dans le menu Déboguer, cliquez sur Démarrer le débogage.
Une boîte de dialogue indiquant que le fichier web.config doit être modifié s'affiche alors. Cliquez sur le
bouton OK pour activer le débogage.
8.
Une fois le débogage terminé, revenez à l'application.
9.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur Service.asmx, puis cliquez sur
Supprimer.
10. Dans l'Explorateur de solutions, développez le dossier App_Code, cliquez avec le bouton droit de la souris sur
Service.cs, puis cliquez sur Supprimer.
11. Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du projet affiché en gras,
puis cliquez sur Ajouter un nouvel élément.
12. Dans la boîte de dialogue Ajouter un nouvel élément, procédez de la manière suivante :
a) Dans le champ Modèles, sélectionnez Service Web.
b) Dans le champ Nom, saisissez ServerFileReportService.asmx.
c) Désactivez la case à cocher Placer le code dans un fichier distinct.
d) Cliquez sur Ajouter.
13. Remplacez le contenu du fichier ServerFileReportService.asmx par la ligne suivante :
<%@ WebService language="C#"
class="CrystalDecisions.Web.Services.ServerFileReportService" %>
14. Dans le menu Fichier, cliquez sur Enregistrer tout.
15. Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du projet affiché en gras,
puis cliquez sur Ajouter un nouvel élément.
16. Dans la boîte de dialogue Ajouter un nouvel élément :
a) Dans le champ Modèles, sélectionnez Service Web.
b) Dans le champ Nom, saisissez ServerFileReportManager.asmx.
c) Désactivez la case à cocher Placer le code dans un fichier distinct.
90
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
d) Cliquez sur Ajouter.
17. Remplacez le contenu du fichier ServerFileReportManager.asmx par la ligne suivante :
<%@ WebService language="C#"
class="CrystalDecisions.Web.Services.ServerFileReportManager" %>
18. Dans le menu Fichier, cliquez sur Enregistrer tout.
1.3.6.3.2.2
Pour modifier le répertoire virtuel des
visualiseurs dans la propriété WebServiceURL des instances de
ServerFileReport
Procédure
1.
Recherchez dans votre projet toutes les occurrences dans lesquelles la propriété WebServiceURL d'une
instance de ServerFilesReport a été affectée.
2.
Comparez le nom du répertoire virtuel des visualiseurs actuellement affecté dans votre code à celui utilisé
dans les versions précédentes
3.
Changez le nom du répertoire virtuel des visualiseurs utilisé dans la version de SAP Crystal Reports la plus
récente.
Si votre version de SAP Crystal Reports la plus récente est SAP Crystal Reports pour Visual Studio 2005,
saisissez le chemin d'accès au service Web de rapports que vous avez précédemment créé dans ce tutoriel.
4.
Recompilez l'application et vérifiez que les rapports se chargent correctement.
Informations associées
Répertoire des visualiseurs [page 14]
1.3.6.3.2.3
Pour ajouter l'entrée de configuration des fichiers
serveur au fichier web.config
Procédure
1.
Dans l'Explorateur de solutions, ouvrez le fichier Web.Config.
2.
Remplacez le contenu intégral du fichier Web.Config par le code XML ci-après.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
91
Dans l'exemple ci-dessous, remplacez la valeur du répertoire racine par celle du répertoire dans lequel vous
avez stocké vos rapports. Pour cet exemple, le chemin de fichier défini est C:\program files\Microsoft
Visual Studio 8\Crystal Reports\Samples\fr\Reports\Feature Examples.
<?xml version="1.0"?>
<configuration
xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<configSections>
<sectionGroup name="crystalDecisions">
<section name="serverFileReportManager"
type="System.Configuration.NameValueSectionHandler, System,
Version=1.0.3300.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089, Custom=null"/>
</sectionGroup>
</configSections>
<crystalDecisions>
<serverFileReportManager>
<add key="rootDirectory" value="C:\program files\Microsoft Visual
Studio 8\Crystal Reports\Samples\fr\Reports\Feature Examples"/>
</serverFileReportManager>
</crystalDecisions>
<appSettings/>
<connectionStrings/>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="CrystalDecisions.Web, Version=12.1.2000.0,
Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
</assemblies>
</compilation>
</system.web>
</configuration>
Remarque
Vous devez saisir le chemin d'accès du répertoire de fichiers au dossier des rapports à l'endroit où vous
voyez l'énoncé PUT_FILE_DIRECTORY_PATH_TO_REPORTS_FOLDER_HERE.
3.
Enregistrez les modifications apportées au fichier web.config.
4.
Pour vous assurer que le répertoire virtuel des visualiseurs fonctionne, ouvrez un navigateur, puis saisissez
l'URL du service Web de rapports publié.
http://localhost/CrystalReportsWebServices/ServerFileReportService.asmx?wsdl
1.3.6.3.2.4
Anciens fichiers serveur et répertoire virtuel des
visualiseurs
Dans les précédentes versions de SAP Crystal Reports, les fichiers serveur étaient pris en charge en dehors d'IIS,
à partir d'un service Web centralisé situé dans le répertoire virtuel des visualiseurs. Chaque nouvelle version de
SAP Crystal Reports crée un répertoire virtuel des visualiseurs supplémentaire dans IIS, ce qui permet de
conserver plusieurs versions de SAP Crystal Reports.
92
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Un problème de maintenance se pose si vous avez codé les fichiers serveur dans un projet d'une version
antérieure de SAP Crystal Reports et si vous procédez à une mise à niveau vers une version ultérieure. Pour
permettre le fonctionnement des instances de ServerFileReport, dans votre code, le nom du répertoire virtuel des
visualiseurs dans la propriété WebServiceURL de chaque instance de ServerFileReport doit être remplacé par
l'emplacement actuel du service Web de rapports.
Informations associées
Répertoire des visualiseurs [page 14]
1.3.6.4 Connexion aux services Web de rapports à partir d'un
site Web sécurisé
Dans SAP Crystal Reports, version développeur pour Microsoft Visual Studio, vous pouvez publier des rapports
Crystal en tant que services Web.
Dans la mesure où les services Web sont accessibles via le Web, vous souhaiterez peut-être les protéger de tout
accès anonyme.
Cette section explique comment supprimer l'accès anonyme d'un répertoire virtuel contenant un service Web de
rapports, puis comment écrire du code permettant de placer ce service dans une classe RemoteReportProxy qui
peut être configurée de manière à traiter l'authentification NT sur le serveur IIS (Internet Information Services).
Deux types de service Web de rapports nécessitent un code d'authentification : les services Web de rapports
standard et les fichiers serveur.
Informations associées
Publication et utilisation d'un rapport en tant que service Web [page 82]
Configuration des fichiers serveur dans les services Crystal [page 86]
1.3.6.4.1
Services Web de rapports et authentification NT
1.3.6.4.1.1
Ajout de l'authentification NT à un service Web
de rapports
Avant d'apporter quelque modification que ce soit en vue de l'authentification NT, vous devez créer un projet qui
publie et utilise un service Web de rapports comme indiqué dans la section Publication et utilisation d'un rapport
en tant que service Web [page 82].
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
93
Dans cette section, vous allez apprendre à supprimer l'accès anonyme du répertoire qui contient le service Web
de rapports que vous avez créé précédemment.
Informations associées
Connexion aux services Web de rapports à partir d'un site Web sécurisé [page 93]
1.3.6.4.1.1.1
Pour supprimer l'accès anonyme du répertoire
contenant le service Web de rapports
Procédure
1.
Dans le Panneau de configuration, cliquez deux fois sur Outils d'administration, puis sur Gestionnaire des
services Internet.
2.
Dans la fenêtre Services Internet (IIS), développez les nœuds supérieurs, puis le nœud Site Web par défaut.
3.
Recherchez le répertoire virtuel contenant le Report Web Service que vous avez créé précédemment.
4.
Cliquez sur ce répertoire virtuel avec le bouton droit de la souris, puis sélectionnez Propriétés.
5.
Dans la boîte de dialogue Propriétés, dans l'onglet Sécurité de répertoire, cliquez sur Modifier.
6.
Désactivez la case à cocher Accès anonyme, puis cliquez sur OK.
7.
Cliquez sur OK pour fermer la boîte de dialogue Propriétés.
8.
Fermez la fenêtre Services Internet (IIS).
Résultats
A ce stade, si vous souhaitez qu'un utilisateur réseau en particulier puisse accéder au répertoire par
authentification, vous devez attribuer à cet utilisateur une autorisation individuelle sur le dossier à partir de
l'Explorateur Windows.
1.3.6.4.1.1.2
Pour attribuer à un utilisateur réseau en
particulier des autorisations sur le dossier
Procédure
1.
Dans l'Explorateur Windows, recherchez le dossier contenant le service Web.
2.
Cliquez avec le bouton droit de la souris sur le dossier, puis sélectionnez Propriétés.
94
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
3.
Dans la boîte de dialogue Propriétés, dans l'onglet Sécurité, cliquez sur Ajouter.
4.
Dans la boîte de dialogue Sélectionner les utilisateurs, les ordinateurs ou les groupes, dans le panneau
<<Entrez des noms séparés par des points-virgules ou choisissez à partir de la liste>>, saisissez le nom de
l'utilisateur réseau.
5.
Cliquez sur Vérifier les noms.
6.
Vérifiez que le nom de l'utilisateur a été correctement ajouté, puis cliquez sur OK.
7.
Dans le panneau Autorisations, activez la case à cocher Autoriser pour l'autorisation Lecture.
1.3.6.4.1.2
Modification de l'application cliente pour ajouter
un accès sécurisé
Dans cette section, vous allez modifier l'application cliente afin qu'elle puisse accéder au service Web de rapports
de façon sécurisée par le biais de l'authentification NT. Vous devez pour cela ajouter des assemblys, des espaces
de noms et du code.
1.3.6.4.1.2.1
Vérification de l'impossibilité pour votre
application cliente d'accéder au service Web sécurisé
Procédure
1.
Rouvrez l'application cliente que vous avez créée pour utiliser le service Web de rapports (dans la section
Publication et utilisation d'un rapport en tant que service Web [page 82]).
2.
Exécutez l'application afin de vous assurer que vous n'êtes plus autorisé à accéder de manière anonyme au
service Web de rapports contenu dans ce répertoire.
Le message d'erreur suivant s'affiche : "La demande a échoué avec l'état HTTP 401 : accès refusé".
1.3.6.4.1.2.2
Pour ajouter de nouveaux assemblys ainsi que
les références à ces assemblys
Procédure
1.
Cliquez avec le bouton droit de la souris sur le dossier References, puis sélectionnez Ajouter une référence.
2.
Dans la boîte de dialogue Add Reference, dans l'onglet .NET, cliquez sur les assemblys suivants tout en
maintenant la touche CTRL enfoncée :
3.
○
CrystalDecisions.ReportSource
○
System.Web.Services
Cliquez sur Select sur le côté droit de la boîte de dialogue.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
95
4.
Vérifiez que les deux assemblys ont bien été ajoutés au panneau Selected Components, puis cliquez sur
OK.
5.
Ouvrez le Web Form ou le Windows Form que vous avez créé dans Configuration d'un projet [page 15].
6.
Dans le menu View, cliquez sur Code.
7.
Au-dessus de la signature de classe, ajoutez trois déclarations "Imports" [Visual Basic] ou "using" [C#] au
début de la classe pour les espaces de noms suivants.
Imports CrystalDecisions.ReportSource
Imports System.Net
Imports System.Web.Services
using CrystalDecisions.ReportSource;
using System.Net;
using System.Web.Services;
Étapes suivantes
Vous allez ensuite apprendre à ajouter du code pour configurer une classe RemoteReportProxy de sorte qu'elle
transmette les références de connexion de l'utilisateur au répertoire sécurisé du service Web de rapports.
1.3.6.4.1.2.3
Codage de la méthode
GetReportWebServiceWithAuthentication()
Contexte
La méthode GetReportWebServiceWithAuthentication() permet de configurer le proxy du rapport distant
et de gérer l'authentification NT.
Dans cette section, vous allez apprendre à coder la méthode GetReportWebServiceWithAuthentication()
pour définir les valeurs des propriétés URL et Credentials. Vous devez ajouter la méthode
GetReportWebServiceWithAuthentication() à la propriété ReportSource du contrôle
CrystalReportViewer pour la déclaration et l'instanciation de la classe RemoteReportProxy.
Cette méthode ajoute en option des paramètres de proxy pare-feu à l'instance RemoteReportProxy.
Procédure
1.
Au bas de la classe, créez la méthode d'assistance privée GetReportWebServiceWithAuthentication()
qui renvoie une classe RemoteReportProxy.
Private Function GetReportWebServiceWithAuthentication() As
96
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
RemoteReportProxy
End Function
private RemoteReportProxy GetReportWebServiceWithAuthentication()
{
}
2.
Dans la méthode ConfigureCrystalReports(), sélectionnez la chaîne URL de service Web actuellement
affectée à la propriété ReportSource du contrôle CrystalReportViewer. Coupez cette chaîne dans le
Presse-papiers.
Remarque
Plus loin dans cette procédure, vous affecterez une nouvelle valeur à la propriété ReportSource du
contrôle CrystalReportViewer.
3.
Déclarez une variable chaîne reportWebServiceURL et collez la chaîne URL.
Dim reportWebServiceURL As String =
"http://mywebserviceserver.com/MyWebServiceDirectory/Hierarchical
%20GroupingService.asmx"
string reportWebServiceURL =
"http://mywebserviceserver.com/MyWebServiceDirectory/Hierarchical
%20GroupingService.asmx";
4.
Déclarez et instanciez la classe RemoteReportProxy.
Dim myRemoteReportProxy As RemoteReportProxy = New RemoteReportProxy()
RemoteReportProxy remoteReportProxy = new RemoteReportProxy();
5.
Affectez la variable reportWebServiceURL à la propriété URL de l'instance RemoteReportProxy.
myRemoteReportProxy.Url = reportWebServiceURL
remoteReportProxy.Url = reportWebServiceURL;
6.
Appelez la méthode ConfigureAuthentication() (que vous allez créer dans les procédures suivantes) et
transmettez-lui la valeur Boolean True et la variable reportWebServiceURL. Affectez cette méthode à la
propriété Credentials de l'instance RemoteReportProxy.
myRemoteReportProxy.Credentials = ConfigureAuthentication(True,
reportWebServiceURL)
remoteReportProxy.Credentials = ConfigureAuthentication(true,
reportWebServiceURL);
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
97
7.
Appelez la méthode AddFirewallProxySettings() (que vous allez créer dans les procédures suivantes)
et transmettez-lui la valeur booléenne False, la chaîne URI d'un serveur proxy pare-feu et l'instance
RemoteReportProxy.
Remarque
Remplacez la chaîne URI par votre serveur proxy pare-feu.
myRemoteReportProxy = AddFirewallProxySettings(False, "<<
http://firewallproxyserver:8080>>",
myRemoteReportProxy)
remoteReportProxy = AddFirewallProxySettings(false, "<<
http://firewallproxyserver:8080>>",
remoteReportProxy);
8.
Renvoyez l'instance RemoteReportProxy à partir de la méthode.
Return myRemoteReportProxy
return remoteReportProxy;
1.3.6.4.1.2.4
Codage de la méthode
ConfigureAuthentication()
Contexte
Dans cette section, vous allez apprendre à coder la méthode ConfigureAuthentication() et ainsi découvrir
deux approches pour configurer l'authentification.
Dans la première approche, vous allez utiliser un nom d'utilisateur, un mot de passe et un nom de domaine
spécifiques conformément aux autorisations utilisateur (droits d'accès) que vous avez ajoutées dans Ajout de
l'authentification NT à un service Web de rapports [page 93]. La seconde approche est basée sur l'autorisation
NTLM.
Lorsqu'une valeur True Boolean est transmise à cette méthode, les références de connexion propres à
l'utilisateur sont communiquées pour permettre l'accès aux services Web. La transmission d'une valeur Boolean
False entraîne l'appel du code des références de connexion NTLM pour accéder aux services Web.
La méthode ConfigureAuthentication() est appelée à partir de la méthode
GetReportWebServiceWithAuthentication().
98
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Procédure
1.
Au bas de la classe, créez la méthode d'assistance privée ConfigureAuthentication() qui renvoie
l'interface ICredentials. Cette méthode fait appel à deux paramètres, une valeur booléenne nommée
isUserSpecific et la chaîne reportWebServiceURL.
Private Function ConfigureAuthentication(ByVal isUserSpecific As
Boolean, ByVal reportWebServiceURL As String) As ICredentials
End Function
private ICredentials ConfigureAuthentication(bool isUserSpecific,
string reportWebServiceURL)
{
}
2.
Dans la méthode, créez un bloc conditionnel qui teste le paramètre de méthode Boolean isUserSpecific.
If isUserSpecific Then
Else
End If
if(isUserSpecific)
{
}
else
{
}
3.
Recueillez les informations suivantes : nom de domaine réseau, nom et mot de passe de l'utilisateur auquel
vous avez accordé les droits d'accès au répertoire qui contient le service Web de rapports.
4.
Dans le bloc If, déclarez et affectez les valeurs appropriées aux variables chaîne de nom d'utilisateur, de mot
de passe et de domaine.
Dim userName As String = "fchen"
<NonSerialized()> Dim password As String = "1234"
Dim domain As String = "Enterprise"
string userName = "fchen";
[NonSerialized()] string password = "1234";
string domain = "Enterprise";
5.
Déclarez et instanciez la classe NetworkCredential et transmettez-lui les variables chaîne de nom
d'utilisateur, de mot de passe et de domaine.
Dim myNetworkCredential As NetworkCredential = New
NetworkCredential(userName, password, domain)
NetworkCredential networkCredential = new
NetworkCredential(userName, password, domain);
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
99
6.
Renvoyez l'instance NetworkCredential à partir du blocIf.
Dans le bloc Else, créez trois autres valeurs : un URI pour le service Web de rapports, une chaîne indiquant
que le type d'authentification est NTLM et une instance NetworkCredential. Chacune de ces valeurs est
transmise au cache des références de connexion.
Return myNetworkCredential
return networkCredential;
7.
Dans le bloc Else, déclarez et instanciez la classe CredentialCache.
Dim myCredentialCache As CredentialCache = New CredentialCache()
CredentialCache credentialCache = new CredentialCache();
8.
Déclarez et instanciez la classe Uri et transmettez-lui le paramètre reportWebServiceURL à partir de la
méthode ConfigureAuthentication().
Dim myUri As Uri = New Uri(reportWebServiceURL)
Uri uri = new Uri(reportWebServiceURL);
9.
Affectez la valeur "NTLM" à une variable chaîne nommée "ntlmAuthorization".
Dim ntlmAuthorization As String = "NTLM"
string ntlmAuthorization = "NTLM";
10. Déclarez et instanciez la classe NetworkCredential.
Dim myNetworkCredential As NetworkCredential = New
NetworkCredential()
NetworkCredential networkCredential = new NetworkCredential();
11. Transmettez l'instance Uri, la chaîne ntlmAuthorization et l'instance NetworkCredential à la méthode Add()
de l'instance CredentialCache.
myCredentialCache.Add(myUri, ntlmAuthorization,
myNetworkCredential)
credentialCache.Add(uri, ntlmAuthorization, networkCredential);
100
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
12. Renvoyez l'instance ICredentials à partir de la propriété DefaultCredentials de la classe
CredentialCache du bloc Else.
Return CredentialCache.DefaultCredentials
return CredentialCache.DefaultCredentials;
1.3.6.4.1.2.5
Codage de la méthode
AddFirewallProxySettings()
Contexte
Dans cette section, vous allez apprendre à coder la méthode AddFirewallProxySettings() avec l'instance
RemoteReportProxy en tant que paramètre. Vous apprendrez également à ajouter des paramètres proxy Web à
l'instance RemoteReportProxy.
La méthode AddFirewallProxySettings() est appelée à partir de la méthode
GetReportWebServiceWithAuthentication().
Cette méthode ne s'exécute que lorsque vous avez besoin d'accéder au service Web de rapports par le biais d'un
serveur proxy pare-feu.
Procédure
1.
Au bas de la classe, créez la méthode d'assistance privée AddFirewallProxySettings() qui renvoie la
classe RemoteReportProxy et transmettez-lui une variable booléenne, une variable chaîne et l'instance
RemoteReportProxy.
Private Function AddFirewallProxySettings(ByVal isFirewallProxy As
Boolean, ByVal webProxyURI As String, ByVal remoteReportProxy As
RemoteReportProxy) As RemoteReportProxy
End Function
private RemoteReportProxy AddFirewallProxySettings(bool
isFirewallProxy, string webProxyURI, RemoteReportProxy
remoteReportProxy)
{
}
2.
Dans la méthode, créez un bloc conditionnel qui teste la variable Boolean isFirewallProxy.
If isFirewallProxy Then
End If
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
101
if(isFirewallProxy)
{
}
3.
Dans le bloc conditionnel, déclarez et instanciez la classe WebProxy et transmettez-lui la chaîne
webProxyURI et la valeur BooleanTrue.
Dim myWebProxy As WebProxy = New WebProxy(webProxyURI, True)
WebProxy webProxy = new WebProxy(webProxyURI, true);
4.
Affectez l'instance WebProxy à la propriété Proxy de l'instance RemoteReportProxy qui a été transmise à la
méthode en tant que paramètre.
myRemoteReportProxy.Proxy = myWebProxy
remoteReportProxy.Proxy = webProxy;
5.
En dehors du bloc conditionnel, renvoyez l'instance RemoteReportProxy.
Return myRemoteReportProxy
return remoteReportProxy;
Résultats
Lorsqu'une valeur booléenne False est transmise au paramètre isFireWallProxy, les paramètres du proxy
pare-feu ne sont pas ajoutés. Il est conseillé de tester cette version du projet avec la configuration
d'authentification NT la plus simple et sans pare-feu entre le client test et le service Web.
Lorsque vous testez ce projet avec un pare-feu, placez l'application cliente en dehors du pare-feu, puis modifiez le
paramètre booléen isFireWallProxy en lui attribuant la valeur True. Vous devez affecter au paramètre chaîne
webProxyURI une valeur URI de proxy Web correcte et continuer à tester ce code via un pare-feu.
Informations associées
Connexion aux services Web de rapports à partir d'un site Web sécurisé [page 93]
102
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.3.6.4.1.3
Test du code d'authentification NT et des
références de connexion NTLM
1.3.6.4.1.3.1
Vérification de l'authentification NT
Prérequis
Pour pouvoir tester le code, vous devez auparavant modifier le code de liaison de rapport dans la méthode
ConfigureCrystalReports().
●
Dans la méthode ConfigureCrystalReports(), affectez à la propriété ReportSource du contrôle
CrystalReportViewer un appel à la méthode GetReportWebServiceWithAuthentication().
myCrystalReportViewer.ReportSource =
GetReportWebServiceWithAuthentication()
crystalReportViewer.ReportSource =
GetReportWebServiceWithAuthentication();
Vous êtes maintenant prêt à tester le code d'authentification NT que vous avez ajouté au projet client de service
Web.
Contexte
Pour tester le code d'authentification NT du projet client de service Web
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
L'application cliente se connecte au service Web et, si les nom d'utilisateur, mot de passe et nom de domaine
sont corrects, le rapport s'affiche.
4.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
Résultats
Vous venez de vous connecter au répertoire sécurisé à l'aide des références de connexion réseau propres à
l'utilisateur. Vous allez maintenant apprendre à tester la connexion via les références de connexion NTLM.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
103
Remarque
Pour configurer les paramètres du proxy pare-feu, vous pouvez modifier la valeur Boolean transmise à la
méthode AddFirewallProxySettings() en tant que paramètre.
Informations associées
Fichiers serveur et authentification NT [page 104]
1.3.6.4.1.3.2
Pour tester les références de connexion NTLM
du projet client de service Web
Procédure
1.
Recherchez l'appel à la méthode ConfigureAuthentication() dans la méthode
GetReportWebServiceWithAuthentication().
2.
Dans l'appel à la méthode ConfigureAuthentication(), remplacez la valeur booléenne True du premier
paramètre par False.
3.
Dans le menu Générer, sélectionnez Générer la solution.
4.
Dans le menu Déboguer, cliquez sur Démarrer.
5.
L'application cliente se connecte au service Web à l'aide de l'authentification NTLM.
6.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
Résultats
Vous êtes maintenant capable de vous connecter depuis votre client de services Web à un service Web de
rapports situé dans un répertoire sécurisé. Pour cela, vous avez configuré des valeurs dans l'instance
RemoteReportProxy, puis transmis cette instance à la propriété ReportSource du contrôle
CrystalReportViewer.
1.3.6.4.2
Fichiers serveur et authentification NT
Vous pouvez utiliser les fichiers serveur pour vous connecter facilement aux rapports stockés sur un ordinateur
distant.
Toutefois, si le répertoire virtuel qui fournit les rapports stockés dans les fichiers serveur est protégé par un
mécanisme d'authentification NT, vous devez ajouter du code à l'application cliente pour désigner ces rapports et
fournir les références de connexion réseau nécessaires.
104
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Informations associées
Configuration des fichiers serveur dans les services Crystal [page 86]
1.3.6.4.2.1
Création d'un projet pour désigner un répertoire
de fichiers serveur non sécurisé
Prérequis
Pour créer un projet qui désigne un répertoire non sécurisé, les fichiers serveur doivent être configurés pour la
version de Visual Studio dont vous disposez.
Suivez les instructions de la section appropriée et notez le chemin d'accès au répertoire de vos rapports (vous en
aurez besoin pour les procédures suivantes) :
●
Configuration des fichiers serveur dans Visual Studio .NET 2003 [page 86]
●
Configuration des fichiers serveur dans Visual Studio 2005 et les versions plus récentes [page 89]
Accédez au répertoire de rapports de votre projet et identifiez le nom d'un rapport que vous voulez visualiser via
les fichiers serveur.
Dans les étapes suivantes, le rapport utilisé en exemple s'appelle Hierarchical Grouping.rpt.
Remarque
Les instructions ci-dessous ne s'appliquent qu'à un projet créé dans la section Configuration d'un projet [page
15].
Contexte
Dans cette section, vous allez apprendre à définir les références de connexion réseau dont vous avez besoin.
Vous allez commencer par créer une application cliente qui accède aux rapports stockés dans les fichiers serveur
et qui autorise un accès non sécurisé au répertoire de services Web. Après avoir vérifié que votre application
cliente fonctionne, vous pourrez sécuriser l'accès au répertoire virtuel, puis ajouter du code à l'application cliente
pour fournir les références de connexion nécessaires à l'authentification NT.
Pour créer une application cliente afin d'accéder aux rapports des fichiers serveur :
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
105
3.
Localisez la méthode ConfigureCrystalReports() que vous avez créée dans la section Configuration d'un
projet [page 15].
4.
Dans la méthode, déclarez et instanciez la classe ServerFileReport.
Dim myServerFileReport As ServerFileReport = New ServerFileReport()
ServerFileReport serverFileReport = new ServerFileReport();
5.
Affectez à la propriété ReportPath de l'instance ServerFileReport le nom du rapport que vous voulez
afficher à partir du répertoire de rapports.
Remarque
Il s'agit du répertoire que vous avez configuré pour les rapports de fichiers serveur dans le fichier
Web.config.
Lorsque vous avez configuré le répertoire virtuel des visualiseurs, vous avez testé le paramètre wsdl en
entrant l'URL du service Web ServerFileReportServer.asmx à partir du chemin d'accès du répertoire virtuel.
Dans l'étape suivante, vous allez saisir cette URL en tant que valeur dans le code.
L'exemple de code ci-dessous utilise le rapport Hierarchical Grouping, qui figure dans le sous-répertoire
Feature Examples du dossier des exemples de rapports. Veillez à saisir le nom du sous-répertoire, suivi d'une
barre oblique inverse.
myServerFileReport.ReportPath = "Feature Examples\Hierarchical
Grouping.rpt"
serverFileReport.ReportPath = "Feature Examples\\Hierarchical
Grouping.rpt";
6.
Localisez la version correcte de l'URL du service Web ServerFileReportService.asmx en fonction de
votre version de SAP Crystal Reports.
Si vous disposez de SAP Crystal Reports, version développeur pour Microsoft Visual Studio, cet emplacement
correspond au répertoire virtuel du visualiseur de la version installée de SAP Crystal Reports.
Si vous avez installé SAP Crystal Reports, mais pas SAP Crystal Reports, version développeur pour Microsoft
Visual Studio, il s'agit de l'URL du service Web de rapports que vous avez créé dans Configuration des fichiers
serveur dans Visual Studio 2005 et les versions plus récentes [page 89].
7.
Affectez cette URL de service Web à la propriété WebService de l'instance ServerFileReport.
myServerFileReport.WebServiceUrl =
"http://localhost/CrystalReportsWebServices/ServerFileReportService.asmx"
serverFileReport.WebServiceUrl =
"http://localhost/CrystalReportsWebServices/ServerFileReport.asmx";
L'instance ServerFileReport est maintenant configurée et prête à être transmise au contrôle
CrystalReportViewer.
106
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
8.
Affectez l'instance de ServerFileReport à la propriété ReportSource du contrôle
CrystalReportViewer.
myCrystalReportViewer.ReportSource = myServerFileReport
crystalReportViewer.ReportSource = serverFileReport;
Informations associées
Répertoire des visualiseurs [page 14]
1.3.6.4.2.2
Reconfiguration des fichiers serveur pour
désigner un répertoire sécurisé
Dans cette section, vous allez apprendre à reconfigurer le répertoire et l'application cliente pour désigner un
répertoire sécurisé.
Vous allez commencer par désactiver l'accès anonyme au répertoire virtuel des visualiseurs dans IIS (Internet
Information Services).
1.3.6.4.2.2.1
Pour désactiver l'accès anonyme au répertoire
virtuel des visualiseurs dans IIS
Procédure
1.
Dans le Panneau de configuration, cliquez deux fois sur Outils d'administration, puis sur Gestionnaire des
services Internet.
2.
Dans la fenêtre Services Internet (IIS), développez les nœuds supérieurs, puis le nœud Site Web par défaut.
3.
Localisez le répertoire virtuel voulu, cliquez dessus avec le bouton droit de la souris, puis sélectionnez
Propriétés.
4.
Dans la boîte de dialogue Propriétés, dans l'onglet Sécurité de répertoire, cliquez sur Modifier.
5.
Désactivez la case à cocher Accès anonyme, puis cliquez sur OK.
6.
Cliquez sur OK pour fermer la boîte de dialogue Propriétés.
7.
Fermez la fenêtre Services Internet (IIS).
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
107
Résultats
Vous allez ensuite ajouter une balise <identity> dans le fichier Web.config.
Remarque
Il s'agit du fichier Web.config que vous avez modifié précédemment lors de la procédure de configuration des
fichiers serveur.
Informations associées
Répertoire des visualiseurs [page 14]
1.3.6.4.2.2.2
Web.config
Pour ajouter la balise <identity> au fichier
Procédure
1.
Rouvrez le fichier Web.config dans le répertoire virtuel des visualiseurs.
Remarque
Il existe deux fichiers Web.config, l'un dans le répertoire virtuel des visualiseurs, l'autre dans votre
application Web locale. Vous devez ajouter la balise d'identité au fichier Web.config situé dans le répertoire
virtuel du visualiseur. En effet, cette balise est requise lorsque l'accès anonyme à un répertoire virtuel a été
désactivé.
2.
Dans la balise <system.web>, au début, saisissez la balise <identity> comme indiqué ci-après.
<identity impersonate='true' />
3.
Enregistrez le fichier Web.config.
4.
Si vous avez également désactivé l'accès anonyme au répertoire virtuel de votre projet Web client, ajoutez
également la balise <identity> au fichier Web.config de votre projet Web client.
Étapes suivantes
Vous allez ensuite modifier le projet Web ou Windows client pour accéder au service Web de rapports sécurisé via
l'authentification NT.
108
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Informations associées
Répertoire des visualiseurs [page 14]
1.3.6.4.2.2.3
Pour modifier le projet client de sorte qu'il
désigne le répertoire virtuel sécurisé des visualiseurs
Procédure
1.
Ouvrez le projet Web ou Windows client dans Visual Studio.
2.
Cliquez avec le bouton droit de la souris sur le dossier Références, puis sélectionnez Ajouter une référence.
3.
Dans la boîte de dialogue Ajouter une référence, dans l'onglet .NET, cliquez sur les deux assemblys suivants
tout en maintenant la touche CTRL enfoncée pour les sélectionner :
○
CrystalDecisions.ReportSource
○
System.Web.Services
4.
Cliquez sur Sélectionner sur le côté droit de la boîte de dialogue.
5.
Vérifiez que les deux assemblys ont bien été ajoutés dans le panneau Composants sélectionnés, puis cliquez
sur OK.
6.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du projet affiché en gras,
sélectionnez Ajouter, puis cliquez sur Ajouter une classe.
7.
Dans le champ Nom, saisissez le nom de classe "NTServerFileRemoteReportSource", puis cliquez sur
Ajouter.
8.
Au-dessus de la signature de classe, ajoutez une déclaration "Imports" [Visual Basic] ou "using" [C#] au
début de la classe pour les trois espaces de noms suivants.
Imports CrystalDecisions.Shared
Imports CrystalDecisions.ReportSource
Imports System.Net
using CrystalDecisions.Shared;
using CrystalDecisions.ReportSource;
using System.Net;
9.
Modifiez la signature de classe NTServerFileRemoteReportSource pour étendre la classe
RemoteReportSource.
Public Class NTServerFileRemoteReportSource : Inherits RemoteReportSource
End Class
public class NTServerFileRemoteReportSource : RemoteReportSource
{
}
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
109
La classe de base RemoteReportSource ne contenant aucun constructeur sans argument, vous devez créer
un constructeur avec arguments pour remplacer celui de la classe de base RemoteReportSource.
10. Si vous codez votre projet en C#, supprimez le constructeur par défaut créé dans cette classe.
11. Créez un constructeur qui contient un paramètre de méthode de ServerFileReport, puis appelez le
constructeur de la classe de base en transmettant le paramètre de rapport ainsi que la valeur booléenne
False.
Public Sub New(ByVal report As ServerFileReport)
MyBase.New(report, False)
End Sub
public NTServerFileRemoteReportSource(ServerFileReport report) : base(report,
false)
{
}
12. Dans le constructeur, affectez la propriété statique DefaultCredentials de la classe CredentialCache à la
propriété Credentials de la propriété m_proxy de la classe de base.
MyBase.m_proxy.Credentials = CredentialCache.DefaultCredentials
base.m_proxy.Credentials = CredentialCache.DefaultCredentials;
13. Dans le menu Fichier, cliquez sur Enregistrer tout.
Résultats
Vous pouvez maintenant modifier la classe code-behind du Web Form ou du Windows Form.
1.3.6.4.2.2.4
Pour modifier la classe code-behind de sorte
qu'elle désigne la source de rapport distant
Procédure
1.
Revenez au Web Form ou Windows Form d'origine.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Dans la méthode ConfigureCrystalReports(), ajoutez une nouvelle ligne entre le paramètre de la
propriété serverFileReport.WebServiceUrl et celui de la propriété ReportSource du contrôle
CrystalReportViewer. Dans cette ligne, déclarez et instanciez la nouvelle classe étendue que vous avez
créée, puis transmettez l'instance ServerFileReport en tant que paramètre de méthode.
Dim myNTServerFileRemoteReportSource As NTServerFileRemoteReportSource = New
NTServerFileRemoteReportSource(myServerFileReport)
110
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
NTServerFileRemoteReportSource ntServerFileRRS = new
NTServerFileRemoteReportSource(serverFileReport);
4.
Modifiez la dernière ligne de code de cette méthode de la manière suivante : remplacez l'instance
ServerFileReport affectée à la propriété ReportSource du contrôle CrystalReportViewer par la nouvelle
instance NTServerFileRemoteReportSource.
myCrystalReportViewer.ReportSource = myNTServerFileRemoteReportSource
crystalReportViewer.ReportSource = ntServerFileRRS;
Résultats
Vous êtes maintenant prêt à tester l'application cliente qui a été modifiée pour transmettre les références de
connexion nécessaires à partir d'une source de rapport distant. Cette application désigne le service de rapports
des fichiers serveur par l'intermédiaire du répertoire virtuel des visualiseurs, qui nécessite désormais une
authentification NT.
1.3.6.4.2.2.5
Pour tester la source de rapport distant à l'aide
des références de connexion qui désignent le répertoire virtuel
sécurisé des visualiseurs
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Dans le menu Déboguer, cliquez sur Démarrer.
L'application cliente se connecte au répertoire virtuel sécurisé des visualiseurs, et, si la nouvelle instance
NTServerFileRemoteReportSource a été configurée avec les références de connexion correctes, le
rapport s'affiche.
3.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.3.7
Considérations de sécurité
Les scénarios suivants doivent être pris en compte lors de la conception d'une application sécurisée
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
111
Stockage des données dans la mémoire cache frontale
Les rapports visualisés dans un navigateur Web peuvent contenir des données sensibles qu'un navigateur Web
est susceptible de mettre en cache. Consultez la documentation Microsoft pour savoir comment désactiver la
mise en cache pour différents navigateurs.
Protection du fichier de rapport
Les fichiers SAP Crystal Reports .rpt doivent contenir des données professionnelles sensibles. Il est recommandé
de protéger l'accès à vos rapports en les gérant avec le serveur de la plateforme SAP BusinessObjects Business
Intelligence, en utilisant la sécurité de fichier ou le cryptage au niveau du système d'exploitation.
Validation d'entrée utilisateur avec champs de paramètre
Les champs de paramètre invitent l'utilisateur à fournir les informations utilisées pour le traitement d'un rapport.
La boîte de dialogue d'invite valide les données mais des étapes supplémentaires permettent de s'assurer que les
valeurs attendues sont fournies :
1.
Utilisez le texte de l'invite pour décrire le type de données attendues.
2.
Indiquez une valeur minimale et une valeur maximale pour limiter la plage de nombres à saisir pour les
données numériques.
3.
Utilisez un masque d'édition pour demander les données dans un format spécifique.
4.
Construisez votre propre boîte de dialogue d'invite. Le SDK de SAP Crystal Reports .NET fournit de
nombreuses API pouvant être utilisées pour construire votre propre boîte de dialogue d'invite. En créant votre
propre boîte de dialogue d'invite, vous contrôlez totalement la manière dont l'utilisateur fournit les champs de
paramètre.
Utilisation du contrôle d'impression ActiveX pour imprimer les rapports depuis
le visualiseur Web Form .NET
Le visualiseur Web Form .NET SAP Crystal Reports vous permet d'imprimer le rapport sous format PDF ou en
utilisant un contrôle d'impression ActiveX. Le format PDF est l'option par défaut recommandée pour l'impression
d'un rapport. Le contrôle d'impression ActiveX est fourni comme solution alternative permettant une impression
en un seul clic. Cette option n'est pas recommandée car elle requiert des droits d'administrateur pour être
installée. Le contrôle d'impression ActiveX est en outre utilisé dans un navigateur Web, le bit d'arrêt n'est donc
pas défini, ce qui est considéré comme étant moins sûr.
112
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Construction d'une application pour visualiser les rapports dans la plateforme
SAP BusinessObjects Business Intelligence
Vous pouvez utiliser SAP Crystal Reports, version développeur pour Microsoft Visual Studio pour créer des
applications destinées à visualiser les rapports stockés dans un système de plateforme SAP BusinessObjects
Business Intelligence. Il est nécessaire de prendre en compte les impacts en termes de sécurité lors de la création
d'applications destinées à visualiser les rapports stockés dans un système de plateforme SAP BusinessObjects
Business Intelligence. Pour en savoir plus, voir le Guide d'administration de la plateforme SAP BusinessObjects
Business Intelligence.
Informations associées
Filtrage de données avec des paramètres ou des formules [page 136]
1.4
Utilisation du SDK
Cette section fournit des instructions détaillées sur l'utilisation de fonctionnalités spécifiques du SDK
SAP Crystal Reports .Net.
1.4.1
Impression d'un rapport
Le SDK SAP Crystal Reports .NET permet de créer des applications Windows ou des sites Web pouvant
s'imprimer sur l'imprimante d'un utilisateur final ou sur une imprimante configurée sur votre serveur Web.
La manière la plus simple d'ajouter des fonctionnalités d'impression à votre application SAP Crystal Reports .NET
est d'utiliser le bouton d'impression du contrôle CrystalReportViewer. Lorsque les utilisateurs cliquent sur le
bouton d'impression de la barre d'outils, la boîte de dialogue d'impression standard du système s'affiche. Les
paramètres d'impression personnalisée peuvent être spécifiés par le biais de cette boîte de dialogue.
Le SDK SAP Crystal Reports .NET permet de configurer des options d'impression et d'appeler une imprimante
depuis le code, plutôt que depuis l'interface utilisateur de SAP Crystal Reports. Utilisez la classe PrintOptions
et la méthode PrintToPrinter du modèle d'objet ReportDocument.
Classes utilisées pour l'impression de rapports
●
CrystalDecisions.CrystalReports.Engine.ReportDocument
Représente un rapport et contient les propriétés et les méthodes permettant de définir, mettre en forme,
charger, exporter et imprimer ce rapport.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
113
●
CrystalDecisions.CrystalReports.Engine.PrintOptions
Indique les propriétés et les méthodes permettant de définir les options d'impression d'un rapport.
●
CrystalDecisions.Windows.Forms.CrystalReportViewer
Représente le contrôle CrystalReportViewer dans un Windows Form. Le contrôle CrystalReportViewer permet
d'imprimer des rapports via l'interface utilisateur.
●
CrystalDecisions.Web.CrystalReportViewer
Fournit des propriétés, des méthodes et des événements permettant de modifier ou d'extraire les
informations sur la manière dont fonctionne et s'affiche le contrôle CrystalReportViewer. Le contrôle
CrystalReportViewer permet d'imprimer des rapports via l'interface utilisateur.
Informations associées
Exportation d'un rapport [page 123]
1.4.1.1
Impression d'un rapport depuis le contrôle
CrystalReportViewer
La manière la plus simple d'ajouter des fonctionnalités d'impression à votre application SAP Crystal Reports .NET
est d'utiliser le bouton d'impression du contrôle CrystalReportViewer. Le bouton d'impression est activé par
défaut sur la barre d'outils CrystalReportViewer.
Il existe deux contrôles CrystalReportViewer dans le SDK SAP Crystal Reports .NET. Pour un site Web, vous
utiliserez la classe CrystalDecisions.Web.CrystalReportViewer. Pour une application Windows, vous
utiliserez la classe CrystalDecisions.Windows.Forms.CrystalReportViewer.
Impression à l'aide de la classe
CrystalDecisions.Windows.Forms.CrystalReportViewer
Lorsque vous cliquez sur le bouton d'impression de la barre d'outils CrystalReportViewer dans une application
Windows, la boîte de dialogue d'impression Windows standard s'affiche. Vous pouvez invoquer par
programmation la boîte de dialogue d'impression via la méthode CrystalReportViewer.PrintReport.
Le bouton d'impression peut être désactivé dans une application Windows en définissant la propriété
CrystalReportViewer.ShowPrintButton sur False.
Impression à l'aide de la classe CrystalDecisions.Web.CrystalReportViewer
Le contrôle CrystalReportViewer pour les sites Web prend en charge deux méthodes d'impression : PDF et
ActiveX.
114
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
L'impression PDF est le paramètre par défaut pour un site Web. Lorsque vous cliquez sur le bouton d'impression
de la barre d'outils CrystalReportViewer dans un site Web, la boîte de dialogue Options d'impression s'affiche.
Saisissez une option d'impression personnalisée et cliquez sur OK. SAP Crystal Reports ouvre une nouvelle
fenêtre avec un PDF de votre rapport. Imprimez le PDF sur votre imprimante locale.
Si l'impression ActiveX est activée, la boîte de dialogue d'impression Windows standard s'affiche lorsque vous
cliquez sur le bouton d'impression. L'impression ActiveX requiert une configuration supplémentaire et
éventuellement l'installation du plug-in ActiveX PrintControl.cab sur l'ordinateur client.
Le bouton d'impression peut être désactivé sur un site Web en définissant la propriété
CrystalReportViewer.HasPrintButton sur False.
Informations associées
Impression d'un rapport par programmation [page 118]
1.4.1.1.1
Suppression du bouton d'impression depuis le
contrôle CrystalReportViewer
Contexte
Vous pourrez continuer à utiliser le SDK pour imprimer un rapport, même si le bouton d'impression n'est pas
visible.
Procédure
1.
Ajoutez un contrôle CrystalReportViewer à votre application.
2.
Définissez la propriété qui contrôle la visibilité du bouton d'impression sur False.
○
Pour une application Windows, définissez la propriété CrystalReportViewer.ShowPrintButton sur
False.
○
Pour un site Web, définissez la propriété CrystalReportViewer.HasPrintButton sur False.
Résultats
Lorsque vous exécuterez votre application, le bouton d'impression ne devrait plus apparaître sur le contrôle
CrystalReportViewer.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
115
Exemple
Désactivation du bouton Imprimer dans une application Windows
Private Sub ConfigureCrystalReports()
CrystalReportViewer1.ShowPrintButton = False
End Sub
private void ConfigureCrystalReports()
{
InitializeComponent();
crystalReportViewer1.ShowPrintButton = false;
}
Informations associées
Impression d'un rapport [page 113]
1.4.1.1.2
Impression d'un rapport avec la méthode
CrystalReportViewer.PrintReport
Prérequis
Assurez-vous qu'une imprimante a été configurée sur l'ordinateur client avant d'essayer d'imprimer.
Contexte
Vous pouvez invoquer par programmation la boîte de dialogue d'impression via la méthode
CrystalReportViewer.PrintReport dans une application Windows. Utilisez cette méthode pour imprimer
lorsque la barre d'outils CrystalReportViewer est masquée ou dans une application qui utilise des boutons de
barre d'outils personnalisés.
Procédure
1.
Ajoutez un contrôle CrystalReportViewer à votre Windows Form.
2.
Configurez une source de rapport valide et liez-la au contrôle CrystalReportViewer.
3.
Appelez la méthode PrintReport pour invoquer la boîte de dialogue d'impression par défaut.
116
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Exemple
Private Sub PrintReport()
CrystalReportViewer.PrintReport()
End Sub
private void PrintReport()
{
crystalReportViewer.PrintReport();
}
1.4.1.1.3
Web
Activation de l'impression ActiveX dans un site
Contexte
Si l'impression ActiveX est activée, la boîte de dialogue d'impression standard du système s'affiche lorsque
l'utilisateur clique sur le bouton d'impression. L'impression ActiveX requiert une configuration supplémentaire et
éventuellement l'installation du plug-in ActiveX PrintControl.cab sur l'ordinateur client.
Procédure
1.
Ajoutez un contrôle CrystalReportViewer à votre application.
2.
Définissez la propriété de mode d'impression du contrôle CrystalReportViewer sur ActiveX.
CrystalReportViewer1.PrintMode = PrintMode.ActiveX
CrystalReportViewer1.PrintMode = PrintMode.ActiveX;
3.
Dans votre fichier Web.Config, ajoutez une référence au contrôle ActiveX PrintControl.cab.
<configSections>
<section group name="businessObjects">
<sectionGroup name="crystalReports">
<section name="printControl"
type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</sectionGroup>
</configSections>
<businessObjects>
<crystalReports>
<printControl>
<add key="url" value="http://localhost/PrintControl.cab" />
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
117
</printControl>
</crystalReports>
</businessObjects>
Remplacez "localhost" par l'adresse de votre serveur Web.
L'élément printControl vous permet d'imprimer le rapport directement sur votre imprimante locale. Par
défaut, ce contrôle n'est pas installé sur votre ordinateur local et doit être téléchargé séparément. Ce
paramètre rend le fichier .cab visible par votre site Web SAP Crystal Reports .NET.
Résultats
Le contrôle CrystalReportViewer doit à présent utiliser la boîte de dialogue d'impression Windows au lieu de
l'impression PDF. La première fois qu'un utilisateur essaie d'imprimer depuis le site Web SAP Crystal Reports, il se
peut qu'il soit invité à installer le plug-in ActiveX PrintControl.cab.
Informations associées
Configuration du fichier Web.Config [page 20]
1.4.1.2
Impression d'un rapport par programmation
Vous pouvez configurer des options d'impression et appeler une imprimante par programmation. Pour ce faire,
utilisez la classe PrintOptions et la méthode PrintToPrinter du modèle d'objet ReportDocument.
Si le bouton Imprimer de la barre d'outils du contrôle CrystalReportViewer répond à vos besoins d'impression, il
est inutile d'écrire un code pour configurer des options d'impression supplémentaires.
Toutefois, pour des scénarios particuliers, vous pouvez avoir recours à une solution basée sur du code pour
l'impression des rapports :
●
Vous pouvez contrôler le moment, l'emplacement et la configuration de votre impression. Désactivez le
bouton Imprimerde la barre d'outils du contrôle CrystalReportViewer et gérez toutes les impressions via le
code.
●
Vous pouvez imprimer un rapport en arrière-plan, sans l'afficher. Les paramètres d'impression sont
accessibles via la classe ReportDocument, qui peut être instanciée et configurée sans jamais afficher le
rapport avec un contrôle CrystalReportViewer.
●
Vous pouvez centraliser toutes les impressions sur le serveur Web pour un client Web. Utilisez la méthode
PrintToPrinter() pour envoyer des tâches d'impression à une imprimante connectée au serveur Web
plutôt qu'à une imprimante locale connectée au client Web.
Remarque
L'impression par programmation à l'aide du modèle d'objet ReportDocument est moins complète que la
structure de planification des rapports fournie avec SAP Crystal Reports Server ou la plateforme SAP
BusinessObjects Business Intelligence.
118
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Impression par programmation depuis une application Web
Si vous utilisez la méthode ReportDocument.PrintToPrinter dans une application Web, le rapport est
imprimé depuis le serveur Web et non depuis l'ordinateur client. Toute l'impression côté client utilise le contrôle
CrystalReportViewer.
Informations associées
Impression d'un rapport depuis le contrôle CrystalReportViewer [page 114]
1.4.1.2.1
Définition des options d'impression personnalisée
avec le modèle d'objet ReportDocument
La classe PrintOptions permet de spécifier des paramètres supplémentaires avant l'impression d'un rapport
par programmation. La classe PrintOptions permet d'effectuer les opérations suivantes :
●
Changer la source de papier actuelle.
●
Déterminer la hauteur ou la largeur de la sortie imprimée.
●
Régler les marges de page.
●
Forcer l'impression duplex ou simplex.
●
Changer l'imprimante par défaut.
Pour modifier les options d'impression d'un rapport, vous devez extraire un objet PrintOptions via la propriété
PrintOptions de la classe ReportDocument.
Copie des options d'impression
Les options d'impression peuvent être copiées depuis ou vers les paramètres par défaut de votre système local à
l'aide des méthodes PrintOptions.CopyFrom ou PrintOptions.CopyTo.
Pour en savoir plus sur la classe PrintOptions, voir la Référence de l'API .NET SAP Crystal Reports.
Exemple
Forcer l'impression duplex
Cet exemple définit le mode d'impression par défaut sur Duplex.
Private Sub enableDuplex(ByVal rd As ReportDocument)
rd.PrintOptions.PrinterDuplex = PrinterDuplex.Vertical
End Sub
private void enableDuplex(ReportDocument rd)
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
119
{
}
rd.PrintOptions.PrinterDuplex = PrinterDuplex.Vertical;
1.4.1.2.2
défaut
Impression d'un rapport sur l'imprimante par
Contexte
La méthode ReportDocument.PrintToPrinter envoie un rapport à l'imprimante par défaut spécifiée dans le
fichier du rapport. Pour envoyer le rapport sur l'imprimante par défaut spécifiée sur l'ordinateur client, vous devez
définir la propriété PrintOptions.PrinterName avant d'imprimer le rapport.
Procédure
1.
Créez une instance de la classe PrintDocument.
L'imprimante par défaut de l'ordinateur client est spécifiée dans la propriété
PrinterSettings.PrinterName de toute nouvelle classe PrintDocument.
Dim localPrinter As System.Drawing.Printing.PrintDocument = New PrintDocument()
System.Drawing.Printing.PrintDocument localPrinter = new PrintDocument();
2.
Définissez la propriété PrinterName de l'objet ReportDocument sur la valeur spécifiée dans
PrinterSettings.PrinterName.
rd.PrintOptions.PrinterName = localPrinter.PrinterSettings.PrinterName
rd.PrintOptions.PrinterName = localPrinter.PrinterSettings.PrinterName;
3.
Appelez la méthode ReportDocument.PrintToPrinter pour imprimer le rapport.
rd.PrintToPrinter(1, False, 0, 0)
rd.PrintToPrinter(1, false, 0, 0);
Cette méthode PrintToPrinter utilise quatre paramètres : le nombre de copies à imprimer, si les pages
doivent être assemblées ou non, la page de début et la page de fin.
120
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Conseil
Pour imprimer toutes les pages, définissez les paramètres de page de début et de page de fin sur zéro.
Exemple
Private Sub printReport(ByVal rd As ReportDocument)
Dim localPrinter As System.Drawing.Printing.PrintDocument = New
PrintDocument()
rd.PrintOptions.PrinterName = localPrinter.PrinterSettings.PrinterName
rd.PrintToPrinter(1, False, 0, 0)
End Sub
private void printReport(ReportDocument rd) {
System.Drawing.Printing.PrintDocument localPrinter = new PrintDocument();
rd.PrintOptions.PrinterName = localPrinter.PrinterSettings.PrinterName;
rd.PrintToPrinter(1, false, 0, 0);
}
1.4.1.2.3
Impression d'un rapport sur un fichier
Contexte
Vous pouvez imprimer un rapport sur un fichier de votre système local en modifiant les propriétés
PrinterSettings par défaut et en appelant la méthode ReportDocument.PrintToPrinter. Pour enregistrer
un rapport sur un disque en vue de l'afficher ultérieurement ou pour enregistrer un rapport dans un format
différent, exportez-le au lieu de l'imprimer sur un fichier.
Procédure
1.
Créez une instance des classes PrinterSettings et PageSettings.
Dim printerSettings As New PrinterSettings()
Dim pageSettings As New PageSettings()
PrinterSettings printerSettings = new PrinterSettings();
PageSettings pageSettings = new PageSettings();
2.
Copiez les paramètres de l'objet ReportDocument vers les objets PrinterSettings et PageSettings.
rd.PrintOptions.CopyTo(printerSettings, pageSettings)
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
121
rd.PrintOptions.CopyTo(printerSettings, pageSettings);
3.
Définissez la propriété PrintToFile de l'objet PrinterSettings sur la valeur True.
printerSettings.PrintToFile = True
printerSettings.PrintToFile = true;
4.
Définissez l'emplacement du fichier de sortie.
printerSettings.PrintFileName = "c:\outputFile.prn"
printerSettings.PrintFileName = "c:\\outputFile.prn";
Remarque
Lors d'une impression sur un fichier, le format du fichier de sortie est déterminé par l'imprimante. Il se peut
que votre imprimante crée des fichiers XPS, PS ou d'un autre format. Consultez le manuel du fabricant
pour plus d'informations.
5.
Appelez la méthode ReportDocument.PrintToPrinter pour imprimer le rapport.
Cette méthode PrintToPrinter utilise trois paramètres : les options d'impression, les paramètres de page
et une valeur booléenne qui indique si le rapport doit être remis en forme pour correspondre aux paramètres
de page.
rd.PrintToPrinter(printerSettings, pageSettings, False)
rd.PrintToPrinter(printerSettings, pageSettings, false);
Exemple
Private Sub printToFile(ByVal rd As ReportDocument)
Dim printerSettings As New PrinterSettings()
Dim pageSettings As New PageSettings()
rd.PrintOptions.CopyTo(printerSettings, pageSettings)
printerSettings.PrintToFile = True
printerSettings.PrintFileName = "c:\outputFile.prn"
rd.PrintToPrinter(printerSettings, pageSettings, False)
End Sub
private void printToFile(ReportDocument rd)
{
PrinterSettings printerSettings = new PrinterSettings();
PageSettings pageSettings = new PageSettings();
rd.PrintOptions.CopyTo(printerSettings, pageSettings);
printerSettings.PrintToFile = true;
printerSettings.PrintFileName = "c:\\outputFile.prn";
122
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
}
rd.PrintToPrinter(printerSettings, pageSettings, false);
Informations associées
Exportation d'un rapport [page 123]
1.4.1.3
Suppression du pilote de l'imprimante par défaut de
votre rapport
Procédure
1.
Dans l'Explorateur de solutions, cliquez deux fois sur le rapport.
2.
Cliquez avec le bouton droit de la souris sur une zone quelconque du rapport et sélectionnez
Concepteur
Configuration de l'imprimante .
3.
Dans la boîte de dialogue Configuration de l'impression, activez la case à cocher Aucune imprimante, puis
cliquez sur OK.
4.
Cliquez sur
Fichier
Tout enregistrer .
Informations associées
Sélection de l'option Aucune imprimante sous Configuration de l'impression [page 74]
1.4.2
Exportation d'un rapport
SAP Crystal Reports permet d'exporter des rapports vers différents formats. Les formats disponibles dépendent
de la version de SAP Crystal Reports que vous avez installée et de la méthode utilisée pour exporter le rapport.
Un rapport peut être exporté vers un disque, une fenêtre de navigateur ou vers le flux d'entrée/de sortie sous
forme de séquence d'octets.
Classes utilisées pour l'exportation de rapports
●
CrystalDecisions.CrystalReports.Engine.ReportDocument
Représente un rapport et contient les propriétés et les méthodes permettant de définir, mettre en forme,
charger, exporter et imprimer ce rapport.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
123
●
CrystalDecisions.Shared
Contient plusieurs classes utilisées pour spécifier les options d'exportation de différents formats de sortie.
●
CrystalDecisions.Shared.ExportOptions
Indique les propriétés permettant d'extraire et de définir des options pour l'exportation de votre rapport.
Informations associées
Impression d'un rapport [page 113]
Boîte de dialogue Exportation [page 908]
1.4.2.1
Formats d'exportation disponibles
Les formats d'exportation pris en charge par SAP Crystal Reports peuvent être classés en deux groupes : les
formats basés sur les pages et les formats basés sur les enregistrements. Les formats d'exportation sont
davantage axés sur la charte graphique et produisent donc généralement un résultat proche de la mise en page et
de la mise en forme de l'original. Les formats d'exportation d'enregistrements sont axés sur la représentation
exacte des données plutôt que sur la mise en page et la mise en forme.
Mise en forme
Description
SAP Crystal Reports (RPT)
L'exportation vers le format SAP Crystal Reports s'apparente
à l'utilisation de la fonctionnalité Enregistrer sous avec
l'option Enregistrer les données avec le rapport sélectionnée.
Ce format exporte (enregistre) le rapport avec les données
en cours sans modifier le rapport d'origine. Si une source de
rapport est un fichier SAP Crystal Reports Read-Only
(RPTR), vous ne pourrez pas l'exporter vers
SAP Crystal Reports (RPT).
SAP Crystal Reports Read-Only (RPTR)
Ce format exporte (enregistre) le rapport avec les données
en cours sans modifier le rapport d'origine. Les rapports
RPTR sont des rapports Crystal qui peuvent être visualisés
avec des applications de visualiseur de rapport, mais qui ne
peuvent pas être modifiés avec le SDK ni ouverts par des
applications de concepteur de rapports. La définition d'un
rapport RPTR ne peut pas être modifiée, ce qui signifie qu'il
n'est pas possible d'utiliser ce SDK pour définir
l'emplacement de la source de données d'un RPTR via le
contrôleur de base de données. Il est toutefois possible
d'actualiser les données d'un rapport RPTR lors de
l'exécution en actualisant le rapport dans un visualiseur.
HTML 4.0
Exporte le rapport au format HTML 4.0. Ce format conserve
la mise en page et la mise en forme du rapport en utilisant le
DHTML.
Microsoft Excel (97-2003)
Ce format convertit le contenu de votre rapport en cellules
Excel page par page. Le contenu de plusieurs pages est
exporté vers la même feuille de calcul Excel. Si une feuille de
calcul est pleine et qu'il reste des données à exporter, le
124
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Mise en forme
Description
programme d'exportation crée plusieurs feuilles de calcul
pour intégrer ces données. Si un objet de rapport couvre
plusieurs cellules, le programme d'exportation fusionne les
cellules pour le représenter. Microsoft Excel est limité à
256 colonnes par feuille de calcul ; par conséquent, tout objet
de rapport (ou partie de cet objet) ajouté à des cellules audelà des 256 colonnes ne peut être exporté. Ce format
d'exportation conserve la plupart de la mise en forme, mais
n'exporte pas les objets ligne et objets cadre du rapport.
Microsoft Excel (97-2003) Données uniquement
Comme son nom l'indique, Microsoft Excel - Données
uniquement est un format d'exportation d'enregistrements
axé sur la représentation exacte des données. Toutefois, ce
format exporte également la plupart de la mise en forme.
Contrairement au format Microsoft Excel, Microsoft Excel Données uniquement ne fusionne pas les cellules ; chaque
objet est ajouté à une cellule unique. Ce format exporte aussi
certains types de résumés de rapports Crystal sous forme de
fonctions Excel. Les résumés pris en charge sont SUM,
AVERAGE, COUNT, MIN et MAX.
Microsoft Excel 2007 (XLSX) Données uniquement
Le format XLSX est doté des mêmes propriétés que le format
Microsoft Excel (97-2003) Données uniquement ; toutefois,
le format XLSX prend en charge jusqu'à 16 385 colonnes et
1 048 576 lignes dans un seul classeur.
Microsoft Word (97-2003)
Ce format génère un fichier RTF (Rich Text Format) qui
contient du texte et des objets de dessin pour représenter les
objets de rapport. Ce format d'exportation conserve la
plupart de la mise en forme. Toutefois, les objets texte ne
peuvent pas être placés à l'extérieur du bord gauche de la
page. Les objets texte du rapport placés à l'extérieur du bord
gauche de la zone imprimable sont donc déplacés vers la
droite. (Cela est particulièrement visible dans les rapports
comportant des pages larges.)
Microsoft Word (97-2003) - Modifiable
Le format Microsoft Word - Modifiable diffère du format
Microsoft Word : il s'agit d'un format d'exportation, mais la
mise en page et la mise en forme ne sont pas intégralement
conservées dans le format de sortie. Ce format convertit le
contenu de tous les objets du rapport en lignes de texte.
Contrairement au format Microsoft Word, ce format n'utilise
pas de cadres de texte. La mise en forme du texte est
conservée, mais les attributs tels que couleur d'arrière-plan,
modèle de remplissage, etc. peuvent ne pas être conservés.
Toutes les images du rapport sont alignées sur le contenu
textuel. Par conséquent, les images sont automatiquement
déplacées afin d'intégrer le texte lorsque le document est
édité dans Microsoft Word. Ce format n'exporte pas les
objets ligne et objets cadre du rapport. De même, les champs
spéciaux Numéro de page et Page N sur M ne fonctionnent
pas lorsqu'ils sont exportés dans ce format.
ODBC
ODBC est un format d'échange de données basé sur les
enregistrements. Ce format permet d'exporter les données
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
125
Mise en forme
Description
de rapport vers n'importe quelle base de données compatible
ODBC.
PDF
Les documents exportés sont destinés à l'impression et à la
redistribution. Le format PDF exporte à la fois la mise en page
et la mise en forme de manière à correspondre à l'apparence
du rapport dans l'onglet Aperçu. Le format PDF intègre les
polices True Type qui apparaissent dans le document. (Les
polices autres que True Type ne sont pas prises en charge.)
Ce format d'exportation ne prend pas en charge la
technologie Font-Linking de Microsoft, utilisée pour des
ensembles de caractères étendus comme le HKCS chinois.
Par conséquent, les polices utilisées dans le rapport doivent
contenir tous les glyphes requis. Les types d'URI suivants
sont pris en charge pour les hyperliens : http, https et mailto.
Style d'enregistrement - Colonnes avec espaces
Exporte les données du rapport sous forme de texte. Ce
format insère des espaces entre les colonnes.
Style d'enregistrement - Colonnes sans espaces
Exporte les données du rapport sous forme de texte. Ce
format n'insère pas d'espaces entre les colonnes.
Définition de rapport
Le format de définition de rapport exporte le rapport dans un
fichier texte qui contient une brève description de la vue de
conception du rapport. Ce format est uniquement géré dans
le cadre d'une compatibilité avec SAP Crystal Reports 5.0.
Rich Text Format (RTF)
Génère un fichier RTF contenant des objets de type texte et
dessin.
Valeurs séparées par des virgules (CSV)
Le format Valeurs délimitées est un format d'échange de
données basé sur les enregistrements. Il exporte le contenu
des objets du rapport sous forme d'ensemble de valeurs
séparées par des séparateurs que vous indiquez. (Lorsqu'une
virgule (,) est utilisée pour séparer des champs, on parle de
Valeurs séparées par des virgules (CSV). Ce format
d'exportation est largement utilisé par les utilisateurs de
Microsoft Excel.)
Texte séparé par des tabulations (TTX)
Conserve la mise en page du rapport à quelques différences
près : les objets texte sur plusieurs lignes sont exportés sur
une seule ligne, toutes les valeurs de type chaîne comportent
des guillemets ("") et les valeurs elles-mêmes sont séparées
par des tabulations. Les fichiers TTX peuvent s'ouvrir dans
Microsoft Excel.
Texte
Génère du texte brut (sans conserver la mise en forme).
XML
Utilisé essentiellement pour l'échange de données. Ce format
génère du code XML à l'aide du schéma XML de
SAP Crystal Reports.
Sélection d'un format d'exportation
Les formats disponibles dépendent de la version de SAP Crystal Reports que vous avez installée et de la méthode
utilisée pour exporter le rapport. Le contrôle CrystalReportViewer propose par défaut la plupart des formats
126
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
d'exportation. Certains formats sont uniquement disponibles avec le SDK de SAP Crystal Reports .NET ou
l'application autonome SAP Crystal Reports Designer.
Mise en forme
Contrôle
CrystalReportViewer
SDK de
SAP Crystal Reports .NE
T
SAP Crystal Reports Desi
gner
SAP Crystal Reports (RPT)
x
x
x
SAP Crystal Reports ReadOnly (RPTR)
x
x
x
x
x
HTML 4.0
Microsoft Excel (97-2003)
x
x
x
Microsoft Excel (97-2003)
Données uniquement
x
x
x
Microsoft Excel 2007 (XLSX)
Données uniquement
x
x
x
Microsoft Word (97-2003)
x
x
x
Microsoft Word (97-2003) Modifiable
x
x
x
ODBC
PDF
x
x
x
x
Style d'enregistrement Colonnes avec espaces
x
Style d'enregistrement Colonnes sans espaces
x
Définition de rapport
x
Rich Text Format (RTF)
x
x
Valeurs séparées par des
virgules (CSV)
x
x
Texte séparé par des
tabulations (TTX)
x
x
Texte
x
x
x
x
XML
x
x
1.4.2.2
Exportation d'un rapport depuis le contrôle
CrystalReportViewer
La manière la plus simple d'ajouter des fonctionnalités d'exportation à votre application SAP Crystal Reports .NET
est d'utiliser le bouton d'exportation du contrôle CrystalReportViewer. Le bouton Exporter est activé par défaut
sur la barre d'outils CrystalReportViewer.
L'utilisateur peut cliquer sur le bouton Exporter pour faire apparaître la boîte de dialogue d'exportation par défaut.
Les options d'exportation disponibles pour votre utilisateur sont déterminées par les pilotes inclus dans votre
déploiement.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
127
Désactivation de la fonction d'exportation de rapport depuis le visualiseur
L'exportation est activée par défaut dans toutes les applications SAP Crystal Reports. Vous pouvez limiter
l'exportation de deux façons :
●
Supprimer le bouton Exporter du visualiseur.
Vous pourrez continuer à utiliser le SDK pour exporter un rapport, même si le bouton d'exportation n'est pas
visible.
●
La désactivation de certains pilotes d'exportation dans SAP Crystal Reports fusionne les modules.
Lorsque vous déployez une application SAP Crystal Reports vers un ordinateur cible, vous devez inclure
l'exécution de SAP Crystal Reports sous la forme d'un MSI ou d'un module de fusion. Si vous choisissez
d'utiliser des modules de fusion pour votre déploiement, vous pouvez spécifier les pilotes d'exportation à
inclure ou exclure.
Informations associées
Boîte de dialogue Exportation [page 908]
1.4.2.2.1
Suppression du bouton d'exportation depuis le
contrôle CrystalReportViewer
Contexte
Vous pourrez continuer à utiliser le SDK pour exporter un rapport, même si le bouton d'exportation n'est pas
visible.
Procédure
1.
Ajoutez un contrôle CrystalReportViewer à votre application.
2.
Définissez la propriété qui contrôle la visibilité du bouton d'exportation sur False.
○
Pour une application Windows, définissez la propriété CrystalReportViewer.ShowExportButton sur
False.
○
Pour un site Web, définissez la propriété CrystalReportViewer.HasExportButton sur False.
Résultats
Lorsque vous exécuterez votre application, le bouton d'exportation ne devrait plus apparaître sur le contrôle
CrystalReportViewer.
128
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Exemple
Désactivation du bouton Exporter dans une application Web
Private Sub ConfigureCrystalReports()
CrystalReportViewer1.HasExportButton = False
End Sub
private void ConfigureCrystalReports()
{
InitializeComponent();
crystalReportViewer1.HasExportButton = false;
}
1.4.2.3
Exportation d'un rapport par programmation
Le SDK SAP Crystal Reports .NET permet d'exporter par programmation un rapport vers un plus grand nombre
de formats et de destinations que le contrôle CrystalReportViewer.
Si le bouton Exporter de la barre d'outils du contrôle CrystalReportViewer répond à vos besoins d'exportation, il
est inutile d'écrire un code pour configurer des options d'exportation supplémentaires.
Toutefois, pour des scénarios particuliers, vous pouvez avoir recours à une solution basée sur du code pour
l'impression des rapports :
●
Vous pouvez contrôler le moment, l'emplacement et la configuration de votre exportation. Désactivez le
bouton Exporter de la barre d'outils du contrôle CrystalReportViewer et gérez toutes les exportations via le
code.
●
Vous pouvez exporter un rapport en arrière-plan, sans l'afficher.
●
Vous pouvez exporter un rapport vers une réponse HTTP ou vers un flux. Le contrôle CrystalReportViewer
prend uniquement en charge l'exportation d'un rapport vers un disque.
Il existe quatre méthodes pour exporter un rapport. Vous pouvez accéder à toutes ces méthodes via la classe
ReportDocument.
●
ReportDocument.Export
●
ReportDocument.ExportToHTTPResponse
●
ReportDocument.ExportToDisk
●
ReportDocument.ExportToStream
La méthode la plus courante, ReportDocument.Export, permet d'exporter vos rapports vers n'importe quel
format et destination pris en charge par le SDK SAP Crystal Reports .NET. Pour utiliser la méthode
ReportDocument.Export, vous devez d'abord définir plusieurs paramètres via la classe ExportOptions.
Chacune des trois autres méthodes offre un moyen pratique d'exporter un rapport d'une manière spécifique.
L'utilisation des autres méthodes génère en général moins de code, mais offre moins de contrôle sur le fichier qui
en résulte.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
129
1.4.2.3.1
Définition des options d'exportation personnalisées
Pour utiliser la méthode ReportDocument.Export, vous devez d'abord définir plusieurs paramètres via la classe
ExportOptions. Ces paramètres contrôlent l'emplacement de l'exportation, le format d'exportation et plusieurs
options de style spécifiques au format de sortie.
Quatre options doivent être définies pour exporter un rapport à l'aide de la méthode ReportDocument.Export.
Option d'exportation
Description
ExportDestinationType
Détermine comment exporter le rapport.
ExportDestinationOptions
Détermine l'emplacement et le nom du fichier qui en résulte.
ExportFormatOptions
Détermine les options de mise en forme spécifiques au
format de sortie.
ExportFormatType
Détermine le type de fichier de destination.
Définition de la propriété ExportDestinationType
La propriété ExportOptions.ExportDestinationType détermine comment exporter le rapport. Les valeurs
disponibles sont stockées dans l'énumération ExportDestinationType.
ExportDestinationType.DiskFile est la valeur la plus courante. D'autres valeurs sont prises en charge,
telles que ExchangeFolder, MicrosoftMail et NoDestination.
Définition de la propriété ExportDestinationOptions
La propriété ExportOptions.ExportDestinationOptions définit les options spécifiques à l'emplacement
cible du fichier de sortie. La valeur de la propriété ExportDestinationOptions dépend de la valeur de la
propriété ExportOptions.ExportDestinationType.
ExportDestinationType
ExportDestinationOptions
Définit les valeurs suivantes :
DiskFile
Un objet
●
Définit le nom et l'emplacement du
fichier de sortie.
●
Le profil et le mot de passe
utilisateur du serveur Exchange.
●
Le chemin d'accès au dossier
Exchange.
●
Le nom et le mot de passe
utilisateur du compte de courrier
électronique.
●
L'objet et le corps du message
électronique.
DiskFileDestinationOptions
ExchangeFolder
Un objet
ExchangeFolderDestinationOp
tions
MicrosoftMail
Un objet
MicrosoftMailDestinationOpt
ions
130
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
ExportDestinationType
ExportDestinationOptions
Définit les valeurs suivantes :
●
Les destinataires du message
électronique.
Définition de la propriété ExportFormatType
Cette propriété détermine le format du fichier de sortie. Les valeurs disponibles sont stockées dans l'énumération
ExportFormatType. Les options disponibles dépendent de la version de SAP Crystal Reports utilisée.
SAP Crystal Reports, version développeur pour Microsoft Visual Studio prend en charge les options d'exportation
suivantes :
●
SAP Crystal Reports (RPT)
●
SAP Crystal Reports Read-Only (RPTR)
●
PDF
●
Rich Text Format (RTF)
●
Microsoft Word (97-2003)
●
Microsoft Excel (97-2003)
●
Microsoft Excel (97-2003) Données uniquement
●
Microsoft Excel (2007) Données uniquement
●
HTML 4.0
●
Valeurs séparées par des virgules (CSV)
●
Microsoft Word modifiable (RTF)
●
Texte séparé par des tabulations (TTX)
●
Texte
Définition de la propriété ExportFormatOptions
La propriété ExportOptions.ExportFormatOptions définit les options spécifiques au format du fichier de
sortie. La valeur de la propriété ExportFormatOption dépend de la valeur de la propriété
ExportOptions.ExportFormatType.
ExportFormatOptions
Format d'exportation
Définit les valeurs suivantes :
Un objet ExcelFormatOptions
●
Microsoft Excel (97-2003)
●
●
Microsoft Excel (97-2003) Données
●
uniquement
Un objet HTMLFormatOptions
●
HTML 4.0
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
La première et la dernière page du
rapport à exporter.
La largeur de colonne par défaut.
●
S'il est nécessaire d'inclure des entêtes de colonne.
●
La première et la dernière page du
rapport à exporter.
●
Le nom de la page HTML par
défaut.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
131
ExportFormatOptions
Un objet
PdfRtfWordFormatOptions
Format d'exportation
●
PDF
●
Rich Text Format (RTF)
●
Microsoft Word (97-2003)
●
Microsoft Word modifiable (RTF)
Définit les valeurs suivantes :
●
Le nom du dossier contenant les
fichiers de prise en charge requis
pour la sortie au format HTML,
comme les images utilisées dans le
rapport.
●
La première et la dernière page du
rapport à exporter.
Exemple
Définition des options d'exportation pour Microsoft Excel - Données uniquement
Cet exemple définit les options d'exportation requises pour exporter un rapport au format “Microsoft Excel Données uniquement”.
La méthode instancie une nouvelle classe DiskFileDestinationOptions et affecte à la propriété
DiskFileDestinationOptions.DiskFileName un chemin d'accès au fichier. Pour exporter le fichier vers le
disque, la propriété ExportOptions.ExportDestinationType doit être définie sur
ExportDestinationType.DiskFile et ExportOptions.DestinationOptions doit être définie sur un
objet DiskFileDestinationOptions valide.
Si aucune mise en forme spécifique n'est requise, la propriété ExportOptions.ExportFormatOptions peut
être définie sur null.
Private Function ConfigureExportToExcelRecord(ByVal filepath As String) As
ExportOptions
Dim exOptions As New ExportOptions()
Dim dfDestinationOptions As New DiskFileDestinationOptions()
dfDestinationOptions.DiskFileName = filepath
exOptions.ExportDestinationType = ExportDestinationType.DiskFile
exOptions.DestinationOptions = dfDestinationOptions
exOptions.ExportFormatType = ExportFormatType.ExcelRecord
exOptions.ExportFormatOptions = Nothing
Return exOptions
End Function
private ExportOptions ConfigureExportToExcelRecord(String filepath)
{
ExportOptions exOptions = new ExportOptions();
DiskFileDestinationOptions dfDestinationOptions = new
DiskFileDestinationOptions();
dfDestinationOptions.DiskFileName = filepath;
}
132
exOptions.ExportDestinationType = ExportDestinationType.DiskFile;
exOptions.DestinationOptions = dfDestinationOptions;
exOptions.ExportFormatType = ExportFormatType.ExcelRecord;
exOptions.ExportFormatOptions = null;
return exOptions;
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Exemple
Définition des options d'exportation pour le format de sortie HTML 4.0
Cet exemple définit les options d'exportation requises pour exporter un rapport au format “HTML 4.0”.
Il n'est pas nécessaire d'instancier de classe DiskFileDestinationOptions pour les exportations au format
HTML. Ces options sont définies par le biais de la classe HTMLFormatOptions.
Cette méthode instancie une nouvelle classe HTMLFormatOptions et affecte le nom de fichier par défaut à la
propriété HTMLFormatOptions.HTMLFileName et le chemin d'exportation par défaut à la propriété
HTMLFormatOptions.HTMLBaseFolderName. Le dossier de base contient chacune des pages HTML
exportées par le rapport ainsi que toutes les images requises.
Définissez la propriété ExportOptions.ExportFormatOptions sur un objet HTMLFormatOptions valide.
Private Function ConfigureExportToHtml40(ByVal exportpath As String) As
ExportOptions
Dim exOptions As New ExportOptions()
Dim html40FormatOptions As New HTMLFormatOptions()
html40FormatOptions.HTMLBaseFolderName = exportpath
html40FormatOptions.HTMLFileName = "default.html"
html40FormatOptions.HTMLEnableSeparatedPages = True
html40FormatOptions.HTMLHasPageNavigator = True
exOptions.ExportFormatType = ExportFormatType.HTML40
exOptions.ExportFormatOptions = html40FormatOptions
Return exOptions
End Function
private ExportOptions ConfigureExportToHtml40(String exportpath)
{
ExportOptions exOptions = new ExportOptions();
HTMLFormatOptions html40FormatOptions = new HTMLFormatOptions();
html40FormatOptions.HTMLBaseFolderName = exportpath;
html40FormatOptions.HTMLFileName = "default.html";
html40FormatOptions.HTMLEnableSeparatedPages = true;
html40FormatOptions.HTMLHasPageNavigator = true;
exOptions.ExportFormatType = ExportFormatType.HTML40;
exOptions.ExportFormatOptions = html40FormatOptions;
}
return exOptions;
Informations associées
Formats d'exportation disponibles [page 124]
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
133
1.4.2.3.2
Exportation vers un disque avec des options
d'exportation personnalisée
Contexte
Cet exemple montre comment exporter un rapport Crystal vers le format Microsoft Word. Le SDK de
SAP Crystal Reports 2008 permet d'exporter des rapports vers un format spécifique, tel qu'Excel, PDF ou RTF.
Vous pouvez exporter des rapports vers différents formats en utilisant le modèle d'objet ReportDocument.
Cet exemple définit la propriété ReportDocument.ExportOptions et utilise la méthode
ReportDocument.Export pour exporter le rapport.
Procédure
1.
Créez une méthode qui utilise un objet ReportDocument et un chemin de fichier en tant que paramètres.
2.
Créez une instance de la classe DiskFileDestinationOptions et définissez la valeur de la propriété
DiskFileDestinationOptions.DiskFileName sur le chemin du fichier de sortie.
Dim dfDestinationOptions As New DiskFileDestinationOptions()
dfDestinationOptions.DiskFileName = filepath
DiskFileDestinationOptions dfDestinationOptions = new
DiskFileDestinationOptions();
dfDestinationOptions.DiskFileName = filepath;
3.
Créez une instance de la classe ExportOptions et définissez les propriétés requises.
a) Définissez la propriété ExportDestinationType sur ExportDestinationType.DiskFile.
b) Définissez la propriété ExportDestinationOptions sur l'objet DiskFileDestinationOptions.
c) Définissez la propriété ExportFormatType sur ExportFormatType.WordForWindows.
d) Si aucune mise en forme spécifique n'est requise, la propriété ExportOptions.ExportFormatOptions
peut être définie sur null.
Dim wordExportOptions As New ExportOptions()
wordExportOptions.ExportDestinationType = ExportDestinationType.DiskFile
wordExportOptions.ExportDestinationOptions = dfDestinationOptions
wordExportOptions.ExportFormatType = ExportFormatType.WordForWindows
wordExportOptions.ExportFormatOptions = Nothing
ExportOptions wordExportOptions = new ExportOptions();
wordExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
wordExportOptions.ExportDestinationOptions = dfDestinationOptions;
wordExportOptions.ExportFormatType = ExportFormatType.WordForWindows;
wordExportOptions.ExportFormatOptions = null;
4.
134
Appelez la méthode Export et transmettez l'objet ExportOptions en tant que paramètre.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Exemple
Private Sub ExportToWord_RD(ByVal rd As ReportDocument, ByVal filepath As String)
Dim dfDestinationOptions As New DiskFileDestinationOptions()
dfDestinationOptions.DiskFileName = filepath
Dim wordExportOptions As New ExportOptions()
wordExportOptions.ExportDestinationType = ExportDestinationType.DiskFile
wordExportOptions.ExportDestinationOptions = dfDestinationOptions
wordExportOptions.ExportFormatType = ExportFormatType.WordForWindows
wordExportOptions.ExportFormatOptions = Nothing
rd.Export(wordExportOptions)
End Sub
private void ExportToWord_RD(ReportDocument rd, String filepath)
{
DiskFileDestinationOptions dfDestinationOptions = new
DiskFileDestinationOptions();
dfDestinationOptions.DiskFileName = filepath;
ExportOptions wordExportOptions = new ExportOptions();
wordExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
wordExportOptions.ExportDestinationOptions = dfDestinationOptions;
wordExportOptions.ExportFormatType = ExportFormatType.WordForWindows;
wordExportOptions.ExportFormatOptions = null;
}
rd.Export(wordExportOptions);
1.4.2.3.3
Exportation vers un disque au format PDF à l'aide
de la méthode ReportDocument.ExportToDisk
Contexte
Cet exemple montre comment exporter un rapport Crystal vers le format PDF. Le SDK de
SAP Crystal Reports 2008 permet d'exporter des rapports vers un format spécifique, tel qu'Excel, PDF ou RTF.
Vous pouvez exporter des rapports vers différents formats en utilisant le modèle d'objet ReportDocument.
Procédure
1.
Créez une méthode qui utilise un objet ReportDocument comme paramètre.
2.
Spécifiez un répertoire de sortie et vérifiez qu'il existe. Si le répertoire de sortie n'existe pas, créez-le.
3.
Appelez la méthode ExportToDisk et spécifiez le format de sortie ainsi que le nom du fichier de sortie.
Exemple
Private Shared Sub ExportToPDF_RD(ByVal rd As ReportDocument)
Dim exportPath As String = "C:\\Exported\\"
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
135
If Not System.IO.Directory.Exists(exportPath) Then
System.IO.Directory.CreateDirectory(exportPath)
End If
rd.ExportToDisk(ExportFormatType.PortableDocFormat, exportPath +
"PortableDoc.pdf")
End Sub
private static void ExportToPDF_RD(ReportDocument rd) {
String exportPath = "C:\\Exported\\";
if (!System.IO.Directory.Exists(exportPath))
{
System.IO.Directory.CreateDirectory(exportPath);
}
rd.ExportToDisk(ExportFormatType.PortableDocFormat, exportPath +
"PortableDoc.pdf");
}
Informations associées
Modèle d'objet ReportDocument [page 37]
1.4.3 Filtrage de données avec des paramètres ou des
formules
SAP Crystal Reports vous permet de personnaliser les données de votre rapport par le biais de paramètres de
rapport ou en changeant la formule de sélection.
Un paramètre est une variable de rapport définie par l'utilisateur et instanciée à l'actualisation du rapport.
Lorsqu'un paramètre est utilisé dans une formule de sélection, il vous permet de modifier les données incluses
dans votre rapport au moment de l'exécution. Les paramètres peuvent également être utilisés pour personnaliser
l'apparence d'un rapport.
Les formules de sélection spécifient et filtrent les enregistrements et les groupes qui apparaissent dans un
rapport. En modifiant la formule de sélection, vous modifiez la requête utilisée lors de l'extraction des données de
la source de données.
Classes utilisées pour la définition de paramètres ou formules
●
CrystalDecisions.CrystalReports.Engine.DataDefinition
Contient toutes les informations relatives à la manipulation des données basées sur la source de données
d'un rapport.
●
CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinition
Représente un champ de paramètre dans le rapport. Cet objet indique les propriétés et les méthodes
permettant d'extraire les informations et de définir les options d'un champ de paramètre dans le rapport.
●
136
CrystalDecisions.Web.Parameter
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Fournit des propriétés permettant de modifier ou d'extraire des informations concernant un paramètre dans
un site Web.
1.4.3.1
Paramètres
Un paramètre est une variable de rapport définie par l'utilisateur et instanciée à l'actualisation du rapport. Il existe
de nombreux types de paramètres et la définition par programmation des différents types peut entraîner des
résultats et des expériences différents pour les utilisateurs de votre application.
Possibilités d'optimisation de l'utilisation des paramètres
Afin d'éviter des erreurs de moment d'exécution lors de la définition de paramètres par programmation, notez les
éléments suivants :
●
Les valeurs de paramètres doivent être du même type que le paramètre.
●
Si le paramètre possède un masque d'édition, les valeurs du paramètre doivent respecter ce masque.
●
Lors de la lecture des valeurs de paramètres, assurez-vous de connaître le type de valeurs que vous lisez,
c'est-à-dire, si ces valeurs sont discrètes ou si elles font partie d'une plage.
●
Définissez le type de limite sur une valeur de plage avant de l'ajouter au paramètre.
●
Assurez-vous que la limite supérieure d'une valeur de plage est plus grande que la limite inférieure.
Informations associées
Définition des paramètres [page 699]
Paramètres de données et paramètres non relatifs à des données [page 702]
Conception des champs de paramètre [page 701]
1.4.3.1.1
Propriétés des valeurs de paramètres
Les paramètres prennent en charge de nombreuses fonctions en plus de celles mentionnées ici. Pour obtenir une
liste complète de ces fonctions, voir la classe ParameterField.
Paramètres à valeurs multiples ou uniques
Si un paramètre prend en charge plusieurs valeurs, un utilisateur peut sélectionner plusieurs valeurs pour un
paramètre à l'actualisation du rapport. Si un paramètre prend en charge des valeurs uniques, un utilisateur ne
peut sélectionner qu'une seule valeur pour un paramètre à l'actualisation du rapport. Si un paramètre prend en
charge plusieurs valeurs, il passe d'une variable unique à un tableau contenant de nombreuses valeurs.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
137
Valeurs de paramètres discrètes ou faisant partie d'une plage
Les valeurs de paramètres discrètes représentent une valeur unique, telle que 1, "Jill", 3.141 ou True. Les valeurs
de plages représentent une étendue spécifique de valeurs d'un point à un autre, telles que [1..45], (4..6],
["Lundi","Jeudi"]. La valeur de limite inférieure de la plage doit être plus petite que la limite supérieure.
De plus, les paramètres peuvent à la fois être discrets et faire partie d'une plage si le paramètre prend en charge
plusieurs valeurs.
Valeurs par défaut
Vous pouvez spécifier des valeurs par défaut pour un paramètre et forcer l'utilisateur à sélectionner une seule
valeur ou un grand nombre de valeurs. Vous pouvez également fournir des valeurs de paramètres par défaut mais
autoriser l'utilisateur à saisir des valeurs personnalisées. Les valeurs par défaut sont stockées dans la propriété
DefaultValues de l'objet ParameterField. Une fois que l'utilisateur a sélectionné un ensemble de valeurs pour
les paramètres du rapport, ces valeurs sont stockées dans la propriété CurrentValues.
Remarque
Les valeurs par défaut ne peuvent être que discrètes.
Valeurs de paramètres facultatives
Si la valeur d'un paramètre est définie sur "facultative", les utilisateurs ne sont pas obligés de saisir une valeur
lorsqu'une invite s'affiche.
Valeurs de paramètres statiques ou dynamiques
Les valeurs de paramètres statiques sont stockées dans le rapport. Les valeurs de paramètres dynamiques sont
extraites d'une source de données extérieure au rapport.
Valeurs de paramètres de mise en cascade dynamique
Une invite dynamique peut inclure une liste de valeurs mise en cascade qui guide l'utilisateur dans une séquence
d'invites dynamiques pour déterminer une valeur de paramètre finale. Par exemple, les utilisateurs peuvent être
invités à choisir un pays avant qu'un choix de régions apparaisse.
138
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Valeurs de paramètres interactives
Les valeurs de paramètres peuvent être manipulées au moment de l'exécution à l'aide de la propriété
CrystalReportViewer.ViewTimeSelectionFormula. La formule de sélection du moment de visualisation
est prise en compte après application des résultats des formules de sélection enregistrés avec le rapport.
Types de valeurs de paramètres
Un champ de paramètre doit contenir un ParameterType spécifique.
Une valeur de paramètre doit être de l'un des types de paramètres suivants :
●
ReportParameter
●
StoredProcedureParameter
●
QueryParameter
1.4.3.1.2
Panneau des paramètres
Mettez en forme et filtrez les données de rapport de manière interactive en utilisant le panneau des paramètres.
Le nouveau panneau des paramètres de SAP Crystal Reports 2008 permet aux utilisateurs de définir des
paramètres statiques et dynamiques et d'actualiser le rapport. Les utilisateurs peuvent également mettre en
forme et filtrer les données du rapport de manière interactive. Le panneau des paramètres est accessible depuis
le volet des outils. Vous pouvez accéder au panneau des paramètres en cliquant sur le bouton Paramètres de la
barre d'outils ou par programmation en utilisant le code suivant :
myCrystalReportViewer.ToolPanelView = ToolPanelViewType.ParameterPanel
crystalReportViewer.ToolPanelView = ToolPanelViewType.ParameterPanel;
Vous pouvez masquer le bouton Paramètres par programmation en utilisant le code suivant :
myCrystalReportViewer.ShowParameterPanelButton = False
crystalReportViewer.ShowParameterPanelButton = false;
Le panneau affiche tous les paramètres qui ont été définis sur Modifiable ou Lecture seule. Si un paramètre est
défini sur Modifiable, vous pouvez ajouter, supprimer ou modifier les valeurs du paramètre en cliquant sur le
bouton Afficher la boîte de dialogue Paramètres avancés. Si les valeurs du paramètre sont modifiées mais pas
appliquées, un astérisque apparaît en regard du champ de paramètre pour indiquer que les valeurs n'ont pas été
appliquées au rapport.
Remarque
Si le paramètre accepte les valeurs personnalisées, vous pouvez directement modifier la valeur du paramètre
dans le champ de texte du panneau des paramètres.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
139
Une icône de base de données apparaît à côté des paramètres de données. Lorsque vous modifiez la valeur d'un
paramètre de données, le rapport actualise la base de données et y accède pour effectuer les modifications
correspondantes. Lorsque vous modifiez la valeur d'un paramètre non relatif à des données, le rapport est mis en
forme ou filtré en fonction des données enregistrées dans le rapport. Le rapport n'accède pas à la base de
données.
Informations associées
Filtrage des données à l'aide des formules de sélection [page 148]
1.4.3.1.3
Définition de paramètres dans la page ASPX
Lorsque vous créez un rapport Crystal, la sélection des données de ce rapport est gérée par le critère "where". La
valeur de ce critère peut être codée en dur, mais lorsqu'elle doit être dynamique, un paramètre est créé et la
clause "where" lui est affectée. Les paramètres ne sont pas gérés de la même manière selon que vous utilisez un
modèle de programmation allégée ou classique.
Lorsque vous développez un projet à l'aide d'un modèle de programmation classique, SAP Crystal Reports,
version développeur pour Microsoft Visual Studio accède aux paramètres et interagit avec eux par le biais d'un
groupe de classes associées aux paramètres dans le SDK de SAP Crystal Reports.
Lorsque vous utilisez un modèle de programmation allégée (le modèle de développement d'applications avec
balises), le contrôle CrystalReportSourceaccède aux paramètres et interagit avec eux par le biais de la
structure Parameters. La structure Parameters est une nouveauté de ASP.NET version 2.0, qui permet d'affecter
des paramètres à n'importe quel contrôle DataSource (dans le cas présent, un contrôle
CrystalReportSource). Ces paramètres peuvent être affectés au rapport principal comme aux sous-rapports,
si nécessaire.
Il est possible d'affecter un paramètre à partir de tous les types de paramètre suivants :
●
ControlParameter
●
QueryStringParameter
●
SessionParameter
●
FormParameter
●
CookieParameter
Cette affectation permet alors de créer une solution de programmation allégée dans laquelle les paramètres d'un
rapport peuvent être définis à partir de sélections effectuées dans les contrôles DropDownList (ou d'autres types
de contrôle), de valeurs contenues dans une chaîne de requête URL, de valeurs extraites d'un objet Session, de
valeurs provenant de champs de formulaires ou d'un cookie.
140
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Configuration des propriétés Parameters directement dans le fichier XML
Dans un fichier XML, la balise <Parameters> est imbriquée dans la balise <CrystalReportSource>. Dans la
balise imbriquée <Parameters>, il est possible de configurer des liens à un paramètre par défaut ou à un
paramètre à partir d'un contrôle.
Exemple
Configuration d'un paramètre dans XML
Cet exemple définit la valeur par défaut du paramètre City sur Tokyo.
<CR:CrystalReportSource ID="CrystalReportSource1"
runat="server">
<Report FileName="SalesReport.rpt">
<Parameters>
<CR:Parameter ConvertEmptyStringToNull="False"
DefaultValue="Tokyo" Name="City" ReportName="" />
</Parameters>
</Report>
</CR:CrystalReportSource>
Exemple
Liaison d'un paramètre à un contrôle
Vous pouvez lier la valeur d'un paramètre à un autre contrôle au sein du Web Form. Cet exemple définit la
valeur d'un paramètre nommé City sur la valeur d'un contrôle de zone de texte nommé Location.
<CR:CrystalReportSource ID="CrystalReportSource1"
runat="server">
<Report FileName="SalesReport.rpt">
<Parameters>
<CR:ControlParameter ControlID="Location"
ConvertEmptyStringToNull="False"
Name="city" PropertyName="Text" ReportName="" />
</Parameters>
</Report>
</CR:CrystalReportSource>
Informations associées
Définition des paramètres [page 699]
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
141
1.4.3.1.3.1
Accès à la boîte de dialogue Editeur de
collections de paramètres
Contexte
Les paramètres sont configurés dans la boîte de dialogue Editeur de collections de paramètres.
Procédure
1.
Sélectionnez le contrôle CrystalReportSource.
2.
Dans Propriétés, développez Report.
3.
Dans la propriété Report, cliquez sur le bouton de sélection (...) tout à fait à droite de Parameters (Collection).
4.
Dans la boîte de dialogue Editeur de collections de paramètres, saisissez un ou plusieurs paramètres pour le
rapport principal ainsi que pour tous les sous-rapports.
1.4.3.1.4
Définition de paramètres discrets dans un rapport
Cet exemple définit les paramètres sur des valeurs spécifiques utilisées par l'exemple de rapport.
Prérequis
Vous devez disposer d'un rapport avec un champ de paramètre déjà spécifié.
Contexte
En utilisant le modèle d'objet ReportDocument, vous pouvez définir les valeurs des paramètres existants dans un
rapport. Les paramètres sont accessibles par nom ou valeur d'index numérique. Pour ajouter un nouveau
paramètre à un rapport, vous devez utiliser le modèle d'objet ReportClientDocument.
Procédure
1.
Crée une constante de chaîne PARAMETER_FIELD_NAME et définit sa valeur sur le nom d'un paramètre
existant.
2.
142
Créez une instance de la classe ArrayList.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
3.
Pour chaque valeur que vous souhaitez affecter au paramètre, ajoutez une valeur à l'instance ArrayList.
4.
Appelez la méthode ReportDocument.SetParameterValue et transmettez le nom de paramètre et la liste
de valeurs.
La méthode ReportDocument.SetParameterValue définit la valeur actuelle d'un champ de paramètre.
Cette valeur peut être une valeur primaire, ParameterValue, un tableau d'un type ou l'autre ou une
collection ParameterValues.
Exemple
Définition de paramètres discrets dans un rapport
Private Sub SettingParameters_RD(ByVal TestReport As ReportDocument)
Dim PARAMETER_FIELD_NAME As String = "Country"
Dim countries As New ArrayList()
countries.Add("Canada")
countries.Add("USA")
TestReport.SetParameterValue(PARAMETER_FIELD_NAME, countries.ToArray())
crystalReportViewer.ReportSource = TestReport
End Sub
private void SettingParameters_RD(ReportDocument TestReport)
{
string PARAMETER_FIELD_NAME = "Country";
ArrayList countries = new ArrayList();
countries.Add("Canada");
countries.Add("USA");
TestReport.SetParameterValue(PARAMETER_FIELD_NAME, countries.ToArray());
crystalReportViewer.ReportSource = TestReport;
}
Étapes suivantes
Un site Web SAP Crystal Reports peut requérir un code supplémentaire pour gérer l'état de la session entre les
affichages de page.
Informations associées
Tutoriel : Persistance du modèle d'objet ReportDocument à l'aide de Session [page 341]
Dans ce tutoriel, vous allez utiliser le modèle d'objet ReportDocument et effectuer des modifications par
programmation sur un rapport au moment de l'exécution.
Tutoriel : Lecture et définition des paramètres discrets [page 389]
Dans ce tutoriel, vous allez apprendre à créer un rapport dont les données peuvent être filtrées en fonction d'un
paramètre discret.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
143
1.4.3.1.5
rapport
Définition de paramètres discrets dans un sous-
Cet exemple attribue à un paramètre de sous-rapport une valeur spécifique.
Prérequis
Vous devez disposer d'un rapport avec un champ de paramètre déjà spécifié.
Contexte
Pour définir une valeur discrète dans un rapport, vous devez appeler la méthode
ReportDocument.SetParameterValue avec le nom du paramètre et la valeur du paramètre. Cette méthode
n'est pas prise en charge pour les sous-rapports. Dans ce cas, vous devez accéder au paramètre du sous-rapport
via la collection ParameterFields du rapport principal et le définir sur un nouvel objet
ParameterDiscreteValue.
Procédure
1.
Créez une instance de la classe ParameterDiscreteValue.
Conseil
Utilisez la classe ParameterRangeValue pour les paramètres limités.
2.
Définissez la propriété ParameterDiscreteValue.Value sur la nouvelle valeur du paramètre.
Dim dv As New ParameterDiscreteValue()
dv.Value = parameterValue
ParameterDiscreteValue dv = new ParameterDiscreteValue();
dv.Value = parameterValue;
3.
Créez une instance de la collection ParameterFields et affectez-lui la valeur de la propriété
ReportDocument.ParameterFields du rapport principal.
Dim parameterFields As ParameterFields = testReport.ParameterFields
ParameterFields parameterFields = testReport.ParameterFields;
144
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
4.
Accédez au paramètre du sous-rapport via un index nommé de l'instance ParameterFields.
Dim parameterField As ParameterField = parameterFields(parameterFieldName,
subreportName)
ParameterField parameterField = parameterFields[parameterFieldName,
subreportName];
La collection ParameterFields requiert deux index, l'un pour le nom du paramètre et l'autre pour le nom du
sous-rapport.
5.
Effacez la valeur existante dans le champ de paramètre et ajoutez l'objet ParameterDiscreteValue que vous
avez créé préalablement.
parameterField.CurrentValues.Clear()
parameterField.CurrentValues.Add(dv)
parameterField.CurrentValues.Clear();
parameterField.CurrentValues.Add(dv);
6.
Liez le rapport à un contrôle CrystalReportViewer.
Remarque
ParameterFields doit être défini avant la propriété ReportSource du contrôle CrystalReportViewer ; sinon,
le contrôle vous invite à saisir les informations de paramètres.
Exemple
Définition de paramètres discrets dans un sous-rapport
Private Sub SubreportSettingParameters_RD(ByVal testReport As ReportDocument,
ByVal subreportName As String, ByVal parameterFieldName As String, ByVal
parameterValue As String)
Dim dv As New ParameterDiscreteValue()
dv.Value = parameterValue
Dim parameterFields As ParameterFields = testReport.ParameterFields
Dim parameterField As ParameterField = parameterFields(parameterFieldName,
subreportName)
parameterField.CurrentValues.Clear()
parameterField.CurrentValues.Add(dv)
crystalReportViewer1.ReportSource = TestReport
End Sub
private void SubreportSettingParameters_RD(ReportDocument testReport,
String subreportName, String parameterFieldName, String
parameterValue)
{
ParameterDiscreteValue dv = new ParameterDiscreteValue();
dv.Value = parameterValue;
ParameterFields parameterFields = testReport.ParameterFields;
ParameterField parameterField = parameterFields[parameterFieldName,
subreportName];
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
145
}
parameterField.CurrentValues.Clear();
parameterField.CurrentValues.Add(dv);
crystalReportViewer1.ReportSource = TestReport;
Étapes suivantes
Un site Web SAP Crystal Reports peut requérir un code supplémentaire pour gérer l'état de la session entre les
affichages de page.
Informations associées
Tutoriel : Persistance du modèle d'objet ReportDocument à l'aide de Session [page 341]
Dans ce tutoriel, vous allez utiliser le modèle d'objet ReportDocument et effectuer des modifications par
programmation sur un rapport au moment de l'exécution.
Tutoriel : Lecture et définition des paramètres de plage d'un sous-rapport [page 277]
Dans ce tutoriel, vous allez traiter un problème supplémentaire : que faire si un rapport contient un sousrapport nécessitant des paramètres différents ?
1.4.3.1.6
Définition de paramètres limités dans un rapport
Prérequis
Vous devez disposer d'un rapport avec un champ de paramètre déjà spécifié.
Contexte
En utilisant le modèle d'objet ReportDocument, vous pouvez définir les valeurs des paramètres existants dans un
rapport. Les paramètres sont accessibles par nom ou valeur d'index numérique. Pour ajouter un nouveau
paramètre à un rapport, vous devez utiliser le modèle d'objet ReportClientDocument.
Pour définir un paramètre limité, vous devez créer une instance de la classe ParameterRangeValue et la
transmettre à la méthode ReportDocument.SetParameterValue.
146
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Procédure
1.
Crée une constante de chaîne PARAMETER_FIELD_NAME et définit sa valeur sur le nom d'un paramètre
existant.
2.
Créez une instance de la classe ParameterRangeValue.
Dim dateRange As New ParameterRangeValue()
ParameterRangeValue dateRange = new ParameterRangeValue();
3.
Définissez les valeurs de début et de fin pour l'objet ParameterRangeValue.
dateRange.StartValue = startDate
dateRange.EndValue = endDate
dateRange.StartValue = startDate;
dateRange.EndValue = endDate;
4.
Définissez les limites supérieure et inférieure de la plage.
Option
Description
RangeBoundType.BoundExclusive
Les valeurs supérieures et inférieures ne sont pas incluses dans la plage.
RangeBoundType.BoundInclusive
Les valeurs supérieures et inférieures sont incluses dans la plage.
RangeBoundType.NoBound
Aucune plage n'est sélectionnée.
dateRange.LowerBoundType = RangeBoundType.BoundInclusive
dateRange.UpperBoundType = RangeBoundType.BoundInclusive
dateRange.LowerBoundType = RangeBoundType.BoundInclusive;
dateRange.UpperBoundType = RangeBoundType.BoundInclusive;
5.
Appelez la méthode ReportDocument.SetParameterValue et transmettez le nom du paramètre et l'objet
ParameterRangeValue.
La méthode ReportDocument.SetParameterValue définit la valeur actuelle d'un champ de paramètre.
Cette valeur peut être une valeur primaire, ParameterValue, un tableau d'un type ou l'autre ou une
collection ParameterValues.
Exemple
Private Sub SettingParameters_RD(ByVal testReport As ReportDocument, ByVal
startDate As String, ByVal endDate As String)
Dim PARAMETER_FIELD_NAME As String = "SalesDates"
Dim dateRange As New ParameterRangeValue()
dateRange.StartValue = startDate
dateRange.EndValue = endDate
dateRange.LowerBoundType = RangeBoundType.BoundInclusive
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
147
dateRange.UpperBoundType = RangeBoundType.BoundInclusive
testReport.SetParameterValue(PARAMETER_FIELD_NAME, dateRange)
crystalReportViewer1.ReportSource = testReport
End Sub
private void SettingParameters_RD(ReportDocument testReport, String startDate,
String endDate)
{
string PARAMETER_FIELD_NAME = "SalesDates";
ParameterRangeValue dateRange = new ParameterRangeValue();
dateRange.StartValue = startDate;
dateRange.EndValue = endDate;
dateRange.LowerBoundType = RangeBoundType.BoundInclusive;
dateRange.UpperBoundType = RangeBoundType.BoundInclusive;
}
testReport.SetParameterValue(PARAMETER_FIELD_NAME, dateRange);
crystalReportViewer1.ReportSource = testReport;
Étapes suivantes
Un site Web SAP Crystal Reports peut requérir un code supplémentaire pour gérer l'état de la session entre les
affichages de page.
Informations associées
Tutoriel : Persistance du modèle d'objet ReportDocument à l'aide de Session [page 341]
Dans ce tutoriel, vous allez utiliser le modèle d'objet ReportDocument et effectuer des modifications par
programmation sur un rapport au moment de l'exécution.
1.4.3.2
Filtrage des données à l'aide des formules de
sélection
Les formules de sélection spécifient et filtrent les enregistrements et les groupes qui apparaissent dans un
rapport. Les trois formules de sélection suivantes permettent de filtrer les données :
●
Formule de sélection d'enregistrement
●
Formule de sélection des données enregistrées
●
Formule de sélection de groupe
Le tableau suivant montre les types de champs autorisés dans différents filtres de rapports :
148
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Formule de sélection
d'enregistrement
Formule de sélection des
données enregistrées
Formule de sélection de
groupe
Paramètres
X
X
X
Résumés
-
-
X
Formules d'heure d'im­
pression/totaux cumulés
-
-
-
Le tableau suivant montre les différents comportements associés aux différents filtres de rapports :
Formule de sélection
d'enregistrement
Formule de sélection des
données enregistrées
Formule de sélection de
groupe
Peut-on se référer au ré­
sumé ?
Non.
Oui.
Oui.
Quand la formule est-elle
évaluée ?
Pendant la lecture des en­
registrements.
Si un résumé est utilisé, à
l'heure d'impression ; si­
non, pendant la lecture
des enregistrements.
A l'heure d'impression.
Quand le rapport est-il ac­
tualisé ?
Si le résultat de l'évalua­
tion est faux, lorsque les
enregistrements sont
abandonnés.
Si les enregistrements
sont lus, lors de l'évalua­
tion. Si le résultat de l'éva­
luation est faux, lorsque
les enregistrements sont
abandonnés.
N/A
Le calcul du résumé est-il
affecté ?
Oui, les enregistrements
Si le filtre est évalué pen­
Non, les enregistrements
filtrés ne sont pas compta­ dant la lecture des enre­
sont comptabilisés même
bilisés.
gistrements, alors non ; si­ lorsqu'ils sont filtrés.
non, oui.
Vous pouvez appliquer la formule de sélection des données enregistrées au résultat de la formule de sélection
d'enregistrement. Le diagramme suivant décrit le flux d'utilisation des formules de sélection d'enregistrement et
de sélection des données enregistrées :
Formule de sélection d'enregistrement
La formule de sélection d'enregistrement spécifie les enregistrements qui formeront les données enregistrées du
rapport. Cette formule de sélection autorise deux niveaux de filtrage :
●
filtrage par la base de données ;
●
filtrage par le moteur de traitement du rapport.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
149
Formule de sélection des données enregistrées
SavedDataFilter permet aux utilisateurs de visualiser un sous-ensemble des données enregistrées dans un
rapport. En cas de modification de SavedDataFilter, les données enregistrées dans le rapport ne sont pas ignorées
et la base de données n'est pas sollicitée.
Formule de sélection de groupe
La formule de sélection de groupe spécifie les enregistrements qui seront pris en compte lors du rendu des pages
du rapport. Cette formule utilise généralement les valeurs produites à des étapes antérieures de traitement du
rapport, comme les résumés.
Remarque
La formule de sélection de groupe filtre les enregistrements et pas les groupes.
1.4.3.2.1
sélection
Filtrage de données à l'aide de formules de
Contexte
Cet exemple applique un filtre à l'un des paramètres de la base de données qui sont utilisés par l'exemple de
rapport. Le filtre permet aux utilisateurs de personnaliser les valeurs qui apparaissent dans un rapport.
Procédure
1.
Créez une méthode qui utilise un objet ReportDocument et une chaîne contenant une formule de sélection.
Le SDK SAP Crystal Reports .NET utilise la même syntaxe pour une formule de sélection que le concepteur
incorporé de SAP Crystal Reports.
2.
Affectez la formule de sélection à la propriété DataDefinition.RecordSelectionFormula de l'objet
ReportDocument en cours.
La classe DataDefinition contient toutes les informations relatives à la manipulation des données basées sur
la source de données d'un rapport. La classe DataDefinition de chaque rapport est accessible via la propriété
ReportDocument.DataDefinition.
3.
150
Liez la propriété ReportSource du contrôle CrystalReportViewer à l'instance ReportDocument.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Résultats
Le rapport sera actualisé avec les nouveaux résultats en fonction de la formule de sélection spécifiée.
Exemple
Cet exemple accepte un objet ReportDocument et un paramètre d'entier. Le paramètre d'entier est concaténé
avec une chaîne existante pour créer une formule de sélection complète. La formule de sélection est appliquée
au rapport avant la liaison du contrôle CrystalReportViewer à l'objet ReportDocument.
Private Sub FilterData_RD(ByVal TestReport As ReportDocument, ByVal sales As
Integer)
Dim selectFormula As String = "{Customer.Last Year's Sales} > " + sales
TestReport.DataDefinition.RecordSelectionFormula = selectionFormula
crystalReportViewer.ReportSource = TestReport
End Sub
private void FilterData_RD(ReportDocument TestReport, int sales)
{
string selectFormula = "{Customer.Last Year's Sales} > " + sales;
TestReport.DataDefinition.RecordSelectionFormula = selectionFormula;
crystalReportViewer.ReportSource = TestReport;
}
Étapes suivantes
Un site Web SAP Crystal Reports peut requérir un code supplémentaire pour gérer l'état de la session entre les
affichages de page.
Informations associées
Tutoriel : Persistance du modèle d'objet ReportDocument à l'aide de Session [page 341]
Dans ce tutoriel, vous allez utiliser le modèle d'objet ReportDocument et effectuer des modifications par
programmation sur un rapport au moment de l'exécution.
Incorporation des paramètres dans des formules [page 705]
1.4.4
Définition de la source de données
SAP Crystal Reports permet de créer des rapports à partir de n'importe quelle source de données, notamment les
sources persistantes telles que les bases de données et les fichiers XML, et les sources exécutables telles que les
ensembles d'objets.
Le modèle d'objet ReportDocument permet d'accéder par programmation aux informations de connexion à ces
sources de données et de les modifier pour le fichier de rapport au moment de l'exécution.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
151
Une source de données peut être définie de différentes manières :
●
En utilisant la méthode ReportDocument.DatasourceConnections[0].SetConnection.
Cette méthode permet de se connecter à un rapport ou à un sous-rapport.
●
En mettant à jour la propriété ReportDocument.Table.LogOnInfo et en appelant la méthode
ReportDocument.Table.ApplyLogOnInfo.
Cette méthode permet de se connecter à un rapport ou à un sous-rapport. Cette méthode permet également
de spécifier un emplacement de tableau entièrement qualifié.
●
En utilisant la méthode CrystalReportViewer.LogOnInfo.
Cette méthode permet de se connecter à un rapport, mais ne permet pas de définir l'emplacement de la base
de données.
Classes utilisées pour la définition de la source de données
●
CrystalDecisions.Shared.ConnectionInfo
Indique les propriétés permettant d'extraire et de définir des options de connexion aux serveurs de bases de
données ou aux sources de données ODBC.
●
CrystalDecisions.CrystalReports.Engine.Table
Représente une table de base de données à laquelle accède le rapport. Cette classe indique les propriétés et
les méthodes permettant d'extraire les informations sur la table et de définir les informations de connexion de
la table.
●
CrystalDecisions.CrystalReports.Engine.ReportDocument
Représente un rapport et contient les propriétés et les méthodes permettant de spécifier une source de
données au moment de l'exécution.
Informations associées
Sources de données prises en charge [page 666]
Accès aux données et ajout des données [page 666]
1.4.4.1
Connexion à une base de données
La source de données la plus courante pour un rapport Crystal est une base de données. Vous pouvez accéder à
une base de données à partir de l'une des sources suivantes :
●
152
Directement à partir du fichier de rapport, à l'aide des informations de connectivité de la base de données
stockées dans ce fichier.
Les informations de connectivité à la base de données sont configurées à l'aide du concepteur
SAP Crystal Report incorporé lorsque le rapport est créé ou modifié. Ces informations sont automatiquement
transmises à la base de données par le moteur de rapport chaque fois qu'un rapport est affiché.
Les références de connexion peuvent être enregistrées avec le rapport ou transmises au moment de
l'exécution.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
●
A partir du code de l'API .NET de SAP Crystal Reports.
Les informations de connectivité à la base de données peuvent être reconfigurées avec un code qui interagit
avec le rapport par programmation au moment de l'exécution.
Le scénario le plus courant pour la création d'une connexion à une base de données consiste à définir les
paramètres de connexion à la base de données dans le concepteur SAP Crystal Reports, puis à fournir les
informations de connexion par programmation au moment de l'exécution.
Informations associées
Accès aux données et ajout des données [page 666]
1.4.4.1.1
Optimisation de la sécurité lors d'une connexion à
une base de données SQL Server
Quelle que soit la source des rapports, le problème de sécurité reste le même : comment protéger la base de
données des attaques malveillantes ?
utiliser l'authentification Windows avec la sécurité intégrée
Pour une sécurité optimale, Microsoft recommande l'utilisation de l'authentification Windows avec la sécurité
intégrée. Avec cette configuration, aucun ID utilisateur ni mot de passe n'est nécessaire dans l'application.
utiliser l'authentification SQL Server avec un compte de base de données à
accès limité
Pour utiliser l'authentification SQL Server avec votre base de données, vous devez prendre des mesures
supplémentaires pour parvenir à une sécurité optimale.
N'utilisez jamais l'ID et le mot de passe de l'administrateur système dans votre code. Ceci représentant une
menace considérable pour la sécurité. Procédez plutôt de la manière suivante :
●
Créez un compte de base de données à accès limité.
●
Configurez ce compte pour autoriser uniquement l'accès aux tables requises de la base de données.
●
Pour chaque table accessible, autorisez uniquement l'exécution de l'instruction SELECT.
Microsoft recommande également de crypter votre ID utilisateur et votre mot de passe. Pour en savoir plus sur le
cryptage de l'ID utilisateur et du mot de passe, consultez les informations sur la sécurité dans MSDN.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
153
1.4.4.1.2
Connexion à une base de données SQL Server
sécurisée avec un sous-rapport
Prérequis
Pour exécuter cet exemple, vous devez disposer d'un rapport contenant un sous-rapport qui requiert une
authentification SQL sécurisée. Le nom d'utilisateur et le mot de passe pour se connecter à la base de données
SQL Server doivent être fournis.
Contexte
Cet exemple permet d'activer la base de données d'un sous-rapport par programmation.
Procédure
1.
Extrayez l'instance DataSourceConnections de la propriété DataSourceConnections des instances de
rapport et sous-rapport.
2.
Extrayez l'élément IConnectionInfo au niveau de l'index 0 de l'instance DataSourceConnections.
3.
Appelez la méthode SetConnection avec votre nom de serveur, de base de données, d'utilisateur et votre
mot de passe.
4.
Appelez la méthode SetLogon avec votre nom d'utilisateur et de votre mot de passe.
Exemple
Private Function SubreportLogon_RD(ByVal TestReport As ReportDocument) As
ReportDocument
Dim dataSourceConnections As DataSourceConnections =
TestReport.DataSourceConnections
Dim connectInfo As IConnectionInfo = dataSourceConnections(0)
connectInfo.SetConnection("ServerName", "DatabaseName", "UserName",
"Password")
Dim TestSubreport As ReportDocument = TestReport.Subreports("Subreport1")
Dim subreportDataSourceConnections As DataSourceConnections =
TestSubreport.DataSourceConnections
Dim connectInfo As IConnectionInfo = subreportDataSourceConnections(0)
connectInfo.SetLogon("UserName", "Password")
End Function
private ReportDocument SubreportLogon_RD(ReportDocument TestReport)
{
DataSourceConnections dataSourceConnections =
TestReport.DataSourceConnections;
IConnectionInfo connectInfo = dataSourceConnections[0];
connectInfo.SetConnection("ServerName", "DatabaseName", "UserName",
"Password");
154
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
ReportDocument TestSubreport = TestReport.Subreports["Subreport1"];
DataSourceConnections subreportDataSourceConnections =
TestSubreport.DataSourceConnections;
IConnectionInfo connectInfo = subreportDataSourceConnections[0];
connectInfo.SetLogon("UserName", "Password");
}
1.4.4.1.3
Connexion à une base de données SQL Server
sécurisée avec le modèle d'objet ReportDocument
Cet exemple montre comme se connecter à une base de données en utilisant une authentification SQL sécurisée.
Prérequis
Avant de commencer, vous devez disposer d'un rapport requérant une authentification SQL sécurisée.
Contexte
Pour mettre à jour les informations de connexion pour un rapport en utilisant le modèle d'objet ReportDocument,
vous devez mettre à jour la propriété ConnectionInfo pour chaque objet Table de la collection
ReportDocument.Database.Tables. Une fois chaque propriété mise à jour, appelez la méthode
Table.ApplyLogOnInfo pour valider les modifications.
Procédure
1.
Créez un objet ConnectionInfo.
2.
Définissez les propriétés DatabaseName, UserID et Password de l'objet ConnectionInfo sur les valeurs
requises pour la connexion.
Remarque
Si vous définissez uniquement les propriétés DatabaseName, UserID et Password, vous êtes connecté au
serveur par défaut de la base de données spécifiée dans le rapport. Toutefois, si vous affectez une autre
propriété ServerName, vous pouvez rediriger le rapport vers un serveur différent au moment de
l'exécution.
3.
Extrayez l'instance Tables de la propriété Database de la classe ReportDocument.
Remarque
Tables est une classe indexée contenant des instances de la classe Table.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
155
4.
Pour chaque objet Table de la collection :
a) Extrayez l'instance TableLogOnInfode la propriété LogOnInfo de la classe Table.
b) Mettez à jour la propriété ConnectionInfo de l'objet TableLogOnInfo.
c) Appelez la méthode ApplyLogOnInfo pour valider la modification.
Exemple
Private Sub setDatabaseLogon(ByVal rd As ReportDocument, ByVal databaseName As
String, ByVal userName As String, ByVal password As String)
Dim myConnectionInfo As New ConnectionInfo()
myConnectionInfo.DatabaseName = databaseName
myConnectionInfo.UserID = userName
myConnectionInfo.Password = password
Dim myTables As Tables = rd.Database.Tables
For Each myTable As Table In myTables
Dim newLogonInfo As TableLogOnInfo = myTable.LogOnInfo
newLogonInfo.ConnectionInfo = myConnectionInfo
myTable.ApplyLogOnInfo(newLogonInfo)
Next
End Sub
private void setDatabaseLogon(ReportDocument rd, String databaseName, String
userName, String password)
{
ConnectionInfo connectionInfo = new ConnectionInfo();
connectionInfo.DatabaseName = databaseName;
connectionInfo.UserID = userName;
connectionInfo.Password = password;
}
Tables tables = rd.Database.Tables;
foreach (Table table in tables)
{
TableLogOnInfo newLogonInfo = table.LogOnInfo;
newLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(newLogonInfo);
}
Étapes suivantes
Une fois les informations de connexion à la base de données définies pour l'instance ReportDocument, mettez à
jour la propriété ReportSource de l'objet CrystalReportViewer.
156
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.4.4.1.4
Connexion à une base de données SQL Server
sécurisée avec le contrôle CrystalReportViewer
Contexte
Lorsque vous utilisez le modèle d'objet CrystalReportViewer pour vous connecter à une base de données SQL
Server sécurisée, vous devez utiliser les classes de l'espace de noms CrystalDecisions.Shared.
Les propriétés de la classe ConnectionInfo permettent la connexion au serveur de base de données ou aux
sources de données ODBC.
Procédure
1.
Créez un objet ConnectionInfo.
2.
Définissez les propriétés DatabaseName, UserID et Password de l'objet ConnectionInfo sur les valeurs
requises pour la connexion.
Remarque
Si vous définissez uniquement les propriétés DatabaseName, UserID et Password, vous êtes connecté au
serveur par défaut de la base de données spécifiée dans le rapport. Toutefois, si vous affectez une autre
propriété ServerName, vous pouvez rediriger le rapport vers un serveur différent au moment de
l'exécution.
3.
Extrayez l'instance TableLogOnInfosde la propriété LogOnInfo de la classe CrystalReportViewer.
Remarque
TableLogOnInfos est une classe indexée contenant des instances de la classe TableLogOnInfo.
4.
Pour chaque objet TableLogOnInfo de la collection, définissez la ConnectionInfo propriété
d'TableLogOnInfoobjet sur l'ConnectionInfo objet.
Exemple
Private
String,
Dim
Dim
For
Sub setDatabaseLogon(ByVal databaseName As String, ByVal userName As
ByVal password As String)
myCconnectionInfo As New ConnectionInfo()
logOnInfos As TableLogOnInfos = crystalReportViewer.LogOnInfo
Each logOnInfo As TableLogOnInfo In logOnInfos
logOnInfo.ConnectionInfo = myCconnectionInfo
Next
myCconnectionInfo.DatabaseName = databaseName
myCconnectionInfo.UserID = userName
myCconnectionInfo.Password = password
End Sub
private void setDatabaseLogon(String databaseName, String userName, String
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
157
password){
ConnectionInfo connectionInfo = new ConnectionInfo();
TableLogOnInfos logOnInfos = crystalReportViewer.LogOnInfo;
foreach(TableLogOnInfo logOnInfo in logOnInfos) {
logOnInfo.ConnectionInfo = connectionInfo;
}
connectionInfo.DatabaseName = databaseName;
connectionInfo.UserID = userName;
connectionInfo.Password = password;
}
1.4.4.2
Connexion aux IDataReader
De nombreux projets .NET utilisent les DataReader, plutôt que les DataSets, pour extraire des données. Par
exemple, le moyen le plus courant de lier un contrôle (tel que le contrôle GridView) aux données consiste à créer
une méthode qui extrait les données par le biais d'un DataReader, puis de renvoyer ces données à partir de la
méthode via une interface IDataReader.
Le concepteur de rapports SAP Crystal incorporé peut accéder à l'interface IDataReader si certaines conditions
sont remplies :
●
Les données doivent être renvoyées à partir d'une méthode, par le biais de l'interface IDataReader.
●
Le fournisseur de données utilisé dans la méthode doit être le fournisseur de données OleDb .NET.
Remarque
Les classes de ce fournisseur de données se trouvent dans l'espace de noms System.Data.OleDb.
●
La méthode doit être partagée [Visual Basic] ou statique [C#].
●
La classe contenant cette méthode doit faire partie d'un projet de bibliothèque de classes et être compilée
dans un assembly.
Pour créer un rapport Crystal utilisant une instance d'IDataReader comme source de données, vous devez créer
une bibliothèque de classes à l'aide d'une méthode statique qui renvoie un objet IDataReader. Après avoir
compilé cette bibliothèque de classes, l'assemblage qui en résulte fait office de source de données pour votre
rapport.
Remarque
Vous ne serez pas en mesure de définir la source de données de votre rapport sur IDataReader tant que vous
n'aurez pas créé et compilé la bibliothèque de classes.
Informations associées
Tutoriel : Connexion aux IDataReader [page 563]
Dans ce tutoriel sur la connectivité des données, vous allez apprendre à vous connecter à une instance
d'IDataReader.
158
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.4.4.3
Connexion aux DataSets ADO.NET
Un objet DataSet ADO.NET est une collection de classes de DataSets créées en mémoire. Vous pouvez créer un
DataSet ADO.NET à partir de diverses sources de données (y compris à partir de bases de données Access,
Oracle et SQL Server) à l'aide du concepteur de DataSets ADO.NET de Visual Studio. Le concepteur de DataSets
ADO.NET affiche une vue graphique de la base de données avec ses tables, ses champs et les types
correspondants. Vous pouvez faire glisser des tables de l'Explorateur de serveurs vers un fichier de schéma dans
l'onglet Schéma du concepteur.
Pour créer un rapport Crystal utilisant un ensemble de données ADO.Net comme source de données, vous devez
créer une bibliothèque de classes à l'aide d'une méthode statique ou d'une propriété qui renvoie un objet
DataSet. Après avoir compilé cette bibliothèque de classes, l'assemblage qui en résulte fait office de source de
données pour votre rapport.
Remarque
Vous ne pourrez pas définir la source de données de votre rapport sur le DataSet tant que vous n'aurez pas
créé et compilé la bibliothèque de classes.
Dans quels cas utiliser un DataSet
Les DataSets sont utiles lorsque :
●
Les données du DataSet doivent être modifiées après l'exécution de la requête.
●
Les données de plusieurs sources de données doivent être mises en relation.
Remarque
Les DataSets sont une représentation XML des données qui proviennent généralement d'une base de
données. Un DataSet correspond non pas à une seule table mais à un groupe de tables dans une base de
données. Cela peut présenter un problème d'évolutivité au niveau des rapports. Si un rapport extrait
plusieurs tables dans un DataSet et qu'une jointure est requise entre ces tables, c'est au rapport
d'effectuer la jointure lorsqu'il interagit séparément avec chaque table. Ce processus n'est pas efficace. Il
est toujours plus judicieux de placer les instructions de jointure dans la requête que vous utilisez pour
remplir le DataSet. Cela génère une "pseudo-table" unique de données pré-jointes dans votre DataSet, qui
"libère" ainsi le rapport et lui permet de se consacrer à l'affichage des données.
Informations associées
Eviter d'utiliser des DataSets pour des requêtes simples [page 68]
En cas d'utilisation des DataSets, les mettre en mémoire cache [page 69]
Tutoriel : Connexion aux DataSets ADO.NET [page 549]
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
159
1.4.4.4
Connexion aux ensembles d'objets
SAP Crystal Reports 2008 a la capacité de créer des rapports à partir de données d'objet. Les données d'objet
peuvent être simples, telles que des données de chaîne ou d'entier. ou peuvent être complexes, telles qu'une
classe ou une collection. Les collections doivent être un simple tableau ou un objet IEnumerable. SAP Crystal
Reports peut accéder à ces collections d'objets comme à une source de données normale, fournissant une source
de données polyvalente pour vos rapports Crystal.
Une collection d'objets permet d'écrire une classe personnalisée qui remplit un objet avec des données par
programmation ou de façon dynamique. Vous pouvez également rédiger vos propres objets d'accès aux données
en augmentant le nombre de sources de données fournies avec une installation par défaut SAP Crystal Reports,
version développeur pour Microsoft Visual Studio.
Pour utiliser une collection d'objets comme source de données, vous devez créer une classe qui fournit au moins
une propriété publique. Si la propriété renvoie des données simples, telles que des valeurs de chaîne ou d'entier,
SAP Crystal Reports traite ces données en tant que champ d'une base de données. Si la propriété renvoie des
données complexes, telles qu'un objet ArrayList, chaque objet de la collection d'objets fournit une ligne de détails
dans le rapport.
Accès aux données au sein des objets
Les versions antérieures de SAP Crystal Reports permettent d'accéder à des propriétés qui renvoient uniquement
des types de données simples. Par exemple, si un objet contient une propriété qui renvoie une chaîne, cette
chaîne est fournie en tant que champ normal au moment de la conception. Mais si l'objet contient une propriété
qui renvoie un objet, les données au sein de l'objet renvoyé ne sont pas fournies, même s'il contient des données
simples.
SAP Crystal Reports 2008 et les versions ultérieures permettent d'accéder aux données contenues dans des
types de données complexes grâce à une expansion des types complexes. Au moment de la conception, l'objet
renvoyé apparaît en tant que source de données hiérarchique. Les données complexes peuvent être étendues
pour révéler tout type de données simples qu'elles fournissent et qui peuvent ensuite être ajoutées au rapport.
Pour activer l'expansion des types complexes, ajoutez l'attribut CrystalComplexTypeExpansionLevels à la
propriété qui renvoie l'objet que vous souhaitez étendre. Vous devez définir l'attribut
CrystalComplexTypeExpansionLevels sur une valeur supérieure à 1 pour explorer en avant les données de
classe. Si vous ne définissez pas l'attribut CrystalComplexTypeExpansionLevels, SAP Crystal Reports ne
pourra pas accéder aux données de champ au sein de la classe.
Exemple
Exposition de données simples
Cet exemple comporte deux objets : Employee et Person. Lorsque l'objet Employee est ajouté au rapport
comme source de données, la propriété Employee.EmployeeID est fournie en tant que champ valide ;
toutefois, la propriété Employee.Person n'est pas visible, car elle renvoie un type de données complexes.
Class Employee
Private _employeeID As Integer
Private _person As New Person()
160
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Public Property EmployeeID() As Integer
Get
Return _employeeID
End Get
Set(ByVal value As Integer)
_employeeID = value
End Set
End Property
Public ReadOnly Property Person() As Person
Get
Return _person
End Get
End Property
End Class
Class Person
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
End Class
class Employee
{
int _employeeID;
Person _person = new Person();
public int EmployeeID
{
get { return _employeeID; }
set { _employeeID = value; }
}
}
public Person Person
{
get { return _person; }
}
class Person
{
private String _name;
}
public String Name
{
get { return _name; }
set { _name = value; }
}
Exemple
Autorisation d'expansion de types complexes
Dans l'exemple précédent, la propriété Employee.Person n'est pas visible, car elle renvoie un type de
données complexes.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
161
Dans cet exemple, l'attribut CrystalComplexTypeExpansionLevels a été ajouté à la propriété
Employee.Person, ce qui permet au concepteur du rapport d'afficher un nouveau champ dans l'Explorateur
de champs : Person-Name.
Class Employee
Private _employeeID As Integer
Private _person As New Person()
Public Property EmployeeID() As Integer
Get
Return _employeeID
End Get
Set(ByVal value As Integer)
_employeeID = value
End Set
End Property
_
<CrystalDecisions.CrystalReports.Engine.CrystalComplexTypeExpansionLevels(1)>
Public ReadOnly Property Person() As Person
Get
Return _person
End Get
End Property
End Class
Class Person
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
End Class
class Employee
{
int _employeeID;
Person _person = new Person();
public int EmployeeID
{
get { return _employeeID; }
set { _employeeID = value; }
}
}
[CrystalDecisions.CrystalReports.Engine.CrystalComplexTypeExpansionLevels(1)]
public Person Person
{
get { return _person; }
}
class Person
{
private String _name;
public String Name
{
get { return _name; }
162
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
}
}
set { _name = value; }
Informations associées
Tutoriels : Connexion aux collections d'objets [page 574]
Dans ce tutoriel sur la connectivité des données, vous allez apprendre à utiliser une collection d'objets comme
source de données d'un rapport Crystal.
1.4.4.5 Activation de la mise en cache des rapports dans un
site Web SAP Crystal Reports
Prérequis
Ces étapes font appel aux tâches guidées. Cette fonctionnalité est disponible dans Visual Studio 2005 et versions
ultérieures.
Contexte
Les projets Windows qui utilisent Crystal Reports, version développeur pour Microsoft Visual Studio font appel à
la même structure de mise en cache que celle utilisée dans Visual Studio .NET 2003. A savoir, lorsqu'un rapport
est ajouté à un projet, deux classes de rapport wrapper sont générées : une classe de rapport standard et une
classe de rapport mis en cache.
Si aucune classe wrapper de rapport n'est généré pour un rapport, la mise en cache est contrôlée via la propriété
EnableCaching du contrôle CrystalReportSource.
Procédure
1.
Créer un site Web Crystal Reports, version développeur pour Microsoft Visual Studio.
2.
Dans la page Default.aspx, sélectionnez le mode Source.
3.
Localisez la balise XML du contrôle CrystalReportSource.
4.
Modifiez la valeur de la propriété EnableCaching en la faisant passer de False à True.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
163
Remarque
Pour en savoir plus sur la mise en cache des rapports, sur la version mise en cache de la classe de rapport
wrapper et sur l'opportunité de faire ou non appel à la mise en cache, voir Cache et persistance du modèle
d'objet ReportDocument [page 59].
Exemple
<CR:CrystalReportSource ID="myCrystalReportSource" runat="server"
EnableCaching="True">
<Report FileName="CrystalReport1.rpt">
</Report>
</CR:CrystalReportSource>
1.4.4.6
Utilisation de LINQ
LINQ (Language Integrated Query) est un composant Microsoft Framework permettant d'effectuer des requêtes
sur tout type de source de données.
SAP Crystal Reports peut créer des rapports sur une collection d'objets personnalisés. Cela permet de mieux
contrôler l'affichage des informations dans un rapport. Toutefois, la constitution d'une collection d'objets peut se
révéler compliquée si cette collection contient des données d'agrégat issues de plusieurs sources de données.
L'utilisation de LINQ simplifie le processus de reporting sur une collection d'objets et permet d'exécuter des
requêtes de type SQL sur des objets personnalisés. Par exemple, supposons que vous ayez une base de données
SQL, un fichier XML et un fichier Microsoft Access contenant des données commerciales. LINQ permet
d'effectuer une requête à partir des trois sources de données et d'afficher les données dans un rapport unique.
LINQ permet d'effectuer les opérations suivantes :
●
Constituer une collection d'objets à partir de plusieurs sources de données.
●
Lier deux collections d'objets.
●
Regrouper des éléments au sein d'une collection.
Vous devez installer les logiciels suivants pour utiliser LINQ avec SAP Crystal Reports :
●
Visual Studio 2008 ou une version plus récente
●
Microsoft .NET Framework version 3.5
●
SAP Crystal Reports Basic pour Visual Studio 2008 ou une version plus récente
Informations associées
Définition de la source de données [page 151]
164
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.4.5
Visualisation d'un rapport
Le contrôle CrystalReportViewer permet de visualiser des rapports Crystal. Il existe deux contrôles
CrystalReportViewer dans le SDK SAP Crystal Reports .NET. Pour un site Web, utilisez la classe
CrystalDecisions.Web.CrystalReportViewer. Pour une application Windows, utilisez la classe
CrystalDecisions.Windows.Forms.CrystalReportViewer.
Pour visualiser un rapport, vous devez d'abord ajouter un contrôle CrystalReportViewer à votre application, puis
affecter la propriété ReportSource de ce contrôle à un rapport. Le processus d'affectation d'un rapport à un
contrôle CrystalReportViewer est appelé liaison de rapports.
Il existe différentes manières de lier un contrôle CrystalReportViewer à un rapport. Cette section détaille chaque
scénario de liaison de rapports, ainsi que les considérations générales concernant la visualisation de rapport.
Classes utilisées pour la visualisation de rapports
●
CrystalDecisions.Windows.Forms.CrystalReportViewer
Fournit des propriétés, des méthodes et des événements permettant de modifier ou d'extraire les
informations sur la manière dont fonctionne et s'affiche le contrôle CrystalReportViewer.
●
CrystalDecisions.Web.CrystalReportViewer
Fournit des propriétés, des méthodes et des événements permettant de modifier ou d'extraire les
informations sur la manière dont fonctionne et s'affiche le contrôle CrystalReportViewer.
●
CrystalDecisions.CrystalReports.Engine.ReportDocument
Représente un rapport et contient les propriétés et les méthodes permettant de définir, mettre en forme,
charger, exporter et imprimer ce rapport.
Informations associées
Comment utiliser les contrôles visualiseur de rapports ? [page 43]
Contrôle CrystalReportViewer [page 43]
Scénarios de liaison de rapports [page 170]
1.4.5.1
Comparaison des rapports incorporés et non
incorporés
Différence entre un rapport incorporé et un rapport non incorporé
Un rapport incorporé est un rapport qui a été importé ou créé dans un projet Visual Studio. Lorsqu'un rapport est
incorporé dans un projet, une classe wrapper est automatiquement générée pour ce rapport. Cela permet
d'accéder au rapport par son nom, plutôt que par le biais d'une instance ReportDocument distincte.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
165
Un rapport non incorporé est un rapport externe au projet Visual Studio. Il existe de nombreuses manières
d'accéder au rapport et de le charger dans un modèle d'objet (afin de pouvoir interagir avec lui par
programmation), mais ce rapport restera toujours externe au projet.
Fonctionnement d'un rapport incorporé
Lorsqu'un rapport est importé ou créé dans un projet, une classe wrapper (du même nom que le rapport) est
générée. Cette classe wrapper inclut ou représente le rapport dans le projet. Une fois cette opération terminée,
tout le code du projet interagit avec la classe créée pour représenter le rapport plutôt qu'avec le rapport luimême.
Lorsque le projet est compilé, le rapport et sa classe wrapper sont incorporés dans l'assembly, comme pour
n'importe quelle autre ressource du projet.
Remarque
Avec .Net Framework, la taille des fichiers DLL est limitée. Cela signifie que la compilation du projet peut
échouer s'il contient des rapports incorporés volumineux. Pour les projets utilisant des rapports volumineux,
désactivez les données enregistrées dans le rapport ou modifiez votre projet de sorte à utiliser des rapports
non incorporés. La taille limite varie selon les versions de .Net Framework. Pour en savoir plus, reportez-vous à
la documentation de .Net Framework.
La classe wrapper d'un rapport s'étend à partir de la classe de base commune ReportDocument. Elle hérite de
toutes les propriétés et méthodes de ReportDocument.
La classe ReportDocument est la classe racine du modèle d'objet ReportDocument.
Fonctionnement d'un rapport non incorporé
L'accès à un rapport non incorporé se fait toujours depuis l'extérieur et le SDK peut y accéder de diverses
manières :
●
Le rapport peut être situé sur le disque dur avec un chemin d'accès au répertoire de fichiers.
●
Le rapport peut être exposé en tant que service Web de rapports.
●
Le rapport peut faire partie d'un groupe de rapports exposés via les services Crystal.
Les rapports non incorporés ne sont jamais importés dans un projet, et par conséquent, aucune classe wrapper
n'est créée (contrairement aux rapports incorporés). A la place, le rapport non incorporé est chargé dans un des
modèles d'objet au moment de l'exécution, de l'une des manières suivantes :
●
Le rapport est chargé par et dans le modèle d'objet ReportDocument à l'aide de la méthode
ReportDocument.Load().
●
Le modèle d'objet CrystalReportViewer utilise la propriété CrystalReportViewer.ReportSource pour lier
directement le rapport au contrôle.
166
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Comment choisir entre un rapport incorporé ou non incorporé
Si vous souhaitez simplifier le déploiement de votre projet, utilisez des rapports incorporés. Vous aurez moins de
fichiers à gérer et aucun risque de placement incorrect des rapports suite à un chemin d'accès erroné. Cette
solution est également plus sûre dans la mesure où les rapports ne sont pas exposés pour les modifications.
S'ils garantissent simplicité et sécurité, les rapports incorporés impliquent une charge de travail plus importante.
Ils ne peuvent pas être modifiés sans recompiler le projet dans son intégralité. Si des rapports doivent être
modifiés régulièrement, ne les incorporez pas. Leur accès et leur modification seront ainsi facilités et vous n'aurez
pas à recompiler les assemblys à chaque fois. En outre, la taille des rapports incorporés est limitée. Les rapports
très volumineux ne peuvent pas être compilés en tant que ressources incorporées.
Les scénarios de liaison de rapports vous indiqueront de nombreuses manières de lier des rapports incorporés et
non incorporés. Vous verrez également comment utiliser ReportDocument en tant que classe générique pour l'un
comme pour l'autre type de rapport. Cela permet de limiter au maximum les modifications de code, si vous
décidez de passer d'une solution à une autre.
Incorporation de rapports dans un projet Web
La prise en charge des rapports incorporés est activée par le biais d'un Build Provider qui compile les rapports
sous la forme d'un fichier DLL. Pour incorporer un rapport dans un fichier DLL lors de la compilation, vous devez
attribuer au paramètre embedRptInResourc de votre fichier web.config la valeur True. Pour accéder à la classe
du wrapper via Intellisense, vous devez placer le rapport dans le dossier App_Code/Global de votre solution.
Remarque
Si le rapport est situé dans le répertoire App_Code/Global et que le paramètre embedRptInResource est
défini sur False, le fichier du rapport ne sera pas copié dans l'emplacement cible au moment de la publication
du site Web. Pour contourner ce problème, copiez votre site Web dans l'emplacement cible.
embedRptInResour
ce
Emplacement du
rapport
Intellisense
disponible
Publier pour
déployer
Copier pour
déployer
True
App_Code/Global
X
X
X
True
En dehors de
X
X
X
X
App_Code/Global,
mais dans le projet
False
App_Code/Global
False
En dehors de
X
X
App_Code/Global,
mais dans le projet
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
167
Informations associées
Configuration du fichier Web.Config [page 20]
1.4.5.2
Définition de la source du rapport
Le contrôle CrystalReportViewer n'affiche qu'un rapport à la fois. Pour indiquer au contrôle le rapport qu'il doit
afficher, vous devez lier sa propriété ReportSource à un rapport particulier. Au moment de l'exécution, le contrôle
charge le rapport lié à la propriété ReportSource et l'affiche.
Un contrôle CrystalReportViewer peut être lié à un fichier sur un disque, à un objet ReportDocument ou à un objet
ReportClientDocument. La liaison à un objet fournit des fonctionnalités supplémentaires par le biais des modèles
d'objet ReportDocument et ReportClientDocument. Il s'agit de la manière la plus simple de définir la propriété
ReportSource.
Dans sa forme la plus simple, l'affectation se présente de la manière suivante :
crystalReportViewer1.ReportSource = "C:\WorldSalesReport.rpt"
crystalReportViewer1.ReportSource = "C:\\WorldSalesReport.rpt";
Dans cet exemple, le rapport est lié au contrôle directement à partir de son chemin d'accès au répertoire de
fichiers.
Contrôle CrystalReportSource
Le contrôle CrystalReportSource est un élément du modèle de développement d'applications avec balises fourni
avec ASP.NET version 2.0.
Remarque
Le contrôle CrystalReportSource n'est disponible que pour les sites Web.
Dans la structure de contrôle DataSource, les contrôles .NET visuels se connectent aux contrôles DataSource non
visuels (contrôles qui ne gèrent pas les informations d'affichage). Cette nouvelle structure DataSource encapsule
les informations de connectivité des données écrites sous forme de lignes de code dans les contrôles .NET insérés
dans le Web Form.
168
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.4.5.2.1
Liaison du contrôle CrystalReportViewer à un
fichier sur disque
Contexte
La manière la plus simple de lier un contrôle CrystalReportViewer à un rapport Crystal est de définir la propriété
ReportSource sur un emplacement du disque. Ce rapport non incorporé est affiché lors de l'exécution de
l'application.
Cette opération lie le rapport directement au contrôle. Toutes les interactions par programmation avec le rapport
doivent être effectuées dans le modèle d'objet limité CrystalReportViewer.
Procédure
1.
Ajoutez un contrôle CrystalReportViewer à l'application Windows ou au site Web.
2.
Ouvrez le Web Form ou Windows Form.
3.
Dans le menu Affichage, cliquez sur Code.
4.
Définissez la propriété ReportSource sur l'emplacement du rapport sur votre système de fichiers local.
○
Lors de l'utilisation d'une application Windows Form ou d'un site Web :
myCrystalReportViewer.ReportSource = "C:\MyReport.rpt"
crystalReportViewer.ReportSource = "C:\\MyReport.rpt";
○
Lors de l'utilisation d'une application WPF :
myCrystalReportViewer.ViewerCore.ReportSource = "C:\MyReport.rpt"
crystalReportViewer.ViewerCore.ReportSource = "C:\\MyReport.rpt";
1.4.5.2.2
Liaison du contrôle CrystalReportViewer à un objet
ReportDocument
Contexte
Ce scénario de liaison de rapports permet d'utiliser ReportDocument, le modèle d'objet le plus puissant, avec des
rapports non incorporés (externes à votre projet).
Au lieu de lier directement les chemins d'accès des répertoires au visualiseur, vous les transmettez à la méthode
ReportDocument.Load(). Vous liez ensuite le contrôle CrystalReportViewer à l'objet ReportDocument.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
169
Procédure
1.
Ajoutez un contrôle CrystalReportViewer à l'application Windows ou au site Web.
2.
Ouvrez le Web Form ou Windows Form.
3.
Dans le menu Affichage, cliquez sur Code.
4.
Instanciez un nouvel objet ReportDocument et chargez un rapport depuis le disque à l'aide de la méthode
ReportDocument.Load.
Dim rd As ReportDocument = New ReportDocument()
rd.Load(reportPath)
ReportDocument rd = new ReportDocument();
rd.Load(reportPath);
5.
Définissez la propriété ReportSource sur l'objet ReportDocument.
○
Lors de l'utilisation d'une application Windows Form ou d'un site Web :
myCrystalReportViewer.ReportSource = rd
crystalReportViewer.ReportSource = rd;
○
Lors de l'utilisation d'une application WPF :
myCrystalReportViewer.ViewerCore.ReportSource = rd
crystalReportViewer.ViewerCore.ReportSource = rd;
1.4.5.3
Scénarios de liaison de rapports
SAP Crystal Reports, version développeur pour Microsoft Visual Studio, propose plusieurs méthodes pour
associer un contrôle CrystalReportViewer à un rapport. Afin de vous aider à choisir le scénario de liaison de
rapports le mieux adapté à votre application, cette section récapitule les avantages et les inconvénients des
scénarios recommandés et explique pourquoi certains sont plus utilisés que d'autres.
Remarque
La plupart des sites Web ou des projets Windows peuvent reposer sur les deux scénarios de liaison les plus
simples : la liaison à un rapport incorporé ou non incorporé.
Après avoir lu cette section, vous pouvez consulter la liste détaillée de tous les scénarios afin d'examiner en détail
toutes les options disponibles dans le SDK.
170
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Scénarios de liaison recommandés pour SAP Crystal Reports
Les scénarios qui lient les rapports à l'aide du modèle d'objet ReportDocument sont généralement plus utilisés
que ceux qui font appel au modèle d'objet CrystalReportViewer. Cela tient au fait que le modèle d'objet
ReportDocument fournit une interface API plus complète pour programmer l'interaction avec le rapport.
La plupart des utilisateurs préfèrent le scénario Liaison à une classe de rapport incorporé [page 200]. S'il n'est pas
le plus à même d'optimiser les performances, ce scénario est le plus simple d'utilisation : vous ajoutez un rapport
au projet pour créer une classe wrapper de rapport, vous instanciez cette classe wrapper, puis vous la
transmettez au contrôle CrystalReportViewer. Etant donné que la classe wrapper du rapport hérite des
caractéristiques de la classe de base ReportDocument, vous avez accès à toutes les fonctionnalités du modèle
d'objet ReportDocument.
Une autre méthode courante de liaison des rapports est décrite dans Liaison à un rapport non incorporé chargé
dans la classe ReportDocument [page 202]. Ce scénario offre également un accès à toutes les fonctionnalités du
modèle d'objet ReportDocument avec en plus l'avantage des rapports non incorporés qui peuvent être modifiés
sans avoir à recompiler l'application dans son intégralité.
Scénarios de liaison recommandés pour le Report Application Server
Avec le serveur RAS et selon la manière dont vous configurez votre projet, vous pouvez utiliser des scénarios
supplémentaires de liaison de rapports.
●
Si vous utilisez SAP Crystal Reports 10 avec le RAS 10, vous pouvez transférer des projets créés à l'origine
dans SAP Crystal Reports (en utilisant des rapports incorporés) vers le serveur RAS et le modèle d'objet
ReportClientDocument, en ajoutant uniquement deux lignes de code par rapport.
●
Pour optimiser le scénario ci-dessus, faites des copies de vos rapports incorporés sur le serveur RAS et
dirigez ce dernier de manière à ce qu'il utilise ces copies.
Scénarios de liaison recommandés pour SAP Crystal Reports Server ou la
plateforme SAP BusinessObjects Business Intelligence
Si vous avez procédé à une mise à niveau vers SAP Crystal Reports Server ou la plateforme SAP BusinessObjects
Business Intelligence, vous avez le choix entre quatre scénarios de liaison de rapports recommandés. Votre choix
dépendra de vos attentes en matière de modification des rapports et d'évolutivité :
●
Vous pouvez afficher un rapport qui ne nécessite aucun modification par programmation avec une vitesse et
des performances optimales.
●
Vous pouvez modifier l'affichage de votre rapport par programmation en accédant au modèle d'objet
ReportClientDocument.
●
Si vous utilisez SAP Crystal Reports, version développeur pour Microsoft Visual Studio avec
SAP Crystal Reports Server ou la plateforme SAP BusinessObjects Business Intelligence, vous pouvez
transférer des projets initialement créés dans SAP Crystal Reports (en utilisant des rapports incorporés) vers
SAP Crystal Reports Server ou la plateforme SAP BusinessObjects Business Intelligence, tout en conservant
le code de rapport existant, en publiant des copies des rapports incorporés dans SAP Crystal Reports Server
ou dans la plateforme SAP BusinessObjects Business Intelligence.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
171
●
Vous pouvez accéder à votre rapport en tant qu'instance d'InfoObject dans la structure de plateforme, ce
qui vous permet de planifier ce rapport et d'en modifier les paramètres.
Informations associées
Contrôles du visualiseur de rapports [page 35]
1.4.5.3.1
Liaison de rapports à l'aide du modèle d'objet
CrystalReportViewer
Le modèle d'objet CrystalReportViewer est le modèle d'objet le plus simple. Etant donné la portée limitée de ses
fonctionnalités, son utilisation est généralement déconseillée au profit du modèle d'objet plus complet
ReportDocument.
Informations associées
Modèle d'objet CrystalReportViewer [page 37]
Liaison au chemin d'accès d'un répertoire de fichiers par code [page 172]
1.4.5.3.1.1
Liaison au chemin d'accès d'un répertoire de
fichiers par code
Modèle d'objet
Ce scénario de liaison de rapports utilise le modèle d'objet CrystalReportViewer.
Emplacement des rapports
Les rapports se trouvent dans un répertoire de fichiers.
Description
Il s'agit du scénario de liaison de rapports le plus simple : vous liez un rapport situé dans le répertoire de fichiers
au contrôle CrystalReportViewer par le biais de son chemin d'accès.
172
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Avantages
●
Peu de maintenance : les rapports sont ajoutés, supprimés ou modifiés sans avoir à recompiler l'application.
●
Implémentation simplifiée : il est inutile de déclarer et d'instancier les classes. Ce scénario contourne
l'utilisation du modèle d'objet ReportDocument en transférant directement un rapport au contrôle
CrystalReportViewer.
Inconvénients
●
Distribution limitée : les rapports restent généralement stockés sur le même ordinateur que l'application, en
raison des complications générées par l'octroi au compte utilisateur ASPNET de droits d'accès à un autre
ordinateur du réseau.
●
Modèle d'objet limité : ce scénario de liaison n'offre qu'un modèle d'objet limité qui fait partie du contrôle
CrystalReportViewer.
Informations associées
Liaison au chemin d'accès d'un répertoire de fichiers via la fenêtre Propriétés [page 174]
1.4.5.3.1.1.1
Liaison du contrôle CrystalReportViewer à un
fichier sur disque
Contexte
La manière la plus simple de lier un contrôle CrystalReportViewer à un rapport Crystal est de définir la propriété
ReportSource sur un emplacement du disque. Ce rapport non incorporé est affiché lors de l'exécution de
l'application.
Cette opération lie le rapport directement au contrôle. Toutes les interactions par programmation avec le rapport
doivent être effectuées dans le modèle d'objet limité CrystalReportViewer.
Procédure
1.
Ajoutez un contrôle CrystalReportViewer à l'application Windows ou au site Web.
2.
Ouvrez le Web Form ou Windows Form.
3.
Dans le menu Affichage, cliquez sur Code.
4.
Définissez la propriété ReportSource sur l'emplacement du rapport sur votre système de fichiers local.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
173
○
Lors de l'utilisation d'une application Windows Form ou d'un site Web :
myCrystalReportViewer.ReportSource = "C:\MyReport.rpt"
crystalReportViewer.ReportSource = "C:\\MyReport.rpt";
○
Lors de l'utilisation d'une application WPF :
myCrystalReportViewer.ViewerCore.ReportSource = "C:\MyReport.rpt"
crystalReportViewer.ViewerCore.ReportSource = "C:\\MyReport.rpt";
1.4.5.3.1.2
Liaison au chemin d'accès d'un répertoire de
fichiers via la fenêtre Propriétés
Modèle d'objet
Ce scénario de liaison de rapports utilise le modèle d'objet CrystalReportViewer.
Emplacement des rapports
Les rapports se trouvent dans un répertoire de fichiers.
Description
Ce scénario constitue une alternative au scénario de liaison de rapports le plus simple : Liaison au chemin d'accès
d'un répertoire de fichiers par code [page 172]. Vous liez un rapport situé dans un répertoire de fichiers au contrôle
CrystalReportViewer par le biais de son chemin d'accès, mais définissez cette affectation dans la fenêtre
Propriétés, directement à l'aide de la propriété DataBindings>ReportSource ou de la propriété
ReportSource.
Dans un projet Web, le chemin d'accès au rapport est inséré directement dans le code HTML de la page ASPX
plutôt que dans le code de la classe code-behind.
Avantages
●
174
Aperçu au moment de la conception : vous pouvez afficher un aperçu du rapport au moment de sa
conception, dans le Web Form ou le Windows Form.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Remarque
L'aperçu au moment de la conception est une fonctionnalité dont les projets Web bénéficiaient déjà, mais
qui est nouvelle pour les projets Windows.
●
Peu de maintenance : les rapports sont ajoutés, supprimés ou modifiés sans avoir à recompiler l'application.
●
Implémentation simplifiée : il est inutile de déclarer et d'instancier les classes. Ce scénario contourne
l'utilisation du modèle d'objet ReportDocument en transférant directement un rapport au contrôle
CrystalReportViewer.
Inconvénients
●
Pour les applications Web, étant donné que la liaison se fait au niveau de la page HTML, vous devez appeler la
méthode DataBind() du contrôle CrystalReportViewer dans la classe code-behind.
Remarque
Cette restriction a été supprimée dans SAP Crystal Reports pour Visual Studio 2005.
●
Distribution limitée : les rapports restent généralement stockés sur le même ordinateur que l'application, en
raison des complications générées par l'octroi au compte utilisateur ASPNET de droits d'accès à un autre
ordinateur du réseau.
●
Modèle d'objet limité : ce scénario de liaison n'offre qu'un modèle d'objet limité qui fait partie du contrôle
CrystalReportViewer.
Informations associées
Liaison à un contrôle CrystalReportSource (sites Web dans Visual Studio) [page 176]
1.4.5.3.1.2.1
Pour lier un rapport par l'intermédiaire du
chemin d'accès à son répertoire de fichiers à l'aide de la
fenêtre Propriétés
Procédure
1.
Créez un projet Web ou Windows.
2.
Dans la boîte à outils, faites glisser un contrôle CrystalReportViewer dans un Web Form ou un
Windows Form.
3.
Cliquez sur le contrôle CrystalReportViewer pour le sélectionner.
4.
Dans la fenêtre Propriétés, affectez à la propriété ReportSource le chemin d'accès à un répertoire de
fichiers.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
175
Remarque
Le chemin d'accès au répertoire de fichiers pointe sur les exemples de rapports de Visual Studio 2005.
En raison de la fonctionnalité d'aperçu au moment de la conception, le rapport s'affiche en mode Aperçu.
C:\Program Files\Microsoft Visual Studio 8.0\Crystal Reports\Samples\fr\Reports
\Feature Examples\Hierarchical Grouping.rpt
5.
Pour visualiser le rapport, générez et exécutez votre projet.
1.4.5.3.1.3
Liaison à un contrôle CrystalReportSource (sites
Web dans Visual Studio)
Modèle d'objet
Ce scénario de liaison de rapports utilise le modèle d'objet CrystalReportViewer.
Emplacement des rapports
Les rapports se trouvent dans un répertoire de fichiers.
Description
Ce scénario constitue une alternative au scénario de liaison de rapports le plus simple : Liaison au chemin d'accès
d'un répertoire de fichiers par code [page 172]. Dans ce scénario, vous liez un rapport à l'aide du nouveau modèle
de développement d'applications avec balises et programmation allégée d'ASP.NET version 2.0.
Remarque
Ce scénario de liaison de rapports n'est disponible que pour les sites Web.
Dans ce scénario, vous utilisez des tâches guidées pour créer un contrôle CrystalReportSource. Vous
sélectionnez ensuite un rapport pour le contrôle CrystalReportSource.
Au lieu d'écrire manuellement du code pour interagir avec le rapport et permettre son accès au modèle d'objet
CrystalReportViewer, vous effectuez des sélections dans le panneau des tâches guidées (mode Design) ou vous
saisissez directement des déclarations XML (mode Source).
Avec les déclarations XML, vous pouvez associer les balises <Parameters> et <DataSources>, imbriquées dans la
balise <Report>, à un ensemble de contrôles non visuels accessibles à partir des structures Parameter et
DataSource.
176
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Remarque
Les structures Parameter et DataSource sont de nouvelles fonctionnalités d'ASP.NET 2.0. Elles incluent des
contrôles tels que ControlParameter ou QueryStringParameter et SqlDataSource ou JetDataSource.
Le modèle de développement d'applications avec balises est un moyen simple et rapide d'interagir de manière
limitée avec le rapport sans avoir à écrire du code.
Avantages
●
Aperçu au moment de la conception : vous pouvez afficher un aperçu du rapport au moment de sa
conception, dans le Web Form ou le Windows Form.
●
Interaction simplifiée avec le rapport : le modèle de développement d'applications avec balises, plus simple et
allégé en programmation, peut être utilisé pour interagir avec le rapport.
●
Avantages identiques à ceux répertoriés dans le scénario Liaison au chemin d'accès d'un répertoire de fichiers
par code [page 172].
Inconvénients
●
Distribution limitée : les rapports restent généralement stockés sur le même ordinateur que l'application, en
raison des complications générées par l'octroi au compte utilisateur ASPNET de droits d'accès à un autre
ordinateur du réseau.
●
Modèle d'objet limité : ce scénario de liaison n'offre qu'un modèle d'objet limité qui fait partie du contrôle
CrystalReportViewer.
1.4.5.3.1.3.1
Liaison à un contrôle CrystalReportSource à
l'aide du modèle de programmation allégée
Procédure
1.
Faites glisser un contrôle CrystalReportViewer sur le Web Form.
2.
Dans l'angle supérieur droit du contrôle CrystalReportViewer, cliquez sur le petit bouton triangulaire.
Le panneau des tâches guidées Tâches CrystalReportViewer s'affiche. Dans la liste Sélectionner la source du
rapport, la valeur <Aucune> s'affiche.
3.
Cliquez sur la liste Sélectionner la source du rapport, puis sélectionnez <Source du nouveau rapport…>.
La boîte de dialogue Créer la source du rapport s'ouvre.
4.
Dans la zone Indiquer le nom du contrôle CrystalReportSource, laissez l'entrée par défaut
CrystalReportSource1.
5.
Cliquez sur la liste Spécifier un rapport pour le contrôle CrystalReportSource, puis sélectionnez <Parcourir...>.
L'autre sélection possible est <Nouveau rapport>. Cette option permet de créer un rapport Crystal.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
177
6.
Sélectionnez un rapport à afficher dans le contrôle CrystalReportViewer et cliquez sur OK.
7.
Cliquez à nouveau sur OK pour fermer la boîte de dialogue Créer la source du rapport.
Informations associées
Tutoriel : Configuration par programmation allégée d'un site Web avec SAP Crystal Reports à l'aide du panneau des
tâches guidées [page 508]
Dans ce tutoriel, vous allez apprendre à utiliser le nouveau modèle de développement d'applications avec
balises dans Visual Studio. Vous allez suivre un modèle de développement par programmation allégée pour
configurer un site Web avec SAP Crystal Reports, à l'aide des tâches guidées.
1.4.5.3.1.4
Liaison à l'URL d'un service Web de rapports
Modèle d'objet
Ce scénario de liaison de rapports utilise le modèle d'objet CrystalReportViewer.
Emplacement des rapports
Les rapports, situés à l'emplacement d'un service Web de rapports, sont hébergés sur un serveur Web (en général
distant).
Description
Un rapport, stocké sur un autre serveur et traité comme un service Web de rapports, est lié par le biais de son
URL au contrôle CrystalReportViewer.
Avantages
●
Large distribution : les rapports peuvent exister n'importe où sur Internet.
●
Distribution facile : les services Web de rapports se trouvent sur le port 80, ce qui les rend accessibles même
par le biais de pare-feu.
178
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Inconvénients
●
Modèle d'objet limité : ce scénario de liaison n'offre qu'un modèle d'objet limité qui fait partie du contrôle
CrystalReportViewer.
Implémentation
Remarque
Cette procédure fonctionne uniquement avec un projet créé à partir de la procédure Configuration d'un projet
[page 15]. La section Configuration d'un projet contient une configuration de références d'espaces de noms et
de code spécifique nécessaire à cette procédure. Il est impossible de suivre cette procédure sans cette
configuration.
●
Dans la méthode ConfigureCrystalReports() (que vous avez créée dans la section Configuration d'un
projet [page 15]), affectez l'URL d'un service Web de rapports à la propriété ReportSource de la classe
CrystalReportViewer.
Cette opération lie le rapport directement au contrôle. Toutes les interactions par programmation avec le
rapport doivent être effectuées dans le modèle d'objet limité CrystalReportViewer.
myCrystalReportViewer.ReportSource = _
"http://localhost/TestProject/World_Sales_ReportService.asmx"
crystalReportViewer.ReportSource =
"http://localhost/TestProject/World_Sales_ReportService.asmx";
Remarque
Pour utiliser ce scénario de liaison, créez un projet de services Web de rapports dans Visual Studio.
Informations associées
Utilisation de Crystal Reports en tant que service Web [page 81]
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
179
1.4.5.3.1.5
Scénarios de liaison CrystalReportViewer avec les
services Crystal
Utilisation des services Crystal dans Visual Studio
SAP Crystal Reports, version développeur pour Microsoft Visual Studio permet d'accéder par programmation aux
fichiers serveur via Crystal Services.
Utilisation des services Crystal dans Visual Studio 2003
Dans Visual Studio 2003, vous pouvez accéder aux rapports Crystal via le nœud Services Crystal dans
l'Explorateur de serveurs. Une fois SAP Crystal Reports et les services Crystal installés, Services Crystal apparaît
sous la forme d'un sous-nœud sous chaque serveur de l'Explorateur de serveurs.
Le nœud Services Crystal peut être développé pour afficher des listes de rapports situés à divers emplacements :
●
Répertoire de fichiers local sur votre disque dur
●
Report Application Server (RAS)
●
Crystal Enterprise
Vous pouvez placer n'importe quel rapport répertorié dans ces listes dans un Web Form ou un Windows Form à
l'aide d'une opération glisser-déplacer.
Selon la version de SAP Crystal Reports que vous avez installée et les licences supplémentaires que vous avez
éventuellement acquises pour le RAS (Report Application Server) ou Crystal Enterprise, les services Crystal
exposent généralement deux nœuds qui peuvent être développés. Le tableau situé dans la section suivante décrit
les conditions requises pour accéder à un nœud particulier.
Il se peut que vous deviez ajuster vos paramètres de pare-feu afin d'accéder au CMS de la plateforme SAP
BusinessObjects Business Intelligence. Le port par défaut pour le CMS est 6400. Contactez votre administrateur
système pour plus d'informations sur l'adresse réseau et les paramètres de port de votre système de plateforme
SAP BusinessObjects Business Intelligence. Pour plus d'informations sur la personnalisation des ports, voir le
Guide d'administration de la plateforme SAP BusinessObjects Business Intelligence.
Classes wrapper
Lorsque vous faites glisser un rapport depuis les services Crystal vers un Web Form ou un Windows Form, cela
crée une instance de la classe wrapper qui référence le rapport dans la région du code de la classe code-behind
généré par le Concepteur Web Form ou Windows Form.
Remarque
Le type de classe wrapper varie selon les versions de SAP Crystal Reports. Voir le tableau ci-dessous.
180
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Les services Crystal répertoriés dans le tableau ci-dessous exposent des types de classes wrapper qui ne
contiennent pas de modèle d'objet et dépendent du modèle d'objet limité fourni par le contrôle
CrystalReportViewer.
La table indique les services Crystal inclus dans SAP Crystal Reports pour Visual Studio 2003. Ces services
exposent des groupes de rapports, soit à partir du répertoire de fichiers local, soit à partir du WCS
(Web Component Server) de Crystal Enterprise. Les rapports sont contenus dans deux classes wrapper
différentes : ServerFileReport pour les rapports situés dans le répertoire de fichiers local, et EnterpriseReport
pour les rapports situés sur le WCS de Crystal Enterprise.
Classe wrapper ex­ Nom du nœud sous
posée par le biais
les services Crystal
des services Crystal
Versions de
SAP Crystal Re­
ports
Description
Conditions requises
pour accéder au
nœud
ServerFileReport
SAP Crystal Reports
pour Visual Stu­
dio .NET 2003
Expose les rapports
situés dans le réper­
toire de fichiers local
par le biais d'un ser­
vice Web commun,
ServerFileReport­
Service. Pour en sa­
voir plus, voir Liaison
aux fichiers serveur
(VS .NET 2003)
[page 181].
Configurez les auto­
risations pour les uti­
lisateurs ASPNET.
(Voir Liaison aux fi­
chiers serveur
(VS .NET 2003)
[page 181].)
Accède aux services
Web de rapports ex­
posés par le serveur
WCS de Crystal En­
Û²?à%`Cłã
prise 8, 8.5, 9 ou 10
par le biais d'un ser­
vice Web commun,
EnterpriseReport­
Service. Pour en sa­
voir plus, voir Liaison
à Crystal Enterprise
(VS .NET 2003)
[page 186].
Vous devez pouvoir
accéder à Crys­
tal Enterprise (qui
expose les rapports
Enterprise par le bi­
ais de son WCS).
Fichiers serveur
(le nœud est rem­
placé lorsque
SAP Crystal Re­
ports 9 ou 10 est in­
stallé)
EnterpriseReport
Crystal Enterprise
SAP Crystal Reports
pour Visual Stu­
dio .NET 2003
(le nœud est rem­
placé lorsque
SAP Crystal Re­
ports 9 ou 10 est in­
stallé)
1.4.5.3.1.5.1
Liaison aux fichiers serveur (VS .NET 2003)
Modèle d'objet
Ce scénario de liaison de rapports utilise CrystalReportViewer.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
181
Emplacement des rapports
Les rapports se trouvent dans un dossier situé dans le répertoire de fichiers local. Ces rapports sont exposés en
tant que services Web de rapports.
Présentation des services Crystal
Ce scénario de liaison de rapports s'applique aux rapports accessibles depuis le nœud du serveur de services
Crystal dans l'Explorateur de serveurs.
Cette section présente le sous-nœud Fichiers serveur des services Crystal dans Visual Studio .NET 2003.
[NOMSERVEUR]
●
Services Crystal
○
Fichiers serveur
Description
Le sous-nœud Fichiers serveur accède aux rapports qui ont été exposés comme services Web de rapports à partir
du répertoire de fichiers local, puis les affiche. Ces rapports sont exposés à l'aide du protocole des services Web
de rapports. Dans Visual Studio .NET 2003, cliquez sur le nœud Fichiers serveur situé sous Services Crystal pour
accéder aux fichiers serveur.
Avantages
●
Accès centralisé aux rapports : offre un point d'accès unique à tous les rapports situés dans votre répertoire
d'exemples de rapports, ce qui crée un référentiel de rapports efficace sur votre disque dur local.
Inconvénients
●
Remplacé dans SAP Crystal Reports 9 et 10 par un nœud Services Crystal de serveur RAS non géré. Pour en
savoir plus, voir la section Description ci-dessus.
●
Modèle d'objet limité : ce scénario de liaison n'offre qu'un modèle d'objet limité qui fait partie du contrôle
CrystalReportViewer.
182
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Configuration des fichiers serveur
Les fichiers serveur sont fournis en tant que nœud de Services Crystal dans SAP Crystal Reports pour Visual
Studio 2003. Lorsque SAP Crystal Reports 9 ou 10 (les versions complètes) est installé par-dessus la version
incluse avec Visual Studio 2003, le nœud des fichiers serveur n'est plus visible.
Chaque édition de SAP Crystal Reports Developer continue à prendre en charge les fichiers serveur dans le SDK.
Toutefois, une programmation manuelle est nécessaire pour utiliser les fichiers serveur dans cette version.
Informations associées
Configuration des fichiers serveur dans les services Crystal [page 86]
Liaison à Crystal Enterprise (VS .NET 2003) [page 186]
Utilisation des services Crystal [page 84]
1.4.5.3.1.5.1.1
Pour installer les services Crystal
Prérequis
SAP Crystal Reports pour Visual Studio 2003 doit être installé.
Contexte
Les services Crystal ne sont pas installés par défaut lors de l'installation de Visual Studio .NET 2003. Dans cette
procédure, vous allez installer les Services Crystal à partir du CD d'installation de Visual Studio .NET 2003.
Procédure
1.
Sur le CD d'installation de Microsoft Visual Studio .NET, localisez Crystal Reports.
2.
Sélectionnez les services Web Crystal.
3.
Cliquez sur le bouton Mettre à jour.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
183
1.4.5.3.1.5.1.2
Pour utiliser le nœud Services
Crystal > Fichiers serveur
Prérequis
●
SAP Crystal Reports pour Visual Studio 2003 est installé et fonctionnel.
●
Ou SAP Crystal Reports 9 ou versions ultérieures est installé et fonctionnel.
Remarque
Dans SAP Crystal Reports 9 et 10, les fichiers serveur sont remplacés (ils ne s'affichent plus en tant que
nœud sous Services Crystal). Il est toutefois toujours possible de les coder manuellement.
Remarque
Cette procédure fonctionne uniquement avec un projet créé à partir de la procédure Configuration d'un projet
[page 15]. La section Configuration d'un projet contient une configuration de références d'espaces de noms et
de code spécifique nécessaire à cette procédure. Il est impossible de suivre cette procédure sans cette
configuration.
Procédure
1.
Dans le menu Affichage, cliquez sur Autres fenêtres, puis sur Explorateur de serveurs.
2.
Développez le nœud Services Crystal, puis Fichiers serveur.
3.
Sélectionnez un rapport dans l'arborescence Fichiers serveur, puis faites-le glisser dans votre formulaire.
Remarque
Lorsqu'un rapport Fichiers serveur est placé dans votre formulaire, une instance de la classe
ServerFileReport est ajoutée à la région du code généré par le concepteur de votre formulaire.
Lorsqu'une classe qui hérite de System.ComponentModel.Component (telle que ServerFileReport)
est instanciée et configurée dans la région du code généré par le concepteur, une icône correspondant à
cette classe instanciée s'affiche au bas du formulaire en mode Design.
En mode Design, un objet serverFileReport1 s'affiche au bas du formulaire.
4.
Passez en mode code et ouvrez la région du code généré par le Concepteur Web Form ou Windows Form.
Une classe ServerFileReport a été instanciée et configurée dans cette région.
5.
Dans la méthode ConfigureCrystalReports() (que vous avez créée dans la section Configuration d'un
projet), affectez l'instance de ServerFileReport à la propriété ReportSource du contrôle
CrystalReportViewer.
myCrystalReportViewer.ReportSource = serverFileReport1
crystalReportViewer.ReportSource = serverFileReport1;
184
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Étapes suivantes
Pour visualiser le rapport, générez et exécutez votre projet.
1.4.5.3.1.5.1.3
Pour coder manuellement les fichiers serveur
Prérequis
●
SAP Crystal Reports pour Visual Studio 2003 est installé et fonctionnel.
●
Ou SAP Crystal Reports 9 ou versions ultérieures est installé et fonctionnel.
Remarque
Dans SAP Crystal Reports 9 et 10, les fichiers serveur sont remplacés (ils ne s'affichent plus en tant que
nœud sous Services Crystal). Il est toutefois toujours possible de les coder manuellement.
Remarque
Cette procédure fonctionne uniquement avec un projet créé à partir de la procédure Configuration d'un projet
[page 15]. La section Configuration d'un projet contient une configuration de références d'espaces de noms et
de code spécifique nécessaire à cette procédure. Il est impossible de suivre cette procédure sans cette
configuration.
Procédure
1.
Dans la méthode ConfigureCrystalReports() (que vous avez créée dans la section Configuration d'un
projet), déclarez une instance deServerFileReport.
Dim myServerFileReport As CrystalDecisions.Shared.ServerFileReport = _
New CrystalDecisions.Shared.ServerFileReport()
CrystalDecisions.Shared.ServerFileReport serverFileReport = new
CrystalDecisions.Shared.ServerFileReport();
2.
Attribuez à la propriété ObjectType de ServerFileReport la valeur REPORT.
myServerFileReport.ObjectType = CrystalDecisions.
[Shared].EnumServerFileType.REPORT
serverFileReport.ObjectType = CrystalDecisions.Shared.EnumServerFileType.REPORT;
3.
Attribuez à la propriété ReportPath de ServerFileReport le rapport et son sous-répertoire.
myServerFileReport.ReportPath = "\General Business\World Sales Report.rpt"
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
185
serverFileReport.ReportPath = "\\General Business\\World Sales Report.rpt";
4.
Définissez la propriété WebServiceURL de ServerFileReport sur le répertoire virtuel du visualiseur de
votre version installée de SAP Crystal Reports.
Remarque
Dans cet exemple de code, le répertoire virtuel des visualiseurs est configuré pour SAP Crystal Reports 10.
myServerFileReport.WebServiceUrl = "http://localhost/crystalreportviewers10/
ServerFileReportService.asmx"
serverFileReport.WebServiceUrl = "http://localhost/crystalreportviewers10/
ServerFileReportService.asmx";
5.
Attribuez à la propriété ReportSource du contrôle CrystalReportViewer l'instance ServerFileReport.
myCrystalReportViewer.ReportSource = myServerFileReport
crystalReportViewer.ReportSource = serverFileReport1;
1.4.5.3.1.5.2
Liaison à Crystal Enterprise (VS .NET 2003)
Il fait référence à une ancienne technologie et s'adresse aux utilisateurs équipés d'une version de
Crystal Enterprise. Crystal Enterprise a été remplacé par SAP Crystal Reports Server et la plateforme SAP
BusinessObjects Business Intelligence.
Modèle d'objet
Ce scénario de liaison de rapports utilise le modèle d'objet CrystalReportViewer (voir Liaison de rapports à l'aide
du modèle d'objet CrystalReportViewer [page 172]).
Emplacement des rapports
Les rapports sont situés sur le WCS (Web Component Server) de Crystal Enterprise 8, 8.5, 9 ou 10. Les rapports
issus du serveur WCS sont exposés comme services Web de rapports par le biais du service Web
EnterpriseReportService.asmx. Ce service Web se trouve dans le répertoire virtuel des visualiseurs du WCS.
Présentation des services Crystal
Ce scénario de liaison de rapports s'applique aux rapports accessibles depuis le nœud du serveur de services
Crystal dans l'Explorateur de serveurs.
186
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Cette section présente le sous-nœud Crystal Enterprise des services Crystal dans Visual Studio .NET 2003.
[NOMSERVEUR]
●
Services Crystal
○
Crystal Enterprise
Description
Le sous-nœud Crystal Enterprise accède aux rapports qui ont été exposés comme services Web de rapports à
partir d'un serveur WCS, puis les affiche.
Pour que le sous-nœud Crystal Enterprise accède à une liste de rapports depuis le serveur WCS
Crystal Enterprise et les affiche correctement, les conditions suivantes doivent être remplies :
●
Le serveur que vous visualisez actuellement dans l'Explorateur de serveurs exécute
Crystal Enterprise 8 ou 8.5.
Remarque
Vous devez mettre à niveau SAP Crystal Reports pour Visual Studio 2003 vers
SAP Crystal Reports Developer (version 9 ou ultérieure) pour pouvoir vous connecter à
Crystal Enterprise 9 ou version ultérieure.
●
Le serveur WCS de Crystal Enterprise est installé sur le serveur Crystal Enterprise.
Remarque
Le serveur WCS est installé par défaut dans Crystal Enterprise 9 et 10. Dans Crystal Enterprise 8 et 8.5, le
serveur WCS doit être installé séparément.
●
Pour configurer des services Web de rapports sur le serveur Crystal Enterprise 10, vous devez installer
Visual Studio .NET 2003 sur le serveur Crystal Enterprise, puis exécuter une installation personnalisée pour
ajouter spécifiquement les services Crystal.
Si l'administrateur de Crystal Enterprise ne souhaite pas installer une version complète de
Visual Studio .NET 2003 sur le serveur Crystal Enterprise, il peut procéder comme suit :
○
Installer le module de fusion managed.msm.
○
Rechercher le répertoire virtuel des visualiseurs installé sur l'ordinateur de développement et copier le
fichier EnterpriseReportService.asmx de ce répertoire vers le répertoire virtuel des visualiseurs de
l'ordinateur serveur.
Une fois les rapports affichés dans les services Crystal, choisissez-en un et faites-le glisser dans le Web Form ou le
Windows Form. Une fois dans le formulaire, le rapport est ajouté à une classe wrapper de rapport, puis affiché
sous forme d'instance dans la barre d'état des composants.
Remarque
Il existe plusieurs types de classes wrapper de rapport, en fonction de la source du rapport sur le serveur et du
protocole de connexion. Ceux-ci varient en fonction des versions de SAP Crystal Reports.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
187
Installation des services Crystal
Les services Crystal ne sont pas installés par défaut lors de l'installation de Visual Studio .NET 2003. Pour ajouter
les services Crystal, chargez le CD d'installation de Microsoft Visual Studio .NET, localisez Crystal Reports,
sélectionnez les services Web Crystal, puis cliquez sur le bouton Mettre à jour.
Avantages
●
Les rapports Crystal Enterprise sont facilement accessibles à partir d'une application Web ou Windows.
Inconvénients
●
Modèle d'objet limité : ce scénario de liaison n'offre qu'un modèle d'objet limité qui fait partie du contrôle
CrystalReportViewer.
Remarque
Dans SAP Crystal Reports 9 et 10, les services Crystal sont mis à niveau vers une classe wrapper et un
protocole de connexion différents.
Informations associées
Répertoire des visualiseurs [page 14]
Utilisation des services Crystal [page 84]
Liaison aux fichiers serveur (Visual Studio 2005 et versions ultérieures) [page 190]
1.4.5.3.1.5.2.1
Pour accéder à Services
Crystal > Crystal Enterprise dans l'Explorateur de serveurs
Procédure
1.
Dans le menu Affichage, cliquez sur Autres fenêtres, puis sur Explorateur de serveurs.
2.
Si votre serveur Crystal Enterprise ne se trouve pas sur votre ordinateur local (recommandé) :
a) Cliquez avec le bouton droit de la souris sur Serveurs, puis cliquez sur Ajouter un serveur.
b) Dans le champ Ordinateur de la boîte de dialogue Ajouter un serveur, saisissez le nom réseau du serveur
Crystal Enterprise, puis cliquez sur OK.
c) Dans le nœud Serveurs, développez le sous-nœud du serveur ajouté, puis développez le sous-nœud
Services Crystal de celui-ci.
188
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
d) Dans la boîte de dialogue Ouverture d'une session Enterprise, saisissez les valeurs dans les champs Nom
d'utilisateur et Mot de passe, puis cliquez sur OK.
3.
Si votre serveur Crystal Enterprise est installé sur votre ordinateur local :
a) Dans le nœud Serveurs, développez le sous-nœud correspondant à votre ordinateur local, puis
développez le sous-nœud Services Crystal de celui-ci.
b) Dans la boîte de dialogue Ouverture d'une session Enterprise, saisissez les valeurs dans les champs Nom
d'utilisateur et Mot de passe, puis cliquez sur OK.
Résultats
Vous pouvez maintenant configurer Services Crystal > Crystal Enterprise dans votre projet Web ou Windows.
1.4.5.3.1.5.2.2
Pour configurer un rapport Services
Crystal > Crystal Enterprise
Prérequis
Cette procédure fonctionne uniquement avec un projet créé à partir de la procédure Configuration d'un projet
[page 15]. La section Configuration d'un projet contient une configuration de références d'espaces de noms et de
code spécifique nécessaire à cette procédure. Il est impossible de suivre cette procédure sans cette
configuration.
Procédure
1.
Sélectionnez un rapport dans le sous-nœud Crystal Enterprise, puis faites-le glisser dans votre Web Form ou
votre Windows Form.
Au bas du formulaire, dans la barre d'état des composants, un objet enterpriseReport1 s'affiche.
2.
Passez en mode code et ouvrez la région du code généré par le Concepteur Web Form ou Windows Form.
Remarque
Une classe EnterpriseReport a été instanciée et configurée dans cette région.
3.
Dans la méthode ConfigureCrystalReports() (que vous avez créée dans la section Configuration d'un
projet [page 15]), affectez l'instance d'EnterpriseReport à la propriété ReportSource du contrôle
CrystalReportViewer.
myCrystalReportViewer.ReportSource = enterpriseReport1
crystalReportViewer.ReportSource = enterpriseReport1;
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
189
4.
Pour visualiser le rapport, générez et exécutez votre projet.
1.4.5.3.1.5.3
Liaison aux fichiers serveur (Visual Studio 2005
et versions ultérieures)
Modèle d'objet
Ce scénario de liaison de rapports utilise le modèle d'objet CrystalReportViewer.
Emplacement des rapports
Les rapports se trouvent dans un dossier situé dans le répertoire de fichiers local. Ces rapports sont exposés en
tant que services Web de rapports.
Présentation générale des fichiers serveur
Ce scénario de liaison s'applique aux rapports accessibles en tant que fichiers serveur par l'intermédiaire d'un
service Web.
Description
Le service Web Fichiers serveur accède aux rapports qui ont été exposés comme services Web de rapports à
partir du répertoire de fichiers local, puis les affiche. Dans Visual Studio 2005 et versions ultérieures, les fichiers
serveur sont accessibles par programmation.
Avantages
●
Accès centralisé aux rapports : offre un point d'accès unique à tous les rapports situés dans votre répertoire
d'exemples de rapports, ce qui crée un référentiel de rapports efficace sur votre disque dur local.
Inconvénients
●
190
Modèle d'objet limité : ce scénario de liaison n'offre qu'un modèle d'objet limité qui fait partie du contrôle
CrystalReportViewer.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Configuration des fichiers serveur
Dans SAP Crystal Reports, version développeur pour Microsoft Visual Studio, les fichiers serveur sont accessibles
par programmation. Chaque édition de SAP Crystal Reports Developer continue à prendre en charge par
programmation les fichiers serveur dans le SDK.
Informations associées
Configuration des fichiers serveur dans Visual Studio 2005 et les versions plus récentes [page 89]
1.4.5.3.1.5.3.1
Pour coder manuellement les fichiers serveur
Prérequis
●
Un service Web de rapports permettant d'accéder par programmation aux fichiers serveur doit être
configuré.
●
Ou SAP Crystal Reports Developer est installé et en cours de fonctionnement.
Remarque
Cette procédure fonctionne uniquement avec un projet créé à partir de la procédure Configuration d'un projet
[page 15]. La section Configuration d'un projet contient une configuration de références d'espaces de noms et
de code spécifique nécessaire à cette procédure. Il est impossible de suivre cette procédure sans cette
configuration.
Procédure
1.
Dans la méthode ConfigureCrystalReports() (que vous avez créée dans la section Configuration d'un
projet [page 15]), déclarez une instance de ServerFileReport.
Dim myServerFileReport As CrystalDecisions.Shared.ServerFileReport = _New
CrystalDecisions.Shared.ServerFileReport()
CrystalDecisions.Shared.ServerFileReport serverFileReport = new
CrystalDecisions.Shared.ServerFileReport();
2.
Attribuez à la propriété ObjectType de ServerFileReport la valeur REPORT.
myServerFileReport.ObjectType = CrystalDecisions.
[Shared].EnumServerFileType.REPORT
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
191
serverFileReport.ObjectType = CrystalDecisions.Shared.EnumServerFileType.REPORT;
3.
Définissez la propriété ReportPath de la classe ServerFileReport sur le rapport et son sous-répertoire.
myServerFileReport.ReportPath = "\General Business\World Sales
Report.rpt"
serverFileReport.ReportPath = "\\General Business\\World Sales
Report.rpt";
4.
Définissez la propriété WebServiceURL de ServerFileReport sur l'emplacement du service Web de rapports.
Si vous disposez de SAP Crystal Reports Developer, cet emplacement correspond au répertoire virtuel du
visualiseur de la version installée de SAP Crystal Reports (voir Répertoire des visualiseurs [page 14]). Si vous
ne disposez pas de SAP Crystal Reports Developer, il s'agit de l'URL du service Web de rapports que vous
avez créé dans Configuration des fichiers serveur dans Visual Studio 2005 et les versions plus récentes [page
89].
Remarque
Dans le code ci-dessous, le répertoire virtuel des visualiseurs est configuré pour SAP Crystal Reports pour
Visual Studio 2005.
myServerFileReport.WebServiceUrl =
"http://localhost/CrystalReportsWebServices2005/ServerFileReportService.asmx"
serverFileReport.WebServiceUrl =
"http://localhost/CrystalReportsWebServices2005/ServerFileReportService.asmx";
5.
Attribuez à la propriété ReportSource du contrôle CrystalReportViewer l'instance ServerFileReport.
myCrystalReportViewer.ReportSource = myServerFileReport
crystalReportViewer.ReportSource = serverFileReport1;
1.4.5.3.1.5.4
Liaison à SAP Crystal Reports Server ou à la
plateforme SAP BusinessObjects Business Intelligence
(Visual Studio)
Modèle d'objet
Ce scénario de liaison de rapports utilise le modèle d'objet CrystalReportViewer (voir Liaison de rapports à l'aide
du modèle d'objet CrystalReportViewer [page 172]).
192
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Emplacement des rapports
Les rapports sont situés sur le WCS (Web Component Server) de SAP Crystal Reports Server ou de la plateforme
SAP BusinessObjects Business Intelligence. Les rapports issus du serveur WCS sont exposés comme services
Web de rapports par le biais du service Web EnterpriseReportService.asmx. Ce service Web se trouve dans le
répertoire virtuel des visualiseurs du WCS.
Présentation des services Crystal
Ce scénario de liaison de rapports s'applique aux rapports accessibles depuis le nœud du serveur de services
Crystal dans l'Explorateur de serveurs.
Cette section présente le sous-nœud Services SAP Crystal Reports des services Crystal dans Visual Studio.
[NOMSERVEUR]
●
Services SAP Crystal Reports
○
Rapports du serveur
Description
Le sous-nœud de la plateforme SAP BusinessObjects Business Intelligence accède aux rapports qui ont été
fournis en tant que services Web de rapports à partir d'un serveur WCS de plateforme SAP BusinessObjects
Business Intelligence, puis les affiche.
Pour que le sous-nœud de la plateforme SAP BusinessObjects Business Intelligence accède à une liste de
rapports depuis le serveur WCS de la plateforme SAP BusinessObjects Business Intelligence et les affiche
correctement, les conditions suivantes doivent être remplies :
●
Le serveur que vous visualisez actuellement dans l'Explorateur de serveurs exécute la plateforme SAP
BusinessObjects Business Intelligence.
●
Pour configurer les services Web de rapports dans la plateforme SAP BusinessObjects Business Intelligence,
vous devez installer Visual Studio sur le serveur de la plateforme SAP BusinessObjects Business Intelligence,
puis exécuter une installation personnalisée pour ajouter spécifiquement les services Crystal.
Remarque
L'installation de Visual Studio sur le serveur de la plateforme SAP BusinessObjects Business Intelligence et
l'installation personnalisée des services Crystal sont nécessaires pour que le fichier
EnterpriseReportService.asmx soit correctement installé et configuré dans le répertoire virtuel des
visualiseurs.
Si l'administrateur de Crystal Enterprise ne souhaite pas installer une version complète de Visual Studio sur le
serveur de la plateforme SAP BusinessObjects Business Intelligence, il peut procéder comme suit :
○
Installer le module de fusion managed.msm.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
193
○
Rechercher le répertoire virtuel des visualiseurs installé sur l'ordinateur de développement et copier le
fichier EnterpriseReportService.asmx de ce répertoire vers le répertoire virtuel des visualiseurs de
l'ordinateur serveur.
Une fois que les rapports s'affichent dans les services SAP BusinessObjects, vous pouvez lier un contrôle
CrystalReportsViewer à n'importe quel rapport répertorié. Pour en savoir plus, voir la documentation relative
à la plateforme SAP BusinessObjects Business Intelligence.
Avantages
●
Les rapports de la plateforme SAP BusinessObjects Business Intelligence sont facilement accessibles depuis
une application Web ou Windows.
Inconvénients
●
Modèle d'objet limité : ce scénario de liaison n'offre qu'un modèle d'objet limité qui fait partie du contrôle
CrystalReportViewer.
Remarque
Dans SAP Crystal Reports 9 et 10, les services Crystal sont mis à niveau vers une classe wrapper et un
protocole de connexion différents.
Informations associées
Répertoire des visualiseurs [page 14]
Utilisation des services Crystal [page 84]
Choisir le modèle d'objet correct pour votre projet [page 32]
1.4.5.3.1.5.4.1
Pour lier un rapport par l'intermédiaire du
chemin d'accès à son répertoire de fichiers à l'aide de la
fenêtre Propriétés
Procédure
1.
Créez un projet Web ou Windows.
2.
Dans la boîte à outils, faites glisser un contrôle CrystalReportViewer dans un Web Form ou un
Windows Form.
194
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
3.
Cliquez sur le contrôle CrystalReportViewer pour le sélectionner.
4.
Dans la fenêtre Propriétés, affectez à la propriété ReportSource le chemin d'accès à un répertoire de
fichiers.
Remarque
Le chemin d'accès au répertoire de fichiers pointe sur les exemples de rapports de Visual Studio 2005.
En raison de la fonctionnalité d'aperçu au moment de la conception, le rapport s'affiche en mode Aperçu.
C:\Program Files\Microsoft Visual Studio 8.0\Crystal Reports\Samples\fr\Reports
\Feature Examples\Hierarchical Grouping.rpt
5.
Pour visualiser le rapport, générez et exécutez votre projet.
1.4.5.3.1.6
Liaison à ReportSource
(SAP Crystal Reports Server ou
SAP BusinessObjects Enterprise 11)
Remarque
Les fonctionnalités décrites dans cette page ne sont pas disponibles dans SAP Crystal Reports, version
développeur pour Microsoft Visual Studio mais le sont dans l'une des versions mises à niveau.
Modèle d'objet
Ce scénario de liaison de rapports utilise le modèle d'objet CrystalReportViewer.
Emplacement des rapports
Les rapports sont accessibles depuis le Page Server de la plateforme SAP BusinessObjects Business Intelligence.
Description
SAP Crystal Reports Server ou la plateforme SAP BusinessObjects Business Intelligence permet de distribuer des
rapports à partir de serveurs au sein d'une structure Enterprise. Un rapport stocké dans
SAP Crystal Reports Server ou dans la plateforme SAP BusinessObjects Business Intelligence peut être affiché
par différents serveurs à différents moments, selon vos besoins. Dans SAP Crystal Reports Server ou la
plateforme SAP BusinessObjects Business Intelligence, si vous voulez afficher un rapport avec les meilleures
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
195
performances possibles et que vous ne souhaitez pas lui apporter de modifications importantes par
programmation, affichez-le directement depuis le Page Server avec la classe ReportSource.
La classe ReportSource n'est associée à aucun modèle d'objet. Si vous souhaitez modifier des paramètres ou
des informations de connexion à la base de données, vous pouvez utiliser le modèle d'objet limité fourni par le
contrôle CrystalReportViewer. Toutefois, pour une interaction par programmation plus complexe avec le
rapport, utilisez l'un des autres scénarios de liaison de rapports SAP Crystal Reports Server ou de plateforme SAP
BusinessObjects Business Intelligence.
Remarque
Pour une comparaison de plusieurs scénarios utilisant des serveurs différents dans
SAP Crystal Reports Server ou la plateforme SAP BusinessObjects Business Intelligence, voir les scénarios de
liaison recommandés pour SAP Crystal Reports Server ou la plateforme SAP BusinessObjects Business
Intelligence à la section Scénarios de liaison de rapports [page 170].
Il se peut que vous deviez ajuster vos paramètres de pare-feu afin d'accéder au CMS de la plateforme SAP
BusinessObjects Business Intelligence. Le port par défaut pour le CMS est 6400. Contactez votre administrateur
système pour plus d'informations sur l'adresse réseau et les paramètres de port de votre système de plateforme
SAP BusinessObjects Business Intelligence. Pour plus d'informations sur la personnalisation des ports, voir le
Guide d'administration de la plateforme SAP BusinessObjects Business Intelligence.
Avantages
●
Scénario le plus rapide : offre les meilleures performances d'affichage d'un rapport dans
SAP Crystal Reports Server ou la plateforme SAP BusinessObjects Business Intelligence.
Inconvénients
●
Modèle d'objet limité : les modifications par programmation qui peuvent être apportées aux paramètres ou
aux informations de connexion à la base de données sont limitées au modèle d'objet
CrystalReportViewer.
●
Disponibilité limitée : ce scénario est uniquement disponible dans Crystal Enterprise version 10,
SAP Crystal Reports Server ou SAP BusinessObjects Enterprise XI.
Informations associées
Liaison de rapports à l'aide du modèle d'objet ReportDocument [page 200]
196
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.4.5.3.1.6.1
Liaison du contrôle CrystalReportViewer à un
rapport pris en charge en dehors du Page Server de
SAP Crystal Reports Server ou de la plateforme SAP
BusinessObjects Business Intelligence
Prérequis
●
SAP Crystal Reports Server ou la plateforme SAP BusinessObjects Business Intelligence doit être installé et
en cours de fonctionnement.
●
Le SDK SAP Crystal Reports Server ou de la plateforme SAP BusinessObjects Business Intelligence (y
compris les assemblys .NET) doit être installé et en cours de fonctionnement.
Remarque
Si vous avez installé SAP Crystal Reports Server ou la plateforme SAP BusinessObjects Business
Intelligence sur votre ordinateur de développement, le SDK est inclus dans cette installation.
Procédure
1.
Localisez et notez le nom d'un serveur SAP Crystal Reports Server ou de plateforme SAP BusinessObjects
Business Intelligence. Pour cet exemple, le nom du serveur est "BOE01".
a) Pour rechercher le nom du serveur, cliquez avec le bouton droit de la souris sur l'icône Poste de travail,
puis sélectionnez Propriétés.
b) Dans la boîte de dialogue Propriétés système, cliquez sur l'onglet Identification réseau.
c) Le nom de l'ordinateur apparaît dans le champ "Nom complet de l'ordinateur".
2.
Utilisez l'Assistant de publication pour publier le rapport Chart.rpt sur le serveur SAP Crystal Reports Server
ou de plateforme SAP BusinessObjects Business Intelligence.
Remarque
Pour savoir comment utiliser l'Assistant de publication, consultez la documentation utilisateur de
SAP Crystal Reports Server ou de la plateforme SAP BusinessObjects Business Intelligence.
3.
4.
Ajoutez les références d'assembly suivantes à votre projet :
○
CrystalDecisions.Enterprise.Framework
○
CrystalDecisions.Enterprise.InfoStore
○
CrystalDecisions.Enterprise.Viewing.ReportSource
○
CrystalDecisions.ReportAppServer.Controllers
Dans le menu Affichage, cliquez sur Code pour afficher la classe code-behind du Web Form ou du Windows
Form. Au-dessus de la classe, ajoutez une instruction "Imports" [Visual Basic] ou "using" [C#] pour
l'espace de noms CrystalDecisions.Enterprise.
Imports CrystalDecisions.Enterprise
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
197
Imports CrystalDecisions.Enterprise.Viewing
Imports CrystalDecisions.ReportAppServer.Controllers
using CrystalDecisions.Enterprise;
using CrystalDecisions.Enterprise.Viewing;
using CrystalDecisions.ReportAppServer.Controllers;
1.4.5.3.1.6.2
Connexion à SAP Crystal Reports Server ou
SAP BusinessObjects Enterprise
Procédure
1.
Dans la méthode ConfigureCrystalReports() (que vous avez créée dans Configuration d'un projet [page
15]), déclarez une variable de chaîne serverName et attribuez-lui le nom du serveur
SAP Crystal Reports Server ou du serveur SAP BusinessObjects Enterprise.
Dim serverName As String = "BOE01"
string serverName = "BOE01";
2.
Déclarez et instanciez la classe SessionMgr.
Dim mySessionMgr As SessionMgr = New SessionMgr()
SessionMgr sessionMgr = new SessionMgr();
3.
Transmettez le nom de l'utilisateur (Administrator), le mot de passe (vide), la variable serverName et le type
de connexion (secEnterprise) à la méthode de connexion de l'instance de SessionMgr, puis extrayez-la
comme une instance d'EnterpriseSession.
Dim myEnterpriseSession As EnterpriseSession = mySessionMgr.Logon( _
"Administrator", "", serverName, "secEnterprise")
EnterpriseSession enterpriseSession = sessionMgr.Logon(
"Administrator", "", serverName, "secEnterprise");
4.
Extrayez le service InfoStore (en tant que EnterpriseService), de la méthode GetService
d'EnterpriseSession.
Dim myEnterpriseService As EnterpriseService = _
myEnterpriseSession.GetService("InfoStore")
EnterpriseService enterpriseService = enterpriseSession.GetService("InfoStore");
198
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
5.
Déclarez et instanciez InfoStore, puis transmettez à InfoStore le service EnterpriseService extrait
comme un paramètre.
Dim myInfoStore As InfoStore = New InfoStore(myEnterpriseService)
InfoStore infoStore = new InfoStore(enterpriseService);
1.4.5.3.1.6.3
Extraction du rapport Hierarchical Grouping de
SAP Crystal Reports Server ou de
SAP BusinessObjects Enterprise
Procédure
1.
Pour réattribuer la valeur de l'instance d'EnterpriseService au service de référence de rapport du Page Server,
transmettez la chaîne "PSReportFactory" à la méthode GetService() d'EnterpriseService.
myEnterpriseService = myEnterpriseSession.GetService("PSReportFactory")
enterpriseService = enterpriseSession.GetService("PSReportFactory");
2.
Renvoyez la propriété Interface de l'instance EnterpriseService en tant que variable objet.
Dim psrfObject As Object = myEnterpriseService.Interface
Object psrfObject = enterpriseService.Interface;
3.
Effectuez un cast de la variable objet en une instance de PSReportFactory.
Dim myPSReportFactory As PSReportFactory = CType(psrfObject, PSReportFactory)
PSReportFactory psReportFactory = (PSReportFactory)psrfObject;
4.
Saisissez la chaîne de requête suivante pour interroger SAP Crystal Reports Server ou
SAP BusinessObjects Enterprise sur le rapport.
Dim queryString As String = "Select SI_ID, SI_NAME, SI_PARENTID From
CI_INFOOBJECTS " _
& "Where SI_PROGID='CrystalEnterprise.Report' " _
& "And SI_NAME Like 'Chart'"
string queryString = "Select SI_ID, SI_NAME, SI_PARENTID From CI_INFOOBJECTS "
+ "Where SI_PROGID='CrystalEnterprise.Report' "
+ "And SI_NAME Like 'Chart'";
5.
Transmettez la chaîne de requête à la méthode Query d'InfoStore pour extraire une classe indexée
InfoObjects qui contient le résultat de la requête.
Dim myInfoObjects As InfoObjects = myInfoStore.Query(queryString)
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
199
InfoObjects infoObjects = infoStore.Query(queryString);
6.
Extrayez l'InfoObject de la première colonne de la classe indexée InfoObjects.
Dim myInfoObject As InfoObject = myInfoObjects(1)
InfoObject infoObject = infoObjects[1];
7.
Déclarez et remplissez une instance de ReportSource à partir de la méthode OpenReportSource() de
l'instance de PSReportFactory en transmettant la propriété ID d'InfoObject.
Dim myReportSource As ReportSource =
myPSReportFactory.OpenReportSource(myInfoObject.ID)
ReportSource reportSource = psReportFactory.OpenReportSource(infoObject.ID);
8.
Liez l'instance ReportSource à la propriété ReportSource du contrôle CrystalReportViewer.
myCrystalReportViewer.ReportSource = myReportSource
crystalReportViewer.ReportSource = reportSource;
9.
Pour visualiser le rapport, générez et exécutez votre projet.
Le rapport s'affiche désormais depuis le Page Server de SAP Crystal Reports Server ou de
SAP BusinessObjects Enterprise en fonction de son ID. Si vous utilisez une autre méthode pour accéder à
reportID (en sélectionnant l'ID dans une liste de rapports dans un contrôle DropDownList par exemple),
vous n'aurez pas à rechercher InfoStore ni à générer une classe InfoObject pour extraire reportID.
1.4.5.3.2
Liaison de rapports à l'aide du modèle d'objet
ReportDocument
Le modèle d'objet ReportDocument est le plus puissant et le plus complet des modèles d'objet fournis avec
SAP Crystal Reports, version développeur pour Microsoft Visual Studio. Il s'agit du modèle d'objet privilégié pour
développer un projet avec SAP Crystal Reports, version développeur pour Microsoft Visual Studio.
1.4.5.3.2.1
Liaison à une classe de rapport incorporé
Modèle d'objet
Ce scénario de liaison de rapports utilise le modèle d'objet ReportDocument.
Emplacement des rapports
Les rapports sont incorporés dans le projet.
200
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Remarque
Dans les précédentes versions de cette documentation, les rapports incorporés étaient appelés "rapports
fortement typés". Le principal terme désormais utilisé pour faire référence à un rapport qui a été ajouté ou
importé dans un projet Visual Studio est "incorporé".
Description
Dans ce scénario, un rapport est incorporé dans un projet. Pour incorporer un rapport, vous pouvez soit créer un
rapport à l'aide du SAP Crystal Reports Designer incorporé (inclus dans Visual Studio), soit importer un rapport
existant dans le projet. Une fois le rapport créé ou importé, une classe wrapper représentant ce rapport est
automatiquement générée. Cette classe wrapper porte le même nom que le rapport. Dérivée de la classe de base
ReportDocument, elle hérite naturellement de toutes les propriétés et méthodes de la classe ReportDocument qui
fait partie du modèle d'objet ReportDocument.
Avantages
●
Sécurité renforcée : les rapports sont incorporés et donc distribués en tant que partie de l'application.
●
Interaction par programmation étendue : fournit un accès au puissant modèle d'objet ReportDocument.
●
Sécurité renforcée : offre le contrôle le plus complet sur l'accès aux sources des rapports.
●
Utilisation la plus courante : la plupart des développeurs considèrent que ce scénario offre le plus grand
nombre d'avantages.
Inconvénients
●
Maintenance supplémentaire : toute modification apportée aux rapports nécessite la recompilation et la
redistribution de l'application.
1.4.5.3.2.1.1
Pour lier à une classe de rapport incorporé
Contexte
Une fois un rapport créé ou importé, une classe wrapper représentant ce rapport est automatiquement générée.
Cette classe wrapper porte le même nom que le rapport. Dérivée de la classe de base ReportDocument, elle hérite
naturellement de toutes les propriétés et méthodes de la classe ReportDocument qui fait partie du modèle d'objet
ReportDocument.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
201
Procédure
1.
Ajoutez un contrôle CrystalReportViewer à un Windows Form.
Remarque
Toutes les versions de SAP Crystal Reports prennent en charge la liaison à une classe de rapport
incorporée pour les applications Windows. Certaines configurations fournissent une prise en charge de ce
scénario de liaison pour les sites Web grâce à un fournisseur intégré amélioré.
2.
Ajoutez un rapport au projet. Cela génère automatiquement une classe wrapper ayant le même nom que le
rapport.
3.
Instanciez la classe wrapper du rapport.
Dim myReport As New QuarterlySalesReport()
QuarterlySalesReport myReport = new QuarterlySalesReport();
4.
Affectez-la à la propriété ReportSource du contrôle CrystalReportViewer.
myCrystalReportViewer.ReportSource = myReport
crystalReportViewer.ReportSource = myReport;
1.4.5.3.2.2
Liaison à un rapport non incorporé chargé dans la
classe ReportDocument
Modèle d'objet
Ce scénario de liaison de rapports utilise le modèle d'objet ReportDocument.
Emplacement des rapports
Les rapports se trouvent dans le répertoire de fichiers.
Description
Ce scénario de liaison de rapports permet d'utiliser ReportDocument, le modèle d'objet le plus puissant, avec des
rapports non incorporés (externes à votre projet).
202
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Dans le scénario Liaison au chemin d'accès d'un répertoire de fichiers par code [page 172], vous liez les rapports
par l'intermédiaire de leur chemin d'accès à un répertoire de fichiers, mais au lieu de les lier directement au
visualiseur, vous les transmettez à la méthode ReportDocument.Load(). Cela vous permet d'utiliser le modèle
d'objet ReportDocument.
Par ailleurs, chaque rapport externe étant chargé dans la classe ReportDocument commune, vous pouvez
développer un processus de sélection de rapports qui permet le partage du code de liaison avec tous les rapports.
Avantages
●
Peu de maintenance : les rapports sont ajoutés, supprimés ou modifiés sans avoir à recompiler l'application.
●
Interaction par programmation étendue : fournit un accès au puissant modèle d'objet ReportDocument.
●
Moins de codage grâce au partage de code : les rapports peuvent partager le même code, car ils sont tous
chargés dans la classe ReportDocument commune.
Inconvénients
●
Distribution limitée : les rapports doivent se trouver sur le même ordinateur que l'application. (L'accès à
d'autres serveurs du réseau à partir du compte utilisateur ASPNET du serveur Web est généralement limité.)
●
Effort de déploiement accru : les rapports doivent être distribués avec l'application en utilisant le chemin
relatif correct.
●
Source des rapports moins sécurisée : les rapports peuvent être déplacés ou supprimés sur l'ordinateur de
déploiement au moment de l'exécution.
1.4.5.3.2.2.1
Pour lier à une classe de rapport non incorporé
à l'aide du modèle d'objet ReportDocument
Prérequis
Remarque
Cette procédure fonctionne uniquement avec un projet créé à partir de la procédure Configuration d'un projet
[page 15]. La section Configuration d'un projet contient une configuration de références d'espaces de noms et
de code spécifique nécessaire à cette procédure. Il est impossible de suivre cette procédure sans cette
configuration.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
203
Procédure
1.
Ajoutez une instruction "Imports" [Visual Basic] ou "using" [C#] au début de la classe pour
l'espace de noms CrystalDecisions.CrystalReports.Engine.
Remarque
Vous devez déclarer cet espace de noms pour pouvoir accéder à la classe ReportDocument sans préfixe
d'espace de noms.
Imports CrystalDecisions.CrystalReports.Engine
using CrystalDecisions.CrystalReports.Engine;
2.
Recherchez le fichier World Sales Report.rpt dans le sous-répertoire General Business de votre version
SAP Crystal Reports.
3.
Copiez dans le Presse-papiers le chemin d'accès complet au répertoire de fichiers en incluant World Sales
Report.rpt.
4.
Dans la méthode ConfigureCrystalReports() (que vous avez créée dans la section Configuration d'un
projet [page 15]), déclarez une variable chaîne reportPath et affectez-lui une chaîne contenant le chemin
d'accès au fichier World Sales Report copié lors de l'étape précédente.
Dim reportPath As String = _
"C:\Program Files\Microsoft Visual Studio 9.0\" _ & "Crystal Reports\Samples
\fr\Reports\General Business\" _ & "World Sales Report.rpt"
string reportPath =
"C:\\Program Files\\Microsoft Visual Studio 9.0\\" + "Crystal Reports\\Samples
\\fr\\Reports\\General Business\\" + "World Sales Report.rpt";
5.
Sous la chaîne déclarée, déclarez une instance de ReportDocument.
Dim myReportDocument As ReportDocument = New ReportDocument()
ReportDocument reportDocument = new ReportDocument();
6.
Chargez la variable chaîne liée à la classe de rapport non incorporé et contenant le chemin d'accès au
répertoire de fichiers dans ReportDocument.
myReportDocument.Load(reportPath)
reportDocument.Load(reportPath);
204
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
7.
Affectez l'instance de ReportDocument (qui contient maintenant la classe de rapport non incorporé
chargée) à la propriété ReportSource du contrôle CrystalReportViewer.
myCrystalReportViewer.ReportSource = myReportDocument
crystalReportViewer.ReportSource = reportDocument;
8.
Pour visualiser le rapport, générez et exécutez votre projet.
1.4.5.3.2.3
en cache
Liaison à une classe de rapport incorporé et mis
Modèle d'objet
Ce scénario de liaison de rapports utilise le modèle d'objet ReportDocument.
Emplacement des rapports
Les rapports sont incorporés dans le projet.
Description
Lorsqu'un rapport est incorporé dans un projet Visual Studio, une classe wrapper, qui représente le rapport dans
le projet, est automatiquement générée. Parallèlement, une classe utilitaire de gestion du cache pour ce rapport
est également créée.
Dans ce scénario, vous liez le contrôle CrystalReportViewer à la classe utilitaire de gestion du cache de manière à
ce que la mise en mémoire cache des rapports dans l'objet Cache ASP.NET soit gérée automatiquement.
Utilisation de la mise en cache
La mise en cache doit être utilisée dans des cas particuliers et limités car elle peut "surconsommer" des
ressources système lorsqu'elle n'est pas gérée avec précaution.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
205
Mise en cache des rapports non incorporés
Si vous souhaitez gérer la mise en cache de rapports non incorporés, vous devez créer votre propre classe
utilitaire de gestion du cache. Pour en savoir plus, voir Liaison à un rapport non incorporé chargé dans une classe
utilitaire de gestion du cache [page 207].
Avantages
●
Conçu pour le partage : idéal pour stocker les rapports qui présentent un fort potentiel de partage et peu de
modifications à apporter aux paramètres ou aux informations de connexion.
●
Accès aux données optimisé : si les rapports à fort potentiel de partage sont très volumineux ou s'ils
contiennent une requête tellement complexe que l'extraction prend plusieurs minutes, la classe utilitaire de
gestion du cache permet d'accéder plus rapidement aux données.
Inconvénients
●
Charge du serveur : les rapports stockés dans l'objet Cache ASP.NET peuvent "surcharger" les ressources
mémoire sur le serveur.
●
Problèmes de persistance : le cache possède certaines dépendances qui permettent la vérification des
modifications apportées à l'instance d'un rapport et la remise en cache de cette instance. Toutefois, si la base
de données est modifiée, l'instance du rapport stockée dans l'objet Cache n'est pas actualisée en
conséquence.
●
Consommation de ressources : un rapport dont les paramètres sont appelés fréquemment à l'aide de
différentes chaînes de paramètre(particulièrement si l'un de ces paramètres correspond à l'ID utilisateur)
implique à chaque fois la mise en cache d'un nouveau rapport. Ce processus consomme des ressources
système. Si le rapport ne présente pas un fort potentiel de partage, affectez son instance à un objet Session.
Informations associées
Utilisation de rapports standard ou mis en cache ? [page 221]
Modèle d'objet ReportDocument [page 37]
Session et persistance du modèle d'objet ReportDocument [page 57]
206
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.4.5.3.2.3.1
cache
Pour lier à une classe utilitaire de gestion du
Prérequis
Remarque
Cette procédure fonctionne uniquement avec un projet créé à partir de la procédure Configuration d'un projet
[page 15]. La section Configuration d'un projet contient une configuration de références d'espaces de noms et
de code spécifique nécessaire à cette procédure. Il est impossible de suivre cette procédure sans cette
configuration.
Procédure
1.
Dans la méthode ConfigureCrystalReports() (que vous avez créée dans la section Configuration d'un
projet [page 15]), supprimez les lignes de code existantes pour remplacer la classe wrapper par la classe
utilitaire de gestion du cache.
2.
Instanciez la classe utilitaire de gestion du cache associée au rapport Hierarchical Grouping.rpt.
Dim cachedHierarchicalGroupingReport As CachedHierarchical_Grouping
= New CachedHierarchical_Grouping()
CachedHierarchical_Grouping cachedHierarchicalGroupingReport = new
CachedHierarchical_Grouping();
3.
Transmettez l'instance de la classe utilitaire de gestion du cache au contrôle CrystalReportViewer.
myCrystalReportViewer.ReportSource = cachedHierarchicalGroupingReport
crystalReportViewer.ReportSource = cachedHierarchicalGroupingReport;
4.
Pour visualiser le rapport, générez et exécutez votre projet.
1.4.5.3.2.4
Liaison à un rapport non incorporé chargé dans
une classe utilitaire de gestion du cache
Modèle d'objet
Ce scénario de liaison de rapports utilise le modèle d'objet ReportDocument.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
207
Emplacement des rapports
Les rapports se trouvent dans le répertoire de fichiers.
Description
Ce scénario de liaison de rapports est semblable au scénario Liaison à une classe de rapport incorporé et mis en
cache [page 205]. La différence tient au fait que dans ce scénario les rapports ne sont pas incorporés. Pour en
savoir plus sur les rapports incorporés, voir Utilisation de rapports incorporés ou non incorporés ?Comparaison
des rapports incorporés et non incorporés [page 165]
SAP Crystal Reports, version développeur pour Microsoft Visual Studio est fourni avec deux fonctionnalités d'aide
à la mise en cache des rapports avec l'objet Cache ASP.NET :
●
Une structure intégrée de gestion de la mise en cache des rapports qui détecte des rapports identiques
possédant des paramètres ou des informations de connexion uniques qui nécessitent une clé unique pour
chaque instance mise en cache.
●
Une interface, ICachedReport, qui identifie les classes utilitaire de gestion du cache auprès de la structure
de gestion de la mise en cache des rapports.
Dans Liaison à une classe de rapport incorporé et mis en cache [page 205], vous en avez appris davantage sur la
classe Cached[NomRapport] qui est automatiquement générée lorsqu'un rapport est incorporé dans un projet.
Vous pouvez toutefois créer manuellement une classe utilitaire de gestion du cache pour gérer les rapports non
incorporés. Pour obtenir un exemple de code, voir la section Implémentation ci-dessous.
Utilisation de la mise en cache
La mise en cache doit être utilisée dans des cas particuliers et limités car elle peut "surconsommer" des
ressources système lorsqu'elle n'est pas gérée avec précaution.
Avantages
●
Conçu pour le partage : idéal pour stocker les rapports qui présentent un fort potentiel de partage et peu de
modifications à apporter aux paramètres ou aux informations de connexion.
●
Accès aux données optimisé : si les rapports à fort potentiel de partage sont très volumineux ou s'ils
contiennent une requête tellement complexe que l'extraction prend plusieurs minutes, la classe utilitaire de
gestion du cache permet d'accéder plus rapidement aux données.
208
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Inconvénients
●
Charge du serveur : les rapports stockés dans l'objet Cache ASP.NET peuvent "surcharger" les ressources
mémoire sur le serveur.
●
Problèmes de persistance : le cache possède certaines dépendances qui permettent la vérification des
modifications apportées à l'instance d'un rapport et la remise en cache de cette instance. Toutefois, si la base
de données est modifiée, l'instance du rapport stockée dans l'objet Cache n'est pas actualisée en
conséquence.
●
Consommation de ressources : un rapport dont les paramètres sont appelés fréquemment à l'aide de
différentes chaînes de paramètre(particulièrement si l'un de ces paramètres correspond à l'ID utilisateur)
implique à chaque fois la mise en cache d'un nouveau rapport. Ce processus consomme des ressources
système. Si le rapport ne présente pas un fort potentiel de partage, affectez son instance à un objet Session.
Informations associées
Liaison avec le composant ReportDocument [page 214]
Modèle d'objet ReportDocument [page 37]
Session et persistance du modèle d'objet ReportDocument [page 57]
1.4.5.3.2.4.1
Pour mettre en cache une classe de rapport non
incorporé, puis la lier au contrôle CrystalReportViewer
Prérequis
Remarque
Cette procédure fonctionne uniquement avec un projet créé à partir de la procédure Configuration d'un projet
[page 15]. La section Configuration d'un projet contient une configuration de références d'espaces de noms et
de code spécifique nécessaire à cette procédure. Il est impossible de suivre cette procédure sans cette
configuration.
Procédure
1.
Recherchez le fichier World Sales Report.rpt dans le sous-répertoire General Business.
2.
Copiez dans le Presse-papiers le chemin d'accès complet au répertoire de fichiers en incluant World Sales
Report.rpt.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
209
3.
Dans la méthode ConfigureCrystalReports() (que vous avez créée dans la section Configuration d'un
projet [page 15]), déclarez une variable chaîne reportPath et affectez-lui une chaîne contenant le chemin
d'accès au fichier World Sales Report copié lors de l'étape précédente.
Dim reportPath As String = _
"C:\Program Files\Microsoft Visual Studio 9.0\" _
& "Crystal Reports\Samples\En\Reports\General Business\" _
& "World Sales Report.rpt"
string reportPath =
"C:\\Program Files\\Microsoft Visual Studio 9.0\\"
+ "Crystal Reports\\Samples\\En\\Reports\\General Business\\"
+ "World Sales Report.rpt";
4.
Déclarez et instanciez la classe NonEmbeddedReportCacher, puis transmettez-lui la variable chaîne
reportFile.
Remarque
Pour apprendre à créer la classe NonEmbeddedReportCacher, voir la procédure décrite juste après cette
procédure.
Dim myNonEmbeddedReportCacher As NonEmbeddedReportCacher = _New
NonEmbeddedReportCacher(reportFile)
NonEmbeddedReportCacher nonEmbeddedReportCacher = new
NonEmbeddedReportCacher(reportFile);
5.
Affectez l'instance de la classe utilitaire de gestion du cache à la propriété ReportSource du contrôle
CrystalReportViewer.
myCrystalReportViewer.ReportSource = myNonEmbeddedReportCacher
crystalReportViewer.ReportSource = nonEmbeddedReportCacher;
1.4.5.3.2.4.2
Pour créer la classe utilitaire de gestion du
cache NonEmbeddedReportCacher
Procédure
1.
Créez dans votre projet une classe nommée NonEmbeddedReportCacher.
Public Class NonEmbeddedReportCacher
End Class
210
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
using System;
namespace MyWebApplication
{
public class NonEmbeddedReportCacher
{
public NonEmbeddedReportCacher()
{
}
}
}
2.
Ajoutez l'interface ICachedReport à la signature de la classe.
Public Class NonEmbeddedReportCacher
Implements ICachedReport
public class NonEmbeddedReportCacher : ICachedReport
3.
Ajoutez trois instructions "Imports" [Visual Basic] ou "using" [C#] au début de la classe.
Imports CrystalDecisions.Shared
Imports CrystalDecisions.ReportSource
Imports CrystalDecisions.CrystalReports.Engine
using CrystalDecisions.Shared;
using CrystalDecisions.ReportSource;
using CrystalDecisions.CrystalReports.Engine;
4.
Dans la classe, déclarez deux instances de niveau classe : une instance chaîne nommée reportFileName et
une instance de ReportDocument nommée nonEmbeddedReportDocument.
Private reportFileName As String
Private nonEmbeddedReportDocument As ReportDocument
private string reportFileName;
private ReportDocument nonEmbeddedReportDocument;
5.
Configurez le constructeur de manière à ce qu'il accepte une chaîne reportFileName et dans le constructeur,
attribuez cette chaîne à la variable de classe reportFileName.
Public Sub New(ByVal reportFileName As String)
Me.reportFileName = reportFileName
End Sub
public NonEmbeddedReportCacher(string reportFileName)
{
this.reportFileName = reportFileName;
}
Les étapes suivantes implémentent les propriétés et les méthodes requises par l'interface :
○
IsCacheable
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
211
6.
○
ShareDBLogonInfo
○
CacheTimeOut
○
CreateReport()
○
GetCustomizedCacheKey(requête RequestContext)
Créez la propriété IsCacheable qui renvoie la valeur True.
Public Overridable Property IsCacheable() As Boolean Implements
ICachedReport.IsCacheable
Get
Return True
End Get
Set(ByVal Value As Boolean)
End Set
End Property
public virtual Boolean IsCacheable
{
get
{
return true;
}
set
{
}
}
7.
Créez la propriété ShareDBLogonInfo qui renvoie la valeur False.
Public Overridable Property ShareDBLogonInfo() As Boolean Implements
ICachedReport.ShareDBLogonInfo
Get
Return False
End Get
Set(ByVal Value As Boolean)
End Set
End Property
public virtual Boolean ShareDBLogonInfo
{
get
{
return false;
}
set
{
}
}
8.
Créez la propriété CacheTimeOut qui renvoie une valeur de constante depuis la classe
CachedReportConstants.
Public Overridable Property CacheTimeOut() As TimeSpan Implements
ICachedReport.CacheTimeOut
Get
Return CachedReportConstants.DEFAULT_TIMEOUT
End Get
Set(ByVal Value As TimeSpan)
212
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
End Set
End Property
public virtual TimeSpan CacheTimeOut
{
get
{
return CachedReportConstants.DEFAULT_TIMEOUT;
}
set
{
}
}
9.
Créez la méthode CreateReport(), qui renvoie un rapport non incorporé chargé dans l'instance de niveau
classe ReportDocument.
Public Overridable Function CreateReport() As ReportDocument Implements
ICachedReport.CreateReport
nonEmbeddedReportDocument = New ReportDocument()
nonEmbeddedReportDocument.Load(reportFileName)
Return nonEmbeddedReportDocument
End Function
public virtual ReportDocument CreateReport()
{
nonEmbeddedReportDocument = new ReportDocument();
nonEmbeddedReportDocument.Load(reportFileName);
return nonEmbeddedReportDocument;
}
10. Créez la méthode GetCustomizedCacheKey() qui renvoie une valeur nulle.
Remarque
Le fait que cette méthode renvoie une valeur nulle indique au SDK de SAP Crystal Reports .NET qu'il doit
gérer la clé de recherche du cache lui-même. Vous avez également la possibilité de créer et d'ajouter ici
votre propre méthode de clé de cache.
Public Overridable Function GetCustomizedCacheKey(ByVal request As
RequestContext) As String Implements ICachedReport.GetCustomizedCacheKey
Return Nothing
End Function
public virtual String GetCustomizedCacheKey(RequestContext request)
{
return null;
}
11. Pour visualiser le rapport, générez et exécutez votre projet.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
213
1.4.5.3.2.5
Liaison avec le composant ReportDocument
Modèle d'objet
Ce scénario de liaison de rapports utilise le modèle d'objet ReportDocument.
Emplacement des rapports
Les rapports se trouvent dans le répertoire de fichiers.
Description
Le composant ReportDocument se trouve dans la boîte à outils et fournit une méthode basée sur une interface
utilisateur graphique pour générer un code d'instanciation de classe du rapport dans la classe code-behind. Vous
pouvez spécifier un rapport non incorporé, un rapport incorporé ou un rapport incorporé mis en cache.
Remarque
La boîte de dialogue utilise les anciens termes "rapport non typé" pour désigner un rapport non incorporé et
"rapport fortement typé" pour désigner un rapport incorporé.
En utilisant cette boîte de dialogue pour ajouter ReportDocument en tant que composant, la classe
ReportDocument (ou la classe wrapper du rapport incorporé) est instanciée dans la région générée
automatiquement de la classe code-behind. En même temps, une icône apparaît dans la barre d'état des
composants de l'environnement de développement intégré pour représenter visuellement la classe de rapport
instanciée.
Remarque
Il est inutile d'ajouter un composant ReportDocument à votre projet pour instancier le rapport dans la classe
code-behind. Pour mieux contrôler votre code, il est recommandé d'ajouter le code d'instanciation de classe
manuellement.
Informations associées
Modèle d'objet ReportDocument [page 37]
214
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.4.5.3.2.6
Scénarios de liaison ReportDocument utilisant
les services Crystal (VS .NET 2003)
Les services Crystal offrent un accès pratique aux rapports dans Visual Studio 2003. Cette fonctionnalité n'est
pas disponible dans Visual Studio 2005 ou Visual Studio 2008. Une fois SAP Crystal Reports et les services
Crystal installés, Services Crystal apparaît sous la forme d'un sous-nœud situé sous chaque serveur du nœud
Serveurs de l'Explorateur de serveurs. Le nœud Services Crystal peut être développé pour afficher des listes de
rapports situés à divers emplacements :
●
Répertoire de fichiers local sur votre disque dur
●
Report Application Server (RAS)
●
Plateforme SAP BusinessObjects Business Intelligence (BIP)
Vous pouvez placer n'importe quel rapport répertorié dans ces listes dans un Web Form ou un Windows Form à
l'aide d'une opération glisser-déplacer.
Selon la version de SAP Crystal Reports que vous avez installée et les licences supplémentaires que vous avez
éventuellement acquises pour le RAS (Report Application Server) ou la plateforme SAP BusinessObjects Business
Intelligence, les services Crystal fournissent généralement deux nœuds qui peuvent être développés. Le tableau
situé dans la section suivante décrit les conditions requises pour accéder à un nœud particulier.
Remarque
Certaines versions de la plateforme SAP BusinessObjects Business Intelligence ne comprennent pas la prise en
charge des services Crystal. Pour en savoir plus, consultez la documentation relative à la plateforme SAP
BusinessObjects Business Intelligence.
Il se peut que vous deviez ajuster vos paramètres de pare-feu afin d'accéder au CMS de la plateforme SAP
BusinessObjects Business Intelligence. Le port par défaut pour le CMS est 6400. Contactez votre administrateur
système pour plus d'informations sur l'adresse réseau et les paramètres de port de votre système de plateforme
SAP BusinessObjects Business Intelligence. Pour plus d'informations sur la personnalisation des ports, voir le
Guide d'administration de la plateforme SAP BusinessObjects Business Intelligence.
Classes wrapper
Lorsque vous faites glisser un rapport depuis les services Crystal vers un Web Form ou un Windows Form, cela
crée une instance de classe wrapper qui référence le rapport dans la région du code de la classe code-behind
généré par le Web Form ou Windows Form.
Remarque
Le type de classe wrapper varie selon les versions de SAP Crystal Reports. Voir le tableau ci-dessous.
Les services Crystal répertoriés dans le tableau ci-dessous exposent les types de la classe wrapper
ReportDocument.
Ces deux services Crystal sont fournis avec SAP Crystal Reports 10. Ils fournissent des groupes de rapports pris
en charge depuis un serveur RAS géré ou non géré. ReportDocument correspond désormais à la classe wrapper
(depuis SAP Crystal Reports 9).
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
215
Classe wrapper ex­ Nom du nœud sous
posée par le biais
les services Crystal
des services Crystal
Versions de
SAP Crystal Re­
ports
Description
Conditions requises
pour accéder au
nœud
ReportDocument
Report Application
Server
SAP Crystal Re­
ports 10
Expose les rapports Installez un serveur
situés sur un serveur RAS non géré.
RAS chargé dans Re­
portDocument. Pour
en savoir plus, voir
Liaison au Report
Application Server
(SAP Crystal Re­
ports 10 et versions
ultérieures) [page
216].
ReportDocument
Crystal Enterprise
SAP Crystal Re­
ports 10
Expose les rapports Installez Crystal En­
situés sur le serveur terprise.
RAS géré chargé
dans ReportDocu­
ment. Pour en savoir
plus, voir Liaison à
Crystal Enterprise
(SAP Crystal Re­
ports 10 et versions
ultérieures) [page
219].
Les précédentes versions des services Crystal exposent des types de classes wrapper qui n'utilisent pas le
modèle d'objet ReportDocument. Elles dépendent donc du modèle d'objet limité fourni par le contrôle
CrystalReportViewer. Pour en savoir plus, voir Scénarios de liaison CrystalReportViewer avec les services Crystal
[page 180].
1.4.5.3.2.6.1
Liaison au Report Application Server
(SAP Crystal Reports 10 et versions ultérieures)
Remarque
Les fonctionnalités décrites dans cette page ne sont pas disponibles dans SAP Crystal Reports, version
développeur pour Microsoft Visual Studio mais le sont dans l'une des versions mises à niveau.
Modèle d'objet
Ce scénario de liaison de rapports utilise le modèle d'objet ReportDocument.
216
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Emplacement des rapports
Les rapports se trouvent sur le serveur RAS non géré. Ils sont inclus dans la classe ReportDocument.
Présentation des services Crystal
Ce scénario de liaison de rapports s'applique aux rapports accessibles depuis le nœud du serveur de services
Crystal dans l'Explorateur de serveurs.
Cette section présente le sous-nœud Report Application Server des services Crystal dans
SAP Crystal Reports Developer.
[NOMSERVEUR]
●
Services Crystal
○
Report Application Server
Description
Le sous-nœud Report Application Server accède aux rapports qui ont été exposés par un serveur RAS non géré,
puis les affiche. Le nœud RAS fonctionne uniquement lorsque le serveur RAS non géré a été installé sur votre
ordinateur de développement.
Lorsque vous déplacez un rapport par glisser-déposer depuis le nœud Services Crystal > Plateforme SAP
BusinessObjects Business Intelligence vers un Web Form ou un Windows Form, une instance de ReportDocument
est générée. La classe ReportDocument fonctionne comme une classe wrapper. Son rôle consiste à représenter le
rapport transmis depuis le serveur RAS non géré.
Avantages
●
Accès simple : les rapports situés sur le serveur RAS non géré peuvent être facilement visualisés dans une
arborescence et déplacés à l'aide d'une simple opération glisser dans un Web Form.
●
Interaction par programmation étendue : fournit un accès au puissant modèle d'objet ReportDocument. La
classe wrapper dans cette version est ReportDocument. Il s'agit de la première version des Services Crystal
donnant accès au modèle d'objet ReportDocument.
Inconvénients
●
Codage moins direct : le codage des rapports RAS est moins direct que lorsqu'il est effectué à l'aide du
modèle d'objet ReportClientDocument.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
217
Informations associées
Liaison à Crystal Enterprise (SAP Crystal Reports 10 et versions ultérieures) [page 219]
Modèle d'objet ReportDocument [page 37]
Utilisation des services Crystal [page 84]
1.4.5.3.2.6.1.1
Pour utiliser les services Crystal > Report
Application Server
Prérequis
●
SAP Crystal Reports 10 ou une version ultérieure doit être installée et en cours de fonctionnement.
●
Le serveur RAS non géré doit être installé et en cours de fonctionnement.
Remarque
Cette procédure fonctionne uniquement avec un projet créé à partir de la procédure Configuration d'un projet
[page 15]. La section Configuration d'un projet contient une configuration de références d'espaces de noms et
de code spécifique nécessaire à cette procédure. Il est impossible de suivre cette procédure sans cette
configuration.
Procédure
1.
Dans Visual Studio, ouvrez l'Explorateur de serveurs.
2.
Développez le nœud Services Crystal, puis le nœud Report Application Server.
3.
Sélectionnez un rapport dans l'arborescence Report Application Server, puis faites-le glisser dans votre
Web Form ou votre Windows Form.
En mode Design, un objet reportDocument1 s'affiche au bas du formulaire.
Remarque
Lorsqu'un rapport Report Application Server est placé dans votre formulaire, une instance de la classe
ReportDocument est ajoutée à la zone Code généré par le concepteur de votre formulaire.
Lorsqu'une classe qui hérite de System.ComponentModel.Component (telle que ReportDocument) est
instanciée et configurée dans la région du code généré par le Concepteur, une icône correspondant à cette
classe instanciée s'affiche au bas du formulaire en mode Design.
4.
Passez en mode code et ouvrez la région du code généré par le Concepteur Web Form ou Windows Form.
Remarque
Une classe ReportDocument a été instanciée et configurée dans cette région.
218
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
5.
Dans la méthode ConfigureCrystalReports() (que vous avez créée dans la section Configuration d'un
projet [page 15]), affectez l'instance de ReportDocument à la propriété ReportSource du contrôle
CrystalReportViewer.
myCrystalReportViewer.ReportSource = reportDocument1
crystalReportViewer.ReportSource = reportDocument1;
6.
Pour visualiser le rapport, générez et exécutez votre projet.
1.4.5.3.2.6.2
Liaison à Crystal Enterprise
(SAP Crystal Reports 10 et versions ultérieures)
Remarque
Les fonctionnalités décrites dans cette page ne sont pas disponibles dans SAP Crystal Reports, version
développeur pour Microsoft Visual Studio mais le sont dans l'une des versions mises à niveau.
Modèle d'objet
Ce scénario de liaison de rapports utilise le modèle d'objet ReportDocument.
Emplacement des rapports
Les rapports se trouvent sur le serveur RAS géré. Ils sont inclus dans la classe ReportDocument.
Présentation des services Crystal
Ce scénario de liaison de rapports s'applique aux rapports accessibles depuis le nœud du serveur de services
Crystal dans l'Explorateur de serveurs.
Cette section présente le sous-nœud de la plateforme SAP BusinessObjects Business Intelligence des services
Crystal dans SAP Crystal Reports Developer.
[NOMSERVEUR]
●
Services Crystal
○
Crystal Enterprise
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
219
Description
Le sous-nœud de la plateforme SAP BusinessObjects Business Intelligence accède aux rapports qui ont été
fournis par un serveur RAS géré dans la plateforme SAP BusinessObjects Business Intelligence, puis les affiche.
Le nœud Services Crystal > Plateforme SAP BusinessObjects Business Intelligence fournit les rapports de Crystal
Enterprise via le serveur RAS géré. Le nœud de la plateforme SAP BusinessObjects Business Intelligence
fonctionne, mais si la plateforme SAP BusinessObjects Business Intelligence n'a pas été installée sur l'ordinateur
de développement, accédez aux propriétés de ce nœud et définissez le nom du serveur de la plateforme SAP
BusinessObjects Business Intelligence sur le réseau.
Lorsque vous déplacez un rapport par glisser-déposer depuis le nœud Services Crystal > Plateforme SAP
BusinessObjects Business Intelligence vers un Web Form ou un Windows Form, une instance de ReportDocument
est générée. La classe ReportDocument fonctionne comme une classe wrapper. Son rôle consiste à représenter le
rapport transmis depuis le serveur RAS dans Crystal Enterprise.
Avantages
●
Accès facile : les rapports situés sur le serveur RAS dans Crystal Enterprise sont facilement accessibles à
partir d'une application Web.
●
Interaction par programmation étendue : fournit un accès au puissant modèle d'objet ReportDocument. La
classe wrapper dans cette version est ReportDocument. C'est la première version des services Crystal qui
donne accès au modèle d'objet ReportDocument.
Inconvénients
●
Codage moins direct : le codage des rapports RAS est moins direct que lorsqu'il est effectué à l'aide du
modèle d'objet ReportClientDocument.
Informations associées
Utilisation des services Crystal [page 84]
1.4.5.3.2.6.2.1
Pour utiliser les Services
Crystal > Crystal Enterprise
Prérequis
●
220
SAP Crystal Reports 10 ou XI doit être installé et en cours de fonctionnement.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Remarque
Cette procédure fonctionne uniquement avec un projet créé à partir de la procédure Configuration d'un projet
[page 15]. La section Configuration d'un projet contient une configuration de références d'espaces de noms et
de code spécifique nécessaire à cette procédure. Il est impossible de suivre cette procédure sans cette
configuration.
Procédure
1.
Dans Visual Studio, ouvrez l'Explorateur de serveurs.
2.
Développez le nœud Services Crystal, puis le nœud Crystal Enterprise.
3.
Sélectionnez un rapport dans l'arborescence Crystal Enterprise, puis faites-le glisser dans votre formulaire.
En mode Design, un objet reportDocument1 s'affiche au bas du formulaire.
Remarque
Lorsqu'un rapport Crystal Enterprise est placé dans votre formulaire, une instance de la classe
ReportDocument est ajoutée à la région du code généré par le Concepteur de votre formulaire.
Lorsqu'une classe qui hérite de System.ComponentModel.Component (telle que ReportDocument) est
instanciée et configurée dans la région du code généré par le Concepteur, une icône correspondant à cette
classe instanciée s'affiche au bas du formulaire en mode Design.
4.
Passez en mode code et ouvrez la région du code généré par le Concepteur Web Form ou Windows Form.
Une classe ReportDocument a été instanciée et configurée dans cette région.
5.
Dans la méthode ConfigureCrystalReports() (que vous avez créée dans la section Configuration d'un
projet [page 15]), affectez l'instance ReportDocument de à la propriété ReportSource du contrôle
CrystalReportViewer.
myCrystalReportViewer.ReportSource = reportDocument1
crystalReportViewer.ReportSource = reportDocument1;
6.
Générez puis exécutez votre projet Web pour visualiser le rapport.
1.4.5.4
Utilisation de rapports standard ou mis en cache ?
Lorsque vous envisagez de générer une application à l'aide du SDK de SAP Crystal Reports, l'un des points les
plus importants à déterminer concerne l'utilisation de rapports standard ou de rapports mis en cache. Connaître
les principes fondamentaux du SDK qui influencent la mise en cache des rapports vous aidera à choisir la
structure la mieux adaptée à votre projet SAP Crystal Reports, version développeur pour Microsoft Visual Studio.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
221
Qu'est-ce qu'un rapport mis en cache ?
Un rapport mis en cache est un objet de rapport qui a été stocké dans l'objet Cache ASP.NET dans le but
d'augmenter les performances et l'évolutivité. SAP Crystal Reports fournit une structure particulière pour la mise
en cache des instances de ReportDocument. Cette structure met automatiquement en cache tout rapport qui
implémente l'interface ICachedReport.
Qu'est ce que l'objet Cache ASP.NET ?
Dans ASP comme dans ASP.NET, les objets de rapport sont placés dans Session ou dans Application sur le
serveur Web pour deux raisons :
1.
Pour garantir la persistance des objets de rapport au fur et à mesure que les pages sont rechargées.
2.
Pour accroître l'évolutivité et les performances en plaçant les rapports volumineux ou lents à se charger dans
la mémoire du serveur.
Dans ASP.NET, une version plus avancée de l'objet Application, appelée Cache, a été introduite. Tout comme
l'objet Application, l'objet Cache rend les instances uniques d'un objet de rapport persistantes. Cache permet en
outre de rechercher des dépendances basées sur des fichiers, des clés ou des délais. Ces dépendances peuvent
arriver à expiration automatiquement et actualiser les objets de rapport stockés dans le cache afin que le contenu
de ce dernier soit toujours actuel.
Les rapports stockés dans Cache sont propres à l'utilisateur et à la session.
Remarque
Les termes "objet Cache" et "Cache", tout comme les termes "objet Session" et "Session" ou "objet
Application" et "Application" sont utilisés de manière interchangeable et signifient la même chose. Le terme
"objet" souligne le fait qu'il s'agit d'objets qui garantissent la persistance et s'exécutent dans l'espace mémoire
du .NET Framework sur le serveur Web.
Comment les objets de rapport sont-ils placés dans l'objet Cache ASP.NET ?
Il existe deux manières de placer les objets de rapport dans l'objet Cache ASP.NET :
●
En affectant les objets de rapport à l'objet Cache à l'aide de la même syntaxe que celle utilisée pour une
affectation à l'objet Session ou Application (affectation explicite).
●
En instanciant une version du rapport qui implémente l'interface ICachedReport. Le moteur de rapport
recherche alors tous les objets de rapport qui implémentent cette interface et place automatiquement ces
objets dans l'objet Cache (affectation implicite).
Qu'est-ce que l'interface ICachedReport ?
L'interface ICachedReport marque d'un indicateur toutes les classes de rapport qui lui permettent de fonctionner
avec la structure de mise en mémoire cache de SAP Crystal Reports. Cette structure personnalisée fournit une
222
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
couche sur l'objet Cache ASP.NET afin de répondre à des besoins spécifiques de mise en mémoire cache des
rapports.
L'interface ICachedReport comporte des signatures de méthodes qui, lorsqu'elles sont implémentées dans la
classe de rapport, indiquent à la structure comment mettre en cache cette classe.
Quelles sont les fonctionnalités de mise en mémoire cache fournies lors de
l'incorporation d'un rapport dans un projet Visual Studio ?
Lorsque vous créez ou importez un rapport dans un projet Visual Studio, ce rapport est incorporé dans le projet et
deux classes sont automatiquement générées :
●
Une classe wrapper (du même nom que le rapport).
Cette classe wrapper représente le rapport dans le projet et hérite de toutes les propriétés et méthodes de
ReportDocument. Pour en savoir plus, voir Comparaison des rapports incorporés et non incorporés [page
165].
●
Une classe utilitaire de gestion du cache (nommée classe Cached[NomRapport]).
Cette classe gère la mise en cache du rapport incorporé à l'aide de l'objet Cache ASP.NET et de la structure
de mise en mémoire cache construite dans le SDK de SAP Crystal Reports.
La table suivante présente les éléments générés lors de l'ajout du rapport de regroupement hiérarchique :
Nom des éléments
Correspond
Hierarchical Grouping.rpt
au rapport
Classe Hierarchical_Grouping
à la classe wrapper du rapport
Classe CachedHierarchical_Grouping
à la classe utilitaire de gestion du cache servant à gérer
la mise en mémoire cache de la classe wrapper du rap­
port
La classe wrapper de rapport et la classe utilitaire de gestion du cache ont des rôles distincts :
●
La classe wrapper de rapport hérite de ReportDocument et, par conséquent, a accès au modèle d'objet
ReportDocument dans son intégralité. Il s'agit de la classe principale que vous programmez pour interagir
avec le rapport.
●
La classe utilitaire de gestion du cache gère et stocke les instances de la classe wrapper de rapport dans
l'objet Cache ASP.NET. Elle identifie les différentes instances de la classe wrapper et évite qu'elles ne
s'écrasent mutuellement dans le Cache. Par exemple, elle distingue les différences générées lorsque les
paramètres et les informations de connexion sont modifiés. Pour cela, elle affecte une clé unique à chaque
instance de la classe wrapper de rapport.
●
Pour s'identifier auprès de la fonction de mise en cache du .NET Framework de SAP Crystal Reports, la classe
utilitaire de gestion du cache implémente l'interface ICachedReport.
La classe wrapper de rapport et la classe utilitaire de gestion du cache sont toutes deux générées dans le même
fichier de classe. Pour les visualiser, cliquez avec le bouton droit de la souris sur le fichier de classe dans
l'Explorateur de solutions, puis sélectionnez Afficher le code. Dans le fichier ouvert, le code correspondant à la
classe wrapper est affiché dans le haut du fichier et le code relatif à la classe utilitaire de gestion du cache est
affiché plus bas, à mi-fichier.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
223
Remarque
Pour apprendre à lier le contrôle CrystalReportViewer à la classe utilitaire de gestion du cache, voir Liaison à
une classe de rapport incorporé et mis en cache [page 205]. Pour créer votre propre classe utilitaire de gestion
du cache afin de la lier à des rapports non incorporés, voir Liaison à un rapport non incorporé chargé dans une
classe utilitaire de gestion du cache [page 207].
Quand mettre les rapports en cache ?
Ne placez qu'un nombre restreint d'objets de rapport dans l'objet Cache ASP.NET. La plupart des objets de
rapport présentent un faible potentiel de partage (en d'autres termes, ils ne sont pas utilisés en tant que
ressources partagées avec d'autres objets). Ils viendraient en quelque sorte "encombrer" le Cache. S'ils doivent
être rendus persistants, placez plutôt les objets de rapport dans l'objet Session de l'utilisateur.
Placez l'objet de rapport dans Cache ASP.NET uniquement si le rapport doit être affiché à de nombreuses
reprises par le même utilisateur au cours d'une session donnée. Ceci est particulièrement important si un objet de
rapport est très volumineux ou s'il contient une requête si complexe que l'extraction de ses données prend
plusieurs minutes.
Informations associées
Liaison à une classe de rapport incorporé et mis en cache [page 205]
1.4.5.5
Affichage d'un rapport au moment de la conception
SAP Crystal Reports vous permet d'afficher l'aperçu d'un rapport au moment de la conception dans Visual Studio.
Lorsqu'un rapport est affecté à la propriété ReportSource dans la fenêtre Propriétés, il s'affiche sous forme
d'aperçu dans le Windows Form ou la page ASPX.
Les données statiques, telles que les dates, images ou champs de texte, s'affichent comme au moment de
l'exécution. Les données dynamiques, telles que les données provenant d'une base de données, peuvent utiliser
des valeurs artificielles à la place des données de votre source de données. Si votre rapport contient des donnée
enregistrées, celles-ci apparaissent dans l'aperçu lors de la conception.
Le SAP Crystal Reports Designer incorporé fournit des fonctionnalités d'affichage supplémentaires via l'onglet
Aperçu. Lorsque vous affichez votre rapport dans l'onglet Aperçu, SAP Crystal Reports tente d'extraire les
nouvelles données de la source de données spécifiée. L'aperçu au moment de la conception ne tente pas
d'extraire de données. Il affiche les données actuellement enregistrées dans le rapport.
Remarque
L'onglet Aperçu n'est pas disponible dans le SAP Crystal Reports Designer pour Visual Studio .NET 2003
incorporé.
224
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Informations associées
Onglet Aperçu [page 658]
1.4.6
Personnalisation du contrôle CrystalReportViewer
Le contrôle CrystalReportViewer permet de lier et d'afficher des rapports dans le .NET Framework. Le contrôle
CrystalReportViewer par défaut inclut des éléments d'interface utilisateur pour vous aider à afficher, enregistrer
et parcourir un rapport.
En fonction de votre application, vous pouvez modifier certains éléments du contrôle par défaut.
SAP Crystal Reports vous permet de personnaliser l'aspect et la convivialité du visualiseur dans votre application
de différentes manières, notamment :
●
La barre d'outils CrystalReportViewer peut être supprimée du visualiseur.
●
Les boutons de la barre d'outils CrystalReportViewer peuvent être ajoutés ou supprimés par programmation.
●
Le contrôle CrystalReportViewer prend en charge la personnalisation via CSS ou Thèmes.
Cette section explique comment modifier le contrôle du visualiseur pour votre application.
Classes utilisées pour la visualisation de rapports
●
CrystalDecisions.Windows.Forms.CrystalReportViewer
Fournit des propriétés, des méthodes et des événements permettant de modifier ou d'extraire les
informations sur la manière dont fonctionne et s'affiche le contrôle CrystalReportViewer.
●
CrystalDecisions.Web.CrystalReportViewer
Fournit des propriétés, des méthodes et des événements permettant de modifier ou d'extraire les
informations sur la manière dont fonctionne et s'affiche le contrôle CrystalReportViewer.
Informations associées
Comment utiliser les contrôles visualiseur de rapports ? [page 43]
1.4.6.1
Indicateur de traitement de rapport
L'indicateur de traitement de rapport fournit une indication visuelle du temps de traitement sur votre site Web
SAP Crystal Reports. Lorsque le temps de traitement du rapport dépasse un seuil spécifié, une boîte de dialogue
apparaît pour fournir une indication sur le progrès de l'action en cours.
Le texte de la boîte de dialogue et le délai préalable à l'apparition de la boîte de dialogue peuvent être spécifiés
dans le fichier Web.Config de votre site Web.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
225
Le texte par défaut est : Veuillez patienter pendant le traitement du document.
Le délai par défaut préalable à l'apparition de l'indicateur de traitement de rapport est de 200 ms.
Informations associées
Configuration du fichier Web.Config [page 20]
1.4.6.1.1
Personnalisation du texte de l'indicateur de
traitement de rapport
Contexte
Le texte du message de l'indicateur de traitement de rapport est configuré dans le fichier Web.Config de votre
site Web.
Procédure
1.
Ajoutez un contrôle CrystalReportViewer à votre application.
2.
Ouvrez votre fichier Web.config.
Si vous ne disposez pas de fichier Web.Config, cliquez sur
Déboguer
Démarrer le débogage
pour
déboguer votre application. Visual Studio vous invite à créer un fichier Web.Config. Cliquez sur OK pour créer
le fichier.
3.
Dans votre fichier Web.Config, ajoutez le paramètre NameValueSectionHandler en tant que premier
enfant de l'élément de configuration.
<configSections>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="crystalReportViewer"
type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</sectionGroup>
</configSections>
L'élément configSections doit être l'unique premier enfant de l'élément configuration. Si vous disposez
déjà d'un élément configSections pour SAP Crystal Reports, ajoutez l'élément section de
CrystalReportViewer au nœud configSections existant.
4.
Ajoutez le paramètre processingIndicatorText directement après l'élément configSections.
<businessObjects>
<crystalReports>
226
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
<crystalReportViewer>
<add key="processingIndicatorText" value="Thank you for waiting"/>
</crystalReportViewer>
</crystalReports>
</businessObjects>
5.
Remplacez le texte de l'attribut value par le message à afficher dans l'indicateur de traitement de rapport.
L'élément processingIndicatorText contrôle le texte affiché dans l'indicateur de traitement de rapport.
Le texte par défaut est : Veuillez patienter pendant le traitement du document.
Résultats
Le contrôle CrystalReportViewer doit à présent utiliser le message personnalisé dans l'indicateur de traitement de
rapport.
Exemple
Cet exemple réduit le délai de l'indicateur de traitement de rapport à 20 ms et remplace le message affiché par
“Merci d'avoir patienté”.
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="crystalReportViewer"
type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</sectionGroup>
</configSections>
<businessObjects>
<crystalReports>
<crystalReportViewer>
<add key="processingIndicatorText" value="Thank you for waiting."/>
<add key="processingIndicatorDelay" value="20"/>
</crystalReportViewer>
</crystalReports>
</businessObjects>
<appSettings>
<add key="CrystalImageCleaner-AutoStart" value="true"/>
<add key="CrystalImageCleaner-Sleep" value="60000"/>
<add key="CrystalImageCleaner-Age" value="120000"/>
</appSettings>
<connectionStrings/>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="CrystalDecisions.Web, Version=12.0.2000.0,
Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.Shared, Version=12.0.2000.0,
Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.ReportSource, Version=12.0.2000.0,
Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.CrystalReports.Engine,
Version=12.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
</assemblies>
</compilation>
<authentication mode="Windows"/>
<httpHandlers>
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
227
<add verb="GET" path="CrystalImageHandler.aspx"
type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web,
Version=12.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
</httpHandlers>
</system.web>
</configuration>
1.4.6.1.2
Modification du délai préalable à l'apparition de
l'indicateur de traitement de rapport
Contexte
Le délai préalable à l'apparition de l'indicateur de traitement de rapport est configuré dans le fichier Web.Config
de votre site Web. L'élément processingIndicatorDelay contrôle le délai préalable à l'apparition de
l'indicateur de traitement de rapport.
Procédure
1.
Ajoutez un contrôle CrystalReportViewer à votre application.
2.
Ouvrez votre fichier Web.config.
Si vous ne disposez pas de fichier Web.Config, cliquez sur
Déboguer
Démarrer le débogage
pour
déboguer votre application. Visual Studio vous invite à créer un fichier Web.Config. Cliquez sur OK pour créer
le fichier.
3.
Dans votre fichier Web.Config, ajoutez le paramètre NameValueSectionHandler en tant que premier
enfant de l'élément de configuration.
<configSections>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="crystalReportViewer"
type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</sectionGroup>
</configSections>
L'élément configSections doit être l'unique premier enfant de l'élément configuration. Si vous disposez
déjà d'un élément configSections pour SAP Crystal Reports, ajoutez l'élément section de
CrystalReportViewer au nœud configSections existant.
4.
Ajoutez le paramètre processingIndicatorDelay directement après l'élément configSections.
<businessObjects>
<crystalReports>
<crystalReportViewer>
<add key="processingIndicatorDelay" value="20"/>
</crystalReportViewer>
228
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
</crystalReports>
</businessObjects>
5.
Remplacez le texte de l'attribut value par la durée qui doit s'écouler avant l'apparition de l'indicateur de
traitement de rapport.
La valeur est spécifiée en millisecondes. Le fait de définir cette valeur sur 0 désactive l'indicateur de
traitement de rapport. La valeur par défaut est de 200 ms.
Exemple
Cet exemple réduit le délai de l'indicateur de traitement de rapport à 20 ms et remplace le message affiché par
“Merci d'avoir patienté”.
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="crystalReportViewer"
type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</sectionGroup>
</configSections>
<businessObjects>
<crystalReports>
<crystalReportViewer>
<add key="processingIndicatorText" value="Thank you for waiting."/>
<add key="processingIndicatorDelay" value="20"/>
</crystalReportViewer>
</crystalReports>
</businessObjects>
<appSettings>
<add key="CrystalImageCleaner-AutoStart" value="true"/>
<add key="CrystalImageCleaner-Sleep" value="60000"/>
<add key="CrystalImageCleaner-Age" value="120000"/>
</appSettings>
<connectionStrings/>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="CrystalDecisions.Web, Version=12.0.2000.0,
Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.Shared, Version=12.0.2000.0,
Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.ReportSource, Version=12.0.2000.0,
Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.CrystalReports.Engine,
Version=12.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
</assemblies>
</compilation>
<authentication mode="Windows"/>
<httpHandlers>
<add verb="GET" path="CrystalImageHandler.aspx"
type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web,
Version=12.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
</httpHandlers>
</system.web>
</configuration>
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
229
1.4.6.2 Prise en charge de plusieurs langues avec le contrôle
CrystalReportViewer
SAP Crystal Reports, version développeur pour Microsoft Visual Studio inclut la prise en charge des clients Web et
Windows multilingues via une localisation dynamique.
La localisation dynamique permet aux utilisateurs d'afficher des info-bulles ainsi que d'autres contenus du
contrôle CrystalReportViewer dans la langue de leur choix. Pour activer la localisation dynamique, vous devez
rendre disponible les fichiers de ressources de langue dans la langue souhaitée.
Informations associées
Tutoriel : Configuration de la prise en charge de client multilingue [page 590]
Dans ce tutoriel, vous allez apprendre à configurer la prise en charge de client multilingue dans un site Web ou
un projet Windows.
1.4.6.2.1
Fichiers de ressources de langue
Les fichiers de ressources de langue contiennent une série de paires clés/valeurs qui fournissent le texte affiché
dans l'application. Pour chaque élément de texte qui apparaît dans une application de rapport Crystal, il existe une
valeur correspondante dans le fichier de ressources de langue qui spécifie la manière dont doit apparaître le texte
dans chaque langue.
Fichiers de ressources de langue
Sur le serveur Web ou le client Windows, vous pouvez accéder aux ressources de langue du contrôle
CrystalReportViewer à partir de deux sources différentes :
●
●
230
Les fichiers DLL de ressources de langue par défaut, comprenant les langues suivantes :
○
Anglais (en)
○
Français (fr)
○
Allemand (de)
○
Espagnol (es)
○
Italien (it)
○
Japonais (jp)
○
Coréen (ko)
○
Chinois simplifié (zh-chs)
○
Chinois traditionnel (zh-cht)
Les fichiers de ressources de langue personnalisées, qui sont créés sous forme de chaînes de texte, puis
compilés en tant que fichiers DLL de ressources de langue personnalisées.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Ressources neutres et non neutres
Les ressources de langue comprennent des ressources neutres et non neutres.
Les ressources neutres représentent un paramètre de langue général, tel que en (pour l'anglais), fr (pour le
français) et jp (pour le japonais).
Les ressources non neutres représentent une version de la langue qualifiée par des critères supplémentaires, tels
que la région : par exemple, de-AT pour Allemand (Autriche).
Ressources globales et locales
Les ressources de langue par défaut sont installées dans le GAC et sont donc toujours disponibles de manière
globale, mais les ressources de langue personnalisée sont accessibles de manière globale ou locale.
Le dossier des ressources de langue peut être stocké dans un emplacement central et partagé à partir de cet
emplacement ou bien il peut être copié dans un répertoire local de l'application Web ou Windows.
Lorsque les ressources de langue sont stockées dans un emplacement central, on les appelle des ressources
globales. Dans ce scénario, l'application Web ou Windows doit être informée de leur emplacement grâce aux
paramètres d'un fichier de configuration XML. Pour que le chargement d'une ressource globale s'effectue
correctement, le nom du dossier contenant les fichiers de la ressource doit correspondre aux paramètres
régionaux de la langue.
Si les ressources de langue sont copiées dans le répertoire local, on les appelle des ressources locales. Dans ce
scénario, aucun fichier de configuration n'est nécessaire. Pour que le chargement d'une ressource locale
s'effectue correctement, la culture des fichiers de ressource et le nom du dossier contenant les fichiers de
ressource doivent correspondre aux paramètres régionaux de langue.
Choix entre ressources globales et ressources locales
Choisissez de préférence les ressources globales lorsque les ressources doivent être partagées avec plusieurs
applications. Par exemple, l'utilisation des ressources globales est plus adaptée à un serveur Web contenant
plusieurs sites Web requérant le partage d'un ensemble de ressources de langues à travers tous les sites Web.
Choisissez de préférence les ressources locales lorsque les ressources sont utilisées par une seule application,
dont la large distribution requiert une configuration simple. Par exemple, l'utilisation des ressources locales est
plus adaptée à une application Windows composée d'un seul dossier d'application destiné à une large distribution.
La plupart du temps, les applications Web sont plus adaptées aux ressources globales et les applications
Windows sont plus adaptées aux ressources locales.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
231
Quelle ressource est chargée en premier ?
Si vous configurez des ressources globales et locales pour une application particulière, les ressources locales sont
prioritaires (elles sont chargées en premier). Si vous souhaitez garantir l'utilisation des ressources globales,
vérifiez que votre fichier de configuration est correct et supprimez le dossier de ressources locales.
Les ressources neutres et non neutres sont également influencées par l'ordre de chargement des ressources. Si
vous avez configuré des ressources neutres et non neutres pour une langue donnée (telles que "allemand
(Autriche)" et "allemand"), les ressources non neutres sont vérifiées en premier.
Dans les deux cas, le spécifique prévaut sur le général.
Affichage côté client
Les facteurs suivants déterminent la langue affichée par l'application cliente au moment de l'exécution :
Dans une application Windows :
●
les paramètres régionaux de l'ordinateur de chaque utilisateur.
Dans un site Web :
●
les paramètres régionaux du serveur Web ;
●
les paramètres de langue du navigateur client ;
●
la propriété Culture que vous définissez sur une autre page ASPX.
1.4.6.2.2
Prise en charge des standards de codage de
caractères Unicode et GB18030
SAP Crystal Reports, version développeur pour Microsoft Visual Studio inclut la prise en charge des caractères
internationaux selon les standards de codage de caractères suivants :
●
Unicode
●
GB18030
Pour comprendre comment SAP Crystal Reports prend en charge le codage de caractères Unicode et GB18030,
vous devez connaître les trois différentes vues de caractères (répertoire de caractères, caractères sous forme de
points de code, caractères sous forme de données codées). Vous devez également connaître la relation entre les
points de code (terme plus précis désignant les caractères codés) et les unités de code.
1.4.6.2.2.1
Vues des caractères
Pour comprendre les standards de codage de caractères, vous devez faire la distinction entre trois vues de
caractères :
232
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
●
Le répertoire de caractères (la liste résumée des caractères).
●
Les caractères sous forme de points de code avec valeurs scalaires.
●
Les caractères sous forme de données codées.
Répertoire de caractères (liste résumée des caractères)
Le répertoire de caractères est une liste résumée de plus d'un million de caractères que l'on retrouve dans une
grande diversité de scripts, notamment le latin, le cyrillique, le chinois, le coréen, le japonais, l'hébreu et
l'araméen. D'autres symboles tels que des notes de musique sont également inclus dans le répertoire de
caractères.
Les standards de codage de caractères Unicode et GB18030 possèdent tous deux un répertoire de caractères.
Lorsque de nouveaux caractères sont ajoutés à un standard, l'autre standard ajoute également ces caractères
pour maintenir la parité.
Caractères sous forme de points de code avec valeurs scalaires
Remarque
Cette seconde vue des caractères s'applique uniquement au format Unicode, et non à GB18030.
Chaque caractère du répertoire de caractères est affecté à un point de code. Chaque point de code a une valeur
numérique spécifique que l'on appelle valeur scalaire. La valeur scalaire est souvent exprimée en hexadécimaux.
Les points de code se situent dans un espace de code. Cet espace de code contient différentes valeurs scalaires
qui se répartissent sur deux plans :
●
Le plan BMP (Basic Multilingual Plane) (taille : 64k).
Dans le standard Unicode, l'expression en hexadécimaux des valeurs de ce plan inférieur se situe entre U
+0000 et U+FFFF.
●
Plan SMP (Supplemental Multilingual Plane) (16 sections supplémentaires d'une taille de 64k).
Dans le standard Unicode, l'expression en hexadécimaux des valeurs de ce plan supérieur se situe entre U
+10000 to U+10FFFF.
L'espace de code complet pour toutes les valeurs scalaires possibles est égal à une taille de 17 * 64k
(1 088 000 valeurs possibles).
Caractères sous forme de données codées
Chaque format de codage convertit des caractères du répertoire de caractères en données codées.
Dans le format GB18030, les données codées sont directement dérivées du répertoire de caractères : le concept
d'une valeur scalaire jouant le rôle d'intermédiaire entre le répertoire de caractères et les données codées
s'applique uniquement à Unicode.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
233
Dans le format Unicode, les données codées sont obtenues en appliquant un algorithme à la valeur scalaire.
Unicode définit trois formats de codage de caractères :
●
UTF-8
●
UTF-16
●
UTF-32
1.4.6.2.2.2
code
Relation entre les points de code et les unités de
Pour comprendre comment SAP Crystal Reports, version développeur pour Visual Studio</nom_produit> prend
en charge GB18030 et Unicode, il est important de comprendre la relation entre les points de code et les unités de
code.
Points de code et unités de code
Dans chaque format de codage, les points de code sont mis en correspondance avec une ou plusieurs unités de
code.
Une unité de code est une unité unique au sein de chaque format de codage. La taille de l'unité de code est
équivalente à la valeur en bits du format de codage concerné :
●
Une unité de code UTF-8 est égale à 8 bits.
●
Une unité de code UTF-16 est égale à 16 bits.
●
Une unité de code UTF-32 est égale à 32 bits.
●
Avec GB18030, une unité de code est égale à 8 bits.
Nombre d'unités de code dans chaque point de code
Le nombre d'unités de code devant être mises en correspondance avec un point de code varie en fonction des
formats de codage :
●
UTF-8
Le codage UTF-8 comporte souvent plusieurs unités de code par point de code, car les unités de code sont
plus petites. Les points de code sont mis en correspondance avec une, deux, trois ou quatre unités de code.
●
UTF-16
Les unités de code UTF-16 sont deux fois plus volumineuses que les unités de code 8 bits. Par conséquent, un
point de code dont la valeur scalaire est inférieure à U+10000 est codé avec une seule unité de code.
Pour les points de code dont la valeur scalaire est supérieure ou égale à U+10000, deux unités de code sont
nécessaires par point de code. Ces paires d'unités de code sont désignées par un terme unique en codage
UTF-16 : "paires de substitution Unicode".
234
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Remarque
La prise en charge des paires de substitution est abordée ci-dessous.
●
UTF-32
L'unité de code 32 bits utilisée dans le codage UTF-32 est suffisamment volumineuse pour que chaque point
de code soit codé avec une seule unité de code.
●
GB18030
Le codage GB18030 comporte souvent plusieurs unités de code par point de code, car les unités de code sont
plus petites. Les points de code sont mis en correspondance avec une, deux ou quatre unités de code.
Prise en charge des paires de substitution Unicode
Certains scripts pris en charge par le standard Unicode contiennent des caractères dont les points de code ont
une valeur scalaire supérieure ou égale à U+10000. Dans le codage UTF-16, ces points de code sont codés à l'aide
de paires de substitution.
Il est important que les paires de substitution Unicode soient manipulées correctement. Par exemple, lorsque
vous travaillez sur un texte dans une application utilisant le codage UTF-16, le curseur doit se déplacer sur chaque
point de code comme s'il s'agissait d'un caractère texte unique lors de l'ajout, de la suppression ou de la sélection
de caractères à couper, copier ou coller.
1.4.6.2.2.3
Prise en charge de GB18030 via Unicode par
SAP Crystal Reports
SAP Crystal Reports, version développeur pour Microsoft Visual Studio</nom_produit> ne prend pas
directement en charge le codage GB18030. Il accède au standard GB18030 par le biais de valeurs qui ont déjà été
converties dans l'un des formats de codage Unicode.
Les conversions sont effectuées par différentes sources, notamment le .NET Framework, certains pilotes de
bases de données et le système d'exploitation Windows. Le texte est généralement stocké sur le disque dur au
format UTF-8, puis chargé en mémoire au format UTF-16. SAP Crystal Reports prend en charge les paires de
substitution Unicode en UTF-16.
Exemples de prise en charge du format GB18030 via Unicode
Les principaux cas de figure de prise en charge du format GB18030 via la conversion en Unicode sont les
suivants :
●
Bases de données contenant des données codées en GB18030
Les données codées en GB18030 sont prises en charge uniquement lorsque le pilote de la base de données
convertit les données en UTF-16 au moment de leur extraction.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
235
Remarque
Microsoft SQL Server 2005 convertit les données GB18030 en UTF-16 au moment de leur extraction. Pour
les autres serveurs, consultez le fournisseur de votre base de données.
●
DataSets exposant les données issues d'une source GB18030
Quelle que soit la source d'origine, les DataSets sont formatés en XML, lequel est encodé en UTF-8.
●
Services Web qui exposent des données issues d'une source GB18030
Le texte envoyé ou reçu via un service Web est déjà converti en Unicode.
Scénarios GB18030 non pris en charge
SAP Crystal Reports ne permet pas d'accéder aux fichiers texte codés au format GB18030, ni de les importer.
Le fichier texte codé au format GB18030 doit d'abord être converti au format Unicode par un tiers afin que
SAP Crystal Reports puisse ensuite interagir avec le fichier texte codé au format Unicode.
1.4.6.3
Gestion des événements Error
Dans les précédentes versions de SAP Crystal Reports, version développeur pour Microsoft Visual Studio, chaque
fois que vous utilisiez le contrôle CrystalReportViewer, vous deviez intercepter toutes les éventuelles
exceptions renvoyées. Toute exception non interceptée interrompait le traitement des pages et générait un
message d'erreur.
Afin d'éviter les interruptions et les erreurs, un nouvel événement à été ajouté au contrôle
CrystalReportViewer : l'événement Error. Lorsque cet événement est utilisé, des messages d'exception
s'affichent au début du contrôle CrystalReportViewer sans entraîner d'interruption.
1.4.6.3.1
Pour supprimer la page d'erreur à l'aide de la
méthode d'événement Error
Contexte
Pour supprimer l'exception renvoyée, vous devez appeler la méthode d'événement Error et définir
ErrorEventArgs.Handled sur True dans le gestionnaire d'événements.
Procédure
1.
236
Ajoutez la méthode d'événement Error à votre classe code-behind.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
2.
Définissez ErrorEventArgs.Handled sur True dans le gestionnaire d'événements.
Exemple
Sub myCrystalReportViewer_Error(ByVal source As Object, ByVal e As
CrystalDecisions.Web.ErrorEventArgs)
e.Handled = True
End Sub
void crystalReportViewer_Error(object source,
CrystalDecisions.Web.ErrorEventArgs e)
{
e.Handled = true;
}
1.4.6.4 Personnalisation du contrôle CrystalReportViewer
avec la CSS
L'apparence visuelle du contrôle CrystalReportViewer est créée grâce à des graphiques et des feuilles de style en
cascade (CSS).
La feuille de style, nommée default.css, est stockée dans un sous-répertoire du répertoire virtuel du
visualiseur nommé css.
Remarque
Dans Visual Studio 2005 et versions ultérieures (ainsi que dans ASP.NET version 2.0), l'aspect des contrôles
visuels peut être géré par un nouvel outil appelé Thèmes. Les thèmes peuvent être appliqués au contrôle
CrystalReportViewer afin de garantir la cohérence de l'aspect des contrôles au sein d'une même page ou dans
l'intégralité d'un site Web.
Informations associées
Personnalisation du contrôle CrystalReportViewer avec Thèmes [page 238]
Boîte de dialogue Définir la classe CSS [page 953]
Mise en forme de rapports à l'aide de feuilles de style en cascade [page 743]
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
237
1.4.6.4.1
Personnalisation de la CSS pour le contrôle
CrystalReportViewer
Contexte
Cette feuille de style est accessible via la propriété CssFileName du contrôle CrystalReportViewer et peut
être visualisée dans la fenêtre Propriétés lorsque leCrystalReportViewer contrôle est sélectionné en mode
Design.
Procédure
1.
Créez un site Web contenant un contrôle CrystalReportViewer et un rapport Crystal.
2.
Compilez et exécutez le projet au moins une fois pour visualiser le contrôle CrystalReportViewer avec ses
paramètres de style par défaut, puis quittez le mode débogage.
3.
Ouvrez la page Default.aspx en mode Design.
4.
Cliquez une fois sur le contrôle CrystalReportViewer pour le sélectionner.
5.
Dans la fenêtre Propriétés, localisez le chemin d'accès au répertoire du fichier default.css dans la propriété
CssFileName.
6.
Dans l'Explorateur Windows, localisez ce fichier et copiez-le dans le répertoire de votre site Web.
7.
Renommez le fichier en custom.css.
8.
Modifiez la propriété CssFileName de sorte qu'elle pointe sur le répertoire du site Web et sur le fichier
custom.css.
9.
Recompilez votre projet et assurez-vous que le contrôle CrystalReportViewer voit le fichier custom.css dans le
répertoire de votre site Web local.
10. Quittez le mode débogage.
11. Ouvrez le fichier custom.css, puis modifiez la feuille de style.
12. Recompilez le projet et vérifiez que vos modifications ont été appliquées au contrôle CrystalReportViewer.
1.4.6.5 Personnalisation du contrôle CrystalReportViewer
avec Thèmes
Thèmes est un outil qui permet de donner un aspect et une convivialité identique à tous les contrôles visuels d'une
page (ou de tout un site Web).
Pour gérer l'aspect des contrôles visuels au niveau de la page, affectez le nom d'un thème à la propriété Theme
d'un contrôle visuel. Ce thème sera alors appliqué à tous les contrôles visuels de la page.
Le contrôle CrystalReportViewer est compatible avec les thèmes ASP.NET 2.0. Toute modification apportée à un
thème est répercutée sur le contrôle CrystalReportViewer ainsi que sur tous les autres contrôles de la page.
Pour en savoir plus sur la configuration et la personnalisation des thèmes dans ASP.NET 2.0, voir la
documentation de .NET Framework version 2.0.
238
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Informations associées
Personnalisation du contrôle CrystalReportViewer avec la CSS [page 237]
1.4.6.6 Personnalisation de la barre d'outils
CrystalReportViewer
La barre d'outils CrystalReportViewer contient des boutons contrôlant les fonctions courantes du contrôle
CrystalReportViewer, telles que l'impression, l'exportation ou le changement de la page en cours d'affichage.
Personnalisation des boutons de la barre d'outils
La barre d'outils CrystalReportViewer contient des boutons contrôlant les fonctions courantes du contrôle
CrystalReportViewer, telles que l'impression, l'exportation ou le changement de la page en cours d'affichage.
La visibilité de chaque bouton sur le contrôle CrystalReportViewer est contrôlée via une propriété correspondante
de la classe CrystalReportViewer. Les noms des propriétés diffèrent entre les versions Windows et Web du
contrôle CrystalReportViewer.
Sur un site Web, l'apparence de la barre d'outils peut être contrôlée via la CSS ou via Thèmes ASP .Net. Vous
pouvez modifier l'apparence des icônes de boutons par défaut en modifiant les images dans le répertoire virtuel
du visualiseur.
Suppression de la barre d'outils
Vous pouvez supprimer la barre d'outils du contrôle CrystalReportViewer par programmation ou via le panneau
Tâches guidées. Vous pouvez créer des contrôles personnalisés pour répliquer le comportement de nombreux
boutons de la barre d'outils CrystalReportViewer.
Informations associées
Personnalisation du contrôle CrystalReportViewer avec la CSS [page 237]
Personnalisation du contrôle CrystalReportViewer avec Thèmes [page 238]
Répertoire des visualiseurs [page 14]
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
239
1.4.6.6.1
Contrôle des boutons apparaissant sur la barre
d'outils CrystalReportViewer
Chacun des boutons de la barre d'outils CrystalReportViewer peut être activé ou désactivé individuellement.
La visibilité de chaque bouton sur le contrôle CrystalReportViewer est contrôlée via une propriété correspondante
de la classe CrystalReportViewer. Il existe deux contrôles CrystalReportViewer dans le SDK
SAP Crystal Reports .NET. Pour un site Web, utilisez la classe
CrystalDecisions.Web.CrystalReportViewer. Pour une application Windows, utilisez la classe
CrystalDecisions.Windows.Forms.CrystalReportViewer.
Le nom de la propriété qui contrôle la visibilité d'un bouton de la barre d'outils diffère selon la version du contrôle
CrystalReportViewer que vous utilisez. Pour la classe CrystalDecisions.Web.CrystalReportViewer,
chaque propriété commence par “Has”, comme HasExportButton, HasPrintButton ou HasSearchButton.
En ce qui concerne la classe CrystalDecisions.Windows.Forms.CrystalReportViewer, chaque propriété
commence par “Show”, comme ShowExportButton, ShowPrintButton ou ShowSearchButton.
Pour en savoir plus sur la classe CrystalDecisions.Web.CrystalReportViewer ou la classe
CrystalDecisions.Windows.Forms.CrystalReportViewer, voir la Référence de l'API .NET
SAP Crystal Reports.
Remarque
La suppression d'un bouton de la barre d'outils ne désactive pas le comportement correspondant.
Exemple
Cet exemple montre comment supprimer plusieurs boutons de la barre d'outils CrystalReportViewer dans un
site Web.
Private Sub ConfigureCrystalReports()
CrystalReportViewer1.HasPrintButton = False
CrystalReportViewer1.HasExportButton = False
CrystalReportViewer1.HasSearchButton = False
End Sub
private void ConfigureCrystalReports()
{
InitializeComponent();
crystalReportViewer1.HasPrintButton = false;
crystalReportViewer1.HasExportButton = false;
crystalReportViewer1.HasSearchButton = false;
}
Informations associées
Suppression du bouton d'impression depuis le contrôle CrystalReportViewer [page 115]
Suppression du bouton d'exportation depuis le contrôle CrystalReportViewer [page 128]
240
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.4.6.6.2 Suppression de la barre d'outils
CrystalReportViewer
Contexte
Conseil
La barre d'outils peut être supprimée de votre application par programmation ou en décochant la case Afficher
la barre d'outils dans le panneau Tâches guidées des Tâches CrystalReportViewer.
Procédure
1.
Ajoutez un contrôle CrystalReportViewer à votre application.
2.
Définissez la propriété CrystalReportViewer.DisplayToolbar sur False.
Résultats
Lorsque vous exécuterez votre application, la barre d'outils ne devrait plus apparaître sur le contrôle
CrystalReportViewer.
Exemple
Private Sub ConfigureCrystalReports()
CrystalReportViewer1.DisplayToolbar = False
End Sub
private void ConfigureCrystalReports()
{
InitializeComponent();
crystalReportViewer1.DisplayToolbar = false;
}
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
241
1.4.6.6.3 Modification des boutons de la barre d'outils par
défaut dans le visualiseur Web
Contexte
La barre d'outils CrystalReportViewer se compose de différents graphiques qui représentent la plupart des
propriétés disponibles. Les graphiques sont stockés dans le répertoire virtuel du visualiseur de votre version de
SAP Crystal Reports, version développeur pour Microsoft Visual Studio.
Pour un site Web, la barre d'outils utilise des graphiques qui représentent les propriétés suivantes :
●
Arborescence des groupes
●
Exporter
●
Imprimer
●
Explorer en amont
●
Navigation : première page, dernière page, page précédente et page suivante
●
Aller à la page
●
Rechercher
●
Logo SAP BusinessObjects
Il est possible de remplacer ces boutons par votre propre jeu d'icônes personnalisées.
Procédure
1.
Naviguez jusqu'au répertoire virtuel du visualiseur.
2.
Cliquez deux fois sur le dossier images.
3.
Cliquez deux fois sur le dossier toolbar.
Dans le dossier "toolbar", vous trouverez toutes les images utilisées pour la barre d'outils
CrystalReportViewer.
4.
Remplacez les images par d'autres images de votre choix ou ouvrez les images dans un éditeur de graphiques
pour les modifier. Le nom de l'image doit toutefois rester le même.
Résultats
Les images de la barre d'outils CrystalReportViewer sont remplacées pour toutes les applications Web
utilisant le répertoire virtuel du visualiseur.
Informations associées
Répertoire des visualiseurs [page 14]
242
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.4.7
Utilisation des rapports SAP Crystal Reports Read-Only
(RPTR)
Les rapports SAP Crystal Reports Read-Only (RPTR) sont des rapports Crystal qui peuvent être visualisés avec
des applications de visualiseur de rapport, mais qui ne peuvent pas être modifiés avec le SDK ni ouverts par des
applications de concepteur de rapports. Cela vous permet de protéger votre propriété intellectuelle en empêchant
les utilisateurs de modifier le rapport ou d'obtenir les informations en lien avec votre logique métier stockées dans
la définition du rapport.
Les rapports au format SAP Crystal Reports Read-Only utilisent l'extension de fichier RPTR à la place de
l'extension de fichier RPT utilisée par les rapports Crystal. Vous pouvez créer un rapport RPTR en exportant un
rapport RPT au format RPTR. Cependant, la conversion d'un rapport RPTR en rapport RPT n'est pas prise en
charge.
La définition d'un rapport RPTR ne pouvant pas être modifiée, il n'est pas possible d'utiliser ce SDK pour définir
l'emplacement de la source de données d'un rapport RPTR via le contrôleur de base de données. Il est en
revanche possible d'actualiser les données d'un rapport RPTR au moment de l'exécution.
Vous pouvez utiliser ce SDK pour exécuter les tâches suivantes :
●
Créer un rapport RPTR en exportant un rapport Crystal (RPT) au format RPTR.
Remarque
Seuls les rapports créés par SAP Crystal Reports 2011 peuvent être exportés au format RPTR.
●
Afficher un rapport RPTR en obtenant la source du rapport et en la transmettant au visualiseur.
●
Actualiser les données d'un rapport RPTR au moment de l'exécution.
●
Ouvrir un rapport RPTR et l'exporter sous d'autres formats que RPT.
Vous ne pouvez en revanche pas utiliser ce SDK pour exécuter les tâches suivantes :
●
Modifier la définition du rapport d'un rapport RPTR.
●
Définir l'emplacement de la source de données du rapport.
●
Extraire les informations relatives à la définition d'un rapport RPTR, notamment les formules, les champs, les
sections et les objets du rapport.
●
Exporter un rapport RPTR au format RPT.
●
Ajouter un rapport RPTR en tant que sous-rapport d'un rapport RPT.
1.5
1.5.1
Tutoriels
Tutoriels du modèle d'objet CrystalReportViewer
Les tutoriels présentés dans cette section utilisent des méthodes et des propriétés de la classe
CrystalReportViewer et les classes de l'espace de noms CrystalDecisions.Shared.
Les tutoriels présentés dans cette section utilisent des méthodes et des propriétés de la classe
CrystalReportViewer et les classes de l'espace de noms CrystalDecisions.Shared.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
243
1.5.1.1
Tutoriel : Connexion à une base de données SQL
Server sécurisée
Dans ce tutoriel, vous allez apprendre à ajouter un code de connexion afin d'afficher un rapport contenant des
informations provenant d'une base de données SQL Server sécurisée.
Introduction
Lorsque vous utilisez le modèle d'objet CrystalReportViewer pour vous connecter à une base de données SQL
Server sécurisée, vous devez utiliser les classes de l'espace de noms CrystalDecisions.Shared.
Les propriétés de la classe ConnectionInfo permettent la connexion au serveur de base de données ou aux
sources de données ODBC. Dans ce tutoriel, vous allez définir les propriétés ServerName, DatabaseName, UserID
et Password. Si vous définissez uniquement les propriétés DatabaseName, UserID et Password, vous êtes
connecté au serveur par défaut de la base de données spécifiée dans le rapport. Toutefois, si vous affectez une
autre propriété ServerName, vous pouvez rediriger le rapport vers un serveur différent au moment de l'exécution.
Vous extrayez l'instance TableLogOnInfos de la propriété LogOnInfo du contrôle CrystalReportViewer. Vous
affectez ensuite l'instance ConnectionInfo à chaque objet TableLogOnInfo de l'instance TableLogOnInfos.
Le code de connexion de ce tutoriel s'applique également aux sous-rapports insérés dans le rapport principal.
Pour le modèle d'objet ReportDocument, vous devez modifier le code pour l'adapter aux sous-rapports (voir
Tutoriel : Connexion à une base de données SQL Server sécurisée avec un sous-rapport [page 382]).
Pour créer ce tutoriel à l'aide du modèle d'objet ReportDocument, voir Tutoriel : Connexion à une base de données
SQL Server sécurisée [page 244] utilisant le modèle d'objet ReportDocument. Il est recommandé d'utiliser le
modèle d'objet ReportDocument plutôt que le modèle d'objet CrystalReportViewer.
Exemple de code
Chaque tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez
les instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir
d'une version terminée.
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les noms des
dossiers de chaque version d'exemple de code sont les suivants :
●
Site Web C# : CS_Web_CRVObjMod_DBLogon
●
Projet Windows C# : CS_Win_CRVObjMod_DBLogon
●
Site Web Visual Basic : VB_Web_CRVObjMod_DBLogon
●
Projet Windows Visual Basic : VB_Win_CRVObjMod_DBLogon
Informations associées
Choisir le modèle d'objet correct pour votre projet [page 32]
244
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Répertoire d'exemples de rapports [page 15]
1.5.1.1.1
Création d'un rapport connecté à une base de
données SQL Server sécurisée
Prérequis
●
Configuration de SQL Server :
○
Si vous disposez de SQL Server (ou de la version OEM, MSDE), il doit être configuré de manière à exiger
une authentification SQL Server.
○
Si vous ne disposez pas de SQL Server (ou de la version OEM, MSDE), vous devez installer MSDE en
attribuant à l'authentification SQL Server la valeur True.
●
La base de données Northwind fournie avec SQL Server doit être installée et vous devez vérifier que
l'authentification SQL Server est bien requise.
●
Vous devez créer un compte à accès limité qui sera utilisé au sein du site Web.
Contexte
Après avoir configuré SQL Server et la base de données Northwind conformément aux instructions des sections
ci-dessus, vous êtes prêt à créer un rapport dont les informations proviennent, de façon sécurisée, de la base de
données Northwind.
Remarque
Cette procédure fonctionne uniquement avec un projet créé à partir de la procédure Configuration d'un projet
[page 15]. La section Configuration d'un projet contient une configuration de références d'espaces de noms et
de code spécifique nécessaire à cette procédure. Il est impossible de suivre cette procédure sans cette
configuration.
Procédure
1.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du projet affiché en gras,
pointez sur Ajouter, puis cliquez sur Nouvel élément.
2.
Dans la boîte de dialogue Ajouter un nouvel élément, dans la vue Modèles, sélectionnez le modèle Rapport
Crystal.
3.
Dans le champ Nom, saisissez le nom "NorthwindCustomers.rpt", puis cliquez sur Ouvrir.
4.
Dans le panneau Créer un document de rapport Crystal de la boîte de dialogue Galerie de rapports Crystal,
sélectionnez en utilisant l' Assistant de création de rapports.
5.
Dans le panneau Choisir un expert, sélectionnez Standard, puis cliquez sur OK.
La fenêtre Assistant de création de rapports standard s'affiche.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
245
6.
Dans le panneau Sources de données disponibles, développez le dossier Créer une nouvelle connexion.
7.
Dans le sous-dossier qui s'ouvre, développez le dossier OLE DB (ADO).
La fenêtre OLE DB (ADO) s'affiche.
8.
Sélectionnez Microsoft OLE DB Provider for SQL Server, puis cliquez sur Suivant.
9.
Saisissez les valeurs correspondant à votre serveur de base de données, l'ID utilisateur et le mot de passe
dans les champs Serveur, ID utilisateur et Mot de passe.
10. Dans la liste déroulante Base de données, sélectionnez "Northwind".
Laissez la case à cocher Sécurité intégrée désactivée, car vous utilisez l'authentification SQL Server au lieu de
l'authentification NT.
11. Cliquez sur Terminer.
Le dossier OLE DB est maintenant développé, affichant votre serveur de base de données et, à l'intérieur de
celui-ci, la base de données Northwind.
12. Développez les nœuds Northwind, dbo et Tables, puis sélectionnez la table Customers.
13. Cliquez sur le bouton > pour déplacer la table dans le panneau Tables sélectionnées, puis cliquez sur Suivant.
14. Développez la table Customers, maintenez la touche Ctrl enfoncée et cliquez sur CompanyName,
ContactName et City.
15. Cliquez sur le bouton > pour déplacer ces champs dans le panneau Champs à afficher, puis cliquez sur
Suivant.
16. Dans le panneau Champs disponibles, sous Champs du rapport, sélectionnez Customer.City, cliquez sur le
bouton > pour déplacer le champ dans le panneau Regrouper par, puis cliquez sur Terminer.
Le rapport NorthwindCustomers est créé et chargé dans la fenêtre principale de Visual Studio.
1.5.1.1.2
Liaison du rapport sans code de connexion
Durant la procédure Configuration d'un projet [page 15], vous avez placé un contrôle CrystalReportViewer dans un
Web Form ou un Windows Form. Lors de l'étape précédente, vous avez ajouté un rapport NorthwindCustomers au
projet.
Dans cette section, vous allez lier le chemin d'accès au répertoire du rapport NorthwindCustomers au contrôle
CrystalReportViewer. Vous allez ensuite vérifier si le rapport s'affiche correctement lorsque le code de connexion
à la base de données n'a pas été défini.
1.5.1.1.2.1
Pour lier le chemin d'accès au répertoire du
rapport NorthwindCustomers au contrôle CrystalReportViewer.
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
246
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
3.
Localisez la méthode ConfigureCrystalReports() (que vous avez créée dans la section Configuration
d'un projet [page 15]).
4.
Déclarez une variable chaîne, nommez-la reportPath et affectez-lui un chemin d'accès au rapport local au
moment de l'exécution. Ce chemin est déterminé différemment selon qu'il s'agit d'un site Web ou d'un projet
Windows :
○
Pour un site Web, transmettez le nom du fichier de rapport local sous forme de paramètre de type chaîne
dans la méthode Server.MapPath(). Ceci permet d'associer le rapport local au chemin d'accès du
répertoire de fichiers du disque dur au moment de l'exécution.
Dim reportPath As String = Server.MapPath("NorthwindCustomers.rpt")
string reportPath = Server.MapPath("NorthwindCustomers.rpt");
○
Pour un projet Windows, concaténez la propriété Application.StartupPath avec une barre oblique
inverse et le nom du fichier de rapport local. Ceci permet d'associer le rapport au même répertoire que
celui du fichier exécutable Windows.
Remarque
Au moment de la compilation, vous copierez le rapport dans le répertoire contenant le fichier
exécutable.
Dim reportPath As String = Application.StartupPath & "\" &
"NorthwindCustomers.rpt"
string reportPath = Application.StartupPath + "\\" + "NorthwindCustomers.rpt";
5.
Affectez le chemin d'accès au répertoire du fichier du rapport NorthwindCustomers à la propriété
ReportSource du contrôle CrystalReportViewer.
myCrystalReportViewer.ReportSource = reportPath
crystalReportViewer.ReportSource = reportPath;
1.5.1.1.2.2
Pour tester le chargement du rapport
NorthwindCustomers
Contexte
Vous êtes maintenant prêt à générer et exécuter votre projet. Dans la mesure où le code permettant de se
connecter à la base de données n'a pas encore été écrit, le chargement du rapport doit échouer.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
247
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Si vous utilisez un rapport non incorporé dans un projet Windows, recherchez l'exécutable Windows compilé
dans le sous-répertoire \bin\debug\, puis copiez le rapport dans ce sous-répertoire.
Remarque
Pour que le rapport non incorporé soit chargé par l'exécutable Windows au moment de l'exécution, le
rapport doit être stocké dans le même répertoire que l'exécutable Windows.
4.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport NorthwindCustomers ne s'affiche pas. Il s'affiche après que vous avez ajouté le code de connexion
à la base de données.
Remarque
Les résultats peuvent varier selon la version de SAP Crystal Reports utilisée. Par exemple, si vous utilisez
SAP Crystal Reports 10 ou une version ultérieure, vous êtes invité à saisir les informations de connexion à
la base de données pour le rapport. Si vous exécutez une version antérieure de SAP Crystal Reports, une
exception est renvoyée. Dans les deux cas, vous devez effectuer la procédure suivante pour créer une
application entièrement fonctionnelle.
5.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.1.1.3
Ajout du code de connexion au rapport
Vous êtes maintenant prêt à ajouter le code de connexion à la classe code-behind. Vous commencez par créer
une méthode d'assistance privée nommée SetDBLogonForReport().
1.5.1.1.3.1
Pour créer et coder la méthode
SetDBLogonForReport()
Procédure
1.
Revenez à la classe code-behind de ce Web Form ou Windows Form.
2.
Dans la partie inférieure de la classe, créez une méthode privée nommée SetDBLogonForReport() avec la
variable ConnectionInfo dans la signature de la méthode.
Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo)
End Sub
248
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
private void SetDBLogonForReport(ConnectionInfo connectionInfo)
{
}
3.
Dans cette méthode, extrayez l'instance TableLogOnInfos de la propriété LogOnInfo de la classe
CrystalReportViewer.
Remarque
TableLogOnInfos est une classe indexée contenant des instances de la classe TableLogOnInfo.
Dim myTableLogOnInfos As TableLogOnInfos = myCrystalReportViewer.LogOnInfo
TableLogOnInfos tableLogOnInfos = crystalReportViewer.LogOnInfo;
4.
Créez une boucle foreach qui effectue une boucle sur chaque instance TableLogOnInfode l'instance de
classe indexée TableLogOnInfos.
For Each myTableLogOnInfo As TableLogOnInfo In myTableLogOnInfos
Next
foreach(TableLogOnInfo tableLogOnInfo in tableLogOnInfos)
{
}
5.
Dans la boucle foreach, affectez à la propriété ConnectionInfo de TableLogOnInfo le paramètre
ConnectionInfo.
myTableLogOnInfo.ConnectionInfo = myConnectionInfo
tableLogOnInfo.ConnectionInfo = connectionInfo;
1.5.1.1.3.2
Pour modifier la méthode
ConfigureCrystalReports() selon le code de connexion à la base
de données
Contexte
Cette procédure a créé une méthode permettant de définir les informations de connexion à la base de données.
Toutefois, vous devez modifier la méthode ConfigureCrystalReports() pour désigner cette méthode afin que
le rapport sache qu'il dispose des informations de connexion à la base de données.
La modification de la méthode ConfigureCrystalReports() se déroule en deux étapes :
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
249
●
Configurer l'instance ConnectionInfo.
●
Appeler la méthode SetDBLogonForReport().
Procédure
1.
Dans la méthode ConfigureCrystalReports(), déclarez et instanciez la classe ConnectionInfo endessous du code qui lie le rapport au contrôle CrystalReportViewer.
Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
ConnectionInfo connectionInfo = new ConnectionInfo();
2.
Sur la ligne suivante, appelez la méthode SetDBLogonForReport() en transmettant l'instance
ConnectionInfo.
SetDBLogonForReport(myConnectionInfo)
SetDBLogonForReport(connectionInfo);
3.
Définissez les propriétés DatabaseName, UserIDet Password de l'instance ConnectionInfo.
Remarque
Pour des raisons de sécurité, il est important que vous utilisiez un compte de base de données à accès
limité.
Dans votre propre code, remplacez l'exemple de mot de passe 1234 (indiqué ci-dessous) par votre propre
mot de passe.
myConnectionInfo.DatabaseName = "Northwind"
myConnectionInfo.UserID = "limitedPermissionAccount"
myConnectionInfo.Password = "1234"
connectionInfo.DatabaseName = "Northwind";
connectionInfo.UserID = "limitedPermissionAccount";
connectionInfo.Password = "1234";
250
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.1.1.3.3
Pour tester le chargement du rapport
NorthwindCustomers
Contexte
Vous êtes maintenant prêt à générer et exécuter votre projet. Le rapport doit se charger correctement, car vous
avez ajouté le code de connexion à la base de données.
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport NorthwindCustomers s'affiche correctement.
4.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.1.1.4
Ajout de la possibilité de modifier l'emplacement
de la base de données au moment de l'exécution
Dans cette section, vous allez apprendre à modifier l'emplacement de la base de données au moment de
l'exécution. Cette opération nécessite simplement une légère modification de l'instance ConnectionInfo.
Remarque
Dans ce tutoriel, vous allez changer le nom du serveur de base de données, et non le nom de la base de
données. Il est impossible de changer le nom de la base de données avec le contrôle CrystalReportViewer.
1.5.1.1.4.1
Pour modifier l'emplacement de la base de
données au moment de l'exécution
Procédure
1.
Dans la méthode ConfigureCrystalReports(), créez plusieurs sauts de ligne dans le code après la ligne
qui appelle la méthode SetDBLogonForReport().
2.
Dans les sauts de ligne, définissez la propriété ServerName de l'instance ConnectionInfo.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
251
Remarque
Dans le code que vous écrivez, remplacez l'exemple de nom de serveur DevDatabaseServer (indiqué cidessous) par votre propre nom de serveur.
myConnectionInfo.ServerName = "DevDatabaseServer"
connectionInfo.ServerName = "DevDatabaseServer";
1.5.1.1.4.2
Pour vérifier si un autre serveur de base de
données peut être redéfini pour le rapport au moment de
l'exécution
Contexte
Vous êtes maintenant prêt à générer et exécuter votre projet. Le rapport devrait se rediriger vers l'autre serveur
de base de données au moment de l'exécution.
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport NorthwindCustomers s'affiche correctement.
4.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.1.2
Tutoriel : Lecture et définition des paramètres
discrets
Dans ce tutoriel, vous allez apprendre à créer un rapport dont les données peuvent être filtrées en fonction d'un
paramètre discret.
Introduction
Un paramètre discret est une valeur unique alors qu'un paramètre de plage fait référence à une plage de valeurs.
Les éléments textuels (tels que les villes) sont généralement accessibles via des paramètres discrets. Les
252
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
éléments numériques (tels que les salaires des employés) sont généralement accessibles via des paramètres de
plage.
Dans ce tutoriel, vous allez définir une valeur de paramètre discret afin d'afficher un rapport sur les clients basé
sur un champ. Ce rapport affiche uniquement les clients vivant dans les villes sélectionnées dans une liste de
villes. Cette liste provient des valeurs par défaut du paramètre Ville. Les valeurs par défaut du paramètre Ville sont
encapsulées dans le rapport.
Créez tout d'abord un rapport sur les clients avec un paramètre de ville. Les données du rapport proviennent de
l'exemple de base de données fourni avec SAP Crystal Reports, version développeur pour Microsoft Visual Studio.
Lorsque vous instanciez le rapport dans le code, vous créez une instance ArrayList contenant des noms de ville
(Paris, Tokyo), puis transmettez cette instance à une méthode d'assistance qui définit ces noms de ville comme
les valeurs actuelles du paramètre Ville. Vous liez ensuite le rapport au contrôle CrystalReportViewer et seuls les
clients vivant à Paris ou à Tokyo sont affichés dans ce rapport.
Dans la partie suivante du tutoriel, vous allez effectuer les opérations suivantes :
●
Créer une méthode qui extrait toutes les valeurs par défaut et les renvoie dans une instance ArrayList.
●
Ajouter un contrôle ListBox au formulaire et le remplir avec les valeurs provenant de l'ArrayList.
●
Ajouter un contrôle Button pour réafficher le rapport en fonction des sélections ListBox.
Dans la dernière partie du tutoriel, vous coderez l'événement de clic pour extraire les éléments sélectionnés à
partir du contrôle ListBox et définir les valeurs actuelles du paramètre Ville. Le rapport est réaffiché, indiquant
uniquement les clients qui vivent dans les villes sélectionnées dans le contrôle ListBox.
Exemple de code
Ce tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez les
instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir d'une
version terminée.
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les noms des
dossiers de chaque version d'exemple de code sont les suivants :
●
Site Web C# : CS_Web_CRVObjMod_Parameters
●
Projet Windows C# : CS_Win_CRVObjMod_Parameters
●
Site Web Visual Basic : VB_Web_CRVObjMod_Parameters
●
Projet Windows Visual Basic : VB_Win_CRVObjMod_Parameters
Base de données Xtreme
La base de données Xtreme est utilisée par certains tutoriels. Elle figure dans le package d'exemples de code qui
peut être téléchargé à l'adresse suivante : http://www.sdn.sap.com/irj/boc/sdklibrary
manuellement une connexion ODBC à la base de données.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
. Vous devez créer
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
253
Informations associées
Répertoire d'exemples de rapports [page 15]
1.5.1.2.1
Création d'un rapport avec des paramètres
Commencez par créer un rapport à partir des informations de la base de données Xtreme.
1.5.1.2.1.1
Pour créer un rapport avec des paramètres
Procédure
1.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du projet affiché en gras,
pointez sur Ajouter, puis cliquez sur Nouvel élément.
2.
Dans la boîte de dialogue Ajouter un nouvel élément, dans la vue Modèles, sélectionnez le modèle Rapport
Crystal.
3.
Dans le champ Nom, saisissez le nom CustomersByCity.rpt, puis cliquez sur Ajouter.
4.
Dans le panneau Créer un document de rapport Crystal de la boîte de dialogue Galerie de rapports Crystal,
sélectionnez en utilisant l' Assistant de création de rapports.
5.
Dans le panneau Choisir un expert, sélectionnez Standard, puis cliquez sur OK.
6.
Dans le panneau Sources de données disponibles de la fenêtre Assistant de création de rapports standard,
développez le dossier Créer une nouvelle connexion.
7.
Dans le sous-dossier qui s'ouvre, développez le dossier ODBC (RDO).
8.
Dans la fenêtre ODBC (RDO), sélectionnez l'entrée DSN ODBC correspondant à la base de données Xtreme,
puis cliquez sur Terminer.
9.
Développez le nœud Tables, cliquez deux fois sur la table Clients pour la déplacer dans le panneau Tables
sélectionnées, puis cliquez sur Suivant.
10. Développez la table Clients, puis utilisez la combinaison de touches CTRL-clic pour sélectionner les champs
Nom du client, Titre, Adresse 1, Nom du contact et Ville.
11. Cliquez sur le bouton > pour déplacer ces champs dans le panneau Champs à afficher, puis cliquez sur le
bouton Suivant.
12. Dans le panneau Champs disponibles, sous Champs du rapport, cliquez deux fois sur Clients.Ville pour
déplacer le champ dans le panneau Regrouper par, puis cliquez sur Terminer.
Le rapport CustomersByCity est créé et chargé dans la fenêtre principale de Visual Studio.
254
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.1.2.1.2
Pour ajouter un paramètre Ville
Contexte
Vous êtes maintenant prêt à ajouter un paramètre appelé Ville et à le remplir avec des valeurs par défaut.
L'Explorateur de champs doit être visible, car il permet d'accéder à plusieurs fonctions du rapport, notamment
aux paramètres. Pour rendre l'Explorateur de champs visible, dans le menu Crystal Reports, cliquez sur
Explorateur de champs.
Procédure
1.
Si l'Explorateur de champs n'est pas visible, cliquez sur Activer/Désactiver l'affichage du champ dans la barre
d'outils Crystal Reports.
Conseil
Vous pouvez également afficher l'Explorateur de champs en ouvrant le menu Crystal Reports, puis en
cliquant sur Explorateur de champs.
2.
Dans l'Explorateur de champs, cliquez avec le bouton droit de la souris sur Champs de paramètre, puis
sélectionnez Nouveau.
3.
Dans la boîte de dialogue Créer un champ de paramètre :
a) Attribuez à Nom la valeur Ville.
b) Attribuez à Type la valeur Chaîne. Attribuez à Texte de l'invite la valeur Sélectionnez une ou
plusieurs villes.
c) Attribuez à Champ de valeur la valeur Ville.
d) Cliquez sur Actions, puis sélectionnez Ajouter toutes les valeurs de la base de données. La liste complète
des villes apparaît dans le volet du milieu.
e) Dans le volet Options de valeur, attribuez à Texte de l'invite la valeur Sélectionnez une ou
plusieurs villes.
f)
Dans ce même volet, attribuez à Autoriser plusieurs valeurs la valeur True.
g) Attribuez à Autoriser les valeurs discrètes la valeur True.
4.
Cliquez sur OK pour fermer la boîte de dialogue Créer un champ de paramètre.
1.5.1.2.1.3
Pour connecter le paramètre Ville à la colonne
Ville de la base de données
Contexte
Vous venez de définir les valeurs par défaut de sorte qu'elles contiennent une liste importante de villes. Plus loin
dans ce tutoriel, vous accéderez par programmation à cette même liste de valeurs par défaut, via la propriété
ParameterFieldInfo de la classe CrystalReportViewer.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
255
Vous devez maintenant utiliser l'Expert Sélection pour définir une formule permettant de connecter la colonne
Ville de la base de données au champ de paramètre Ville que vous venez de créer.
Procédure
1.
Dans la barre d'outils Crystal Reports, cliquez sur Expert Sélection.
2.
Dans la boîte de dialogue Choisir un champ, sous Champs du rapport, sélectionnez Clients.Ville, puis cliquez
sur OK.
3.
Dans la boîte de dialogue Select Expert, dans l'onglet Customer.City, choisissez "est égal à" dans la liste
déroulante.
4.
Dans la nouvelle liste déroulante qui s'affiche à droite, sélectionnez le premier élément de la liste, {?Ville}, puis
cliquez sur OK.
Remarque
Cette sélection, {?City}, correspond au paramètre Ville que vous avez créé précédemment.
5.
Dans le menu Fichier, sélectionnez Enregistrer tout.
Résultats
Vous êtes maintenant prêt à lier le rapport au contrôle CrystalReportViewer et à définir le paramètre Ville avec
deux valeurs d'origine, Paris et Tokyo.
1.5.1.2.2
Liaison du rapport
Lorsque vous avez sélectionné les instructions de la procédure Configuration d'un projet [page 15] en préparation
de ce tutoriel, vous avez placé un contrôle CrystalReportViewer sur le Web Form ou le Windows Form. Au cours
des étapes précédentes, vous avez ajouté un rapport CustomersByCity au projet.
Dans cette section, vous allez lier le chemin d'accès au répertoire du rapport CustomersByCity au contrôle
CrystalReportViewer. Vous allez ensuite vérifier si le rapport s'affiche correctement lorsque les valeurs
actuelles n'ont pas été définies pour ce paramètre.
256
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.1.2.2.1
Pour lier le chemin d'accès au répertoire du
rapport CustomersByCity au contrôle CrystalReportViewer.
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code pour afficher la classe code-behind du Web Form ou du Windows
Form.
3.
Localisez la méthode ConfigureCrystalReports() (que vous avez créée dans la section Configuration
d'un projet [page 15]).
4.
Déclarez une variable chaîne, nommez-la reportPath et affectez-lui un chemin d'accès au rapport local au
moment de l'exécution. Ce chemin est déterminé différemment selon qu'il s'agit d'un site Web ou d'un projet
Windows :
○
Pour un site Web, transmettez le nom du fichier de rapport local sous forme de paramètre de type chaîne
dans la méthode Server.MapPath(). Ceci permet d'associer le rapport local au chemin d'accès du
répertoire de fichiers du disque dur au moment de l'exécution.
Dim reportPath As String = Server.MapPath("CustomersByCity.rpt")
string reportPath = Server.MapPath("CustomersByCity.rpt");
○
Pour un projet Windows, concaténez la propriété Application.StartupPath avec une barre oblique
inverse et le nom du fichier de rapport local. Ceci permet d'associer le rapport au même répertoire que
celui du fichier exécutable Windows.
Remarque
Au moment de la compilation, vous copierez le rapport dans le répertoire contenant le fichier
exécutable.
Dim reportPath As String = Application.StartupPath & "\" &
"CustomersByCity.rpt"
string reportPath = Application.StartupPath + "\\" + "CustomersByCity.rpt";
5.
Affectez le chemin d'accès au répertoire du fichier du rapport CustomersByCity à la propriété ReportSource
du contrôle CrystalReportViewer.
myCrystalReportViewer.ReportSource = reportPath
crystalReportViewer.ReportSource = reportPath;
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
257
1.5.1.2.2.2
Pour tester le chargement du rapport
CustomersByCity
Contexte
Vous êtes maintenant prêt à générer et exécuter votre projet. Le chargement du rapport doit échouer, car le code
permettant de définir une valeur pour le champ de paramètre Ville n'a pas encore été écrit.
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Si vous utilisez un rapport non incorporé dans un projet Windows, recherchez l'exécutable Windows compilé
dans le sous-répertoire \bin\ [Visual Basic] ou \bin\debug\ [C#], puis copiez le rapport dans ce
sous-répertoire.
Remarque
Pour que le rapport non incorporé soit chargé par l'exécutable Windows au moment de l'exécution, le
rapport doit être stocké dans le même répertoire que l'exécutable Windows.
4.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport CustomersByCity ne s'affiche pas. Il s'affiche après que vous avez ajouté une valeur au paramètre
Ville plus loin dans ce tutoriel.
Remarque
Les résultats peuvent varier selon la version de SAP Crystal Reports utilisée. Dans les versions plus
récentes, un formulaire s'affiche vous demandant de fournir des valeurs de paramètre pour ce rapport.
Dans les versions antérieures, une exception "Valeur actuelle du champ de paramètre introuvable" est
renvoyée. Dans les deux cas, vous devez ajouter du code supplémentaire pour créer une application
entièrement fonctionnelle.
5.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.1.2.3
Définition manuelle des paramètres dans le code
Vous êtes maintenant prêt à créer deux valeurs ("Paris" et "Tokyo") dans le champ de paramètre Ville du rapport
CustomersByCity.
Cette opération nécessite un code qui peut être décomposé selon les processus suivants :
●
Une constante PARAMETER_FIELD_NAME est nécessaire pour contenir le champ de paramètre "Ville".
●
Le code permettant d'ajouter les valeurs actuelles au paramètre Ville étant utilisé dans différents
emplacements dans ce tutoriel, il est préférable de créer ce code en tant que méthode d'assistance distincte.
258
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
●
Dans la méthode ConfigureCrystalReports(), vous devez ajouter les paramètres "Paris" et "Tokyo" à
une instance ArrayList, puis transmettre le rapport et l'instance à la méthode d'assistance pour le traitement.
1.5.1.2.3.1
Pour créer une constante
PARAMETER_FIELD_NAME
Procédure
1.
Revenez à la classe code-behind de ce Web Form ou Windows Form.
2.
Au niveau de la classe, créez une constante chaîne, PARAMETER_FIELD_NAME, et attribuez-lui la valeur "Ville."
Private Const PARAMETER_FIELD_NAME As String = "City"
private const string PARAMETER_FIELD_NAME = "City";
1.5.1.2.3.2
Pour créer une méthode d'assistance permettant
d'ajouter les valeurs actuelles au paramètre dans le rapport
Contexte
Vous êtes maintenant prêt à créer la méthode d'assistance qui permet d'ajouter les valeurs actuelles au
paramètre dans le rapport.
Procédure
1.
Revenez à la classe code-behind de ce Web Form ou Windows Form.
2.
Au-dessus de la signature de classe, ajoutez une déclaration "Imports" [Visual Basic] ou "using"
[C#] au début de la classe de l'espace de noms System.Collections (si cet espace de noms n'a pas déjà été
déclaré).
Remarque
Cette déclaration est nécessaire pour accéder à la classe ArrayList.
Imports System.Collections
using System.Collections;
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
259
3.
Dans la partie inférieure de la classe, créez une méthode privée nommée
SetCurrentValuesForParameterField() avec deux variables dans la signature de la méthode :
ParameterFields et ArrayList.
Private Sub SetCurrentValuesForParameterField(ByVal myParameterFields As
ParameterFields, ByVal myArrayList As
ArrayList)
End Sub
private void SetCurrentValuesForParameterField(ParameterFields parameterFields,
ArrayList arrayList)
{
}
4.
Dans cette méthode, déclarez et instanciez la classeParameterValues en tant que variable
currentParameterValues.
Remarque
Pour que la classe ParameterValues soit accessible, vous devez avoir inclus une déclaration "Imports"
[Visual Basic] ou "using" [C#] dans la partie supérieure de la classe code-behind pour l'espace de
noms CrystalDecisions.Shared. (Vous avez ajouté cette déclaration dans la procédure Configuration d'un
projet [page 15].)
Dim currentParameterValues As ParameterValues = New ParameterValues()
ParameterValues currentParameterValues = new ParameterValues();
5.
Créez une boucle foreach pour extraire toutes les valeurs envoyées (comme type Object) de l'instance
ArrayList.
Remarque
Dans cette méthode, vous extrayez les valeurs d'ArrayList. Par la suite, vous écrirez du code permettant
d'ajouter des valeurs à l'ArrayList.
For Each submittedValue As Object In myArrayList
Next
foreach(object submittedValue in arrayList)
{
}
6.
Dans la boucle foreach, déclarez et instanciez la classe ParameterDiscreteValue.
Dim myParameterDiscreteValue As ParameterDiscreteValue = New
ParameterDiscreteValue()
260
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue();
7.
Dans la boucle foreach, convertissez la submittedValue en chaîne et transmettez-la à la propriété Value
de l'instance ParameterDiscreteValue.
myParameterDiscreteValue.Value = submittedValue.ToString()
parameterDiscreteValue.Value = submittedValue.ToString();
8.
Dans la boucle foreach, ajoutez l'instance ParameterDiscreteValue dans la classe indexée
currentParameterValues.
L'écriture de code dans la boucle foreach est à présent terminée. Vous placez le code restant (à l'aide des
étapes suivantes) après la boucle foreach.
currentParameterValues.Add(myParameterDiscreteValue)
currentParameterValues.Add(parameterDiscreteValue);
9.
En dehors de la boucle foreach, extrayez l'instance ParameterField de la classe indexée
ParameterFields, qui se base sur l'entrée d'index de la constante PARAMETER_FIELD_NAME.
Dim myParameterField As ParameterField = myParameterFields(PARAMETER_FIELD_NAME)
ParameterField parameterField = parameterFields[PARAMETER_FIELD_NAME];
10. Transmettez l'instance currentParameterValues à la propriété CurrentValues de l'instance
ParameterField.
myParameterField.CurrentValues = currentParameterValues
parameterField.CurrentValues = currentParameterValues;
1.5.1.2.3.3
Pour appeler la méthode
SetCurrentValuesForParameterField () avant la liaison du
rapport au contrôle CrystalReportViewer
Contexte
Cette procédure a permis de créer une méthode qui extrait les valeurs envoyées d'une instance ArrayList et les
place comme valeurs actuelles dans une instance ParameterField. Vous devez maintenant appeler cette
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
261
méthode avant que votre rapport ne soit lié au contrôle CrystalReportViewer afin que le rapport sache qu'il
dispose de paramètres.
Procédure
1.
Dans la méthode ConfigureCrystalReports(), déclarez et instanciez une ArrayList au-dessus de la ligne
qui lie le rapport au contrôle CrystalReportViewer.
Dim myArrayList As ArrayList = New ArrayList()
ArrayList arrayList = new ArrayList();
2.
Ajoutez les noms de ville "Paris" et "Tokyo" comme chaînes à l'instance ArrayList.
myArrayList.Add("Paris")
myArrayList.Add("Tokyo")
arrayList.Add("Paris");
arrayList.Add("Tokyo");
3.
Sous le code qui lie le contrôle CrystalReportViewer, extrayez l'instance ParameterFields de la
propriété ParameterFieldInfo du contrôle CrystalReportViewer.
Dim myParameterFields As ParameterFields =
myCrystalReportViewer.ParameterFieldInfo
ParameterFields parameterFields = crystalReportViewer.ParameterFieldInfo;
4.
Appelez la méthode SetCurrentValuesForParameterField(), puis transmettez l'instance
ParameterFields et l'instance ArrayList.
SetCurrentValuesForParameterField(myParameterFields, myArrayList)
SetCurrentValuesForParameterField(parameterFields, arrayList);
262
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.1.2.3.4
Pour tester le chargement du rapport
CustomersByCity
Contexte
Vous êtes maintenant prêt à générer et exécuter votre projet. Le rapport doit s'afficher correctement, car le code
définissant les valeurs actuelles dans le champ de paramètre est désormais écrit.
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
4.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
Résultats
Dans la section suivante, vous allez apprendre à extraire les valeurs par défaut du champ de paramètre et à définir
ces valeurs dans un contrôle ListBox. Ces valeurs seront utilisées à la fin du tutoriel pour sélectionner de façon
dynamique de nouvelles villes et filtrer le rapport en fonction des nouvelles villes sélectionnées.
1.5.1.2.4
Création d'un contrôle ListBox qui affiche les
paramètres par défaut
Le reste du tutoriel concerne l'affichage de la liste complète des valeurs par défaut du champ de paramètre dans
un contrôle ListBox et le refiltrage du contenu du rapport en fonction des sélections effectuées à partir du
contrôle ListBox.
Dans cette section, vous allez apprendre à remplir le contrôle ListBox à partir des valeurs par défaut du champ
de paramètre.
Remarque
N'oubliez pas que vous avez défini les valeurs par défaut, une liste importante de villes, lors de la création du
rapport au début de ce tutoriel.
Pour ce faire, vous devez ajouter et configurer un contrôle ListBox, puis créer une méthode d'assistance pour
remplir ce contrôle ListBox.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
263
1.5.1.2.4.1
Pour créer et configurer un contrôle ListBox sur
le formulaire
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Si vous développez un site Web, procédez comme suit :
a) Cliquez sur le contrôle CrystalReportViewer pour le sélectionner.
b) Appuyez sur la FLECHE GAUCHE du clavier afin de faire apparaître un curseur clignotant, puis appuyez
sur ENTREE.
4.
Si vous développez un projet Windows, procédez comme suit :
a) Cliquez sur le contrôle CrystalReportViewer pour le sélectionner.
b) Dans la fenêtre Propriétés, attribuez à la propriété Dock la valeur "Bottom".
c) Redimensionnez le contrôle CrystalReportViewer pour laisser assez d'espace au-dessus afin d'ajouter un
contrôle ListBox.
d) Dans la fenêtre Propriétés, attribuez à la propriété Anchor la valeur "Top, Bottom, Left, Right".
5.
Dans la boîte à outils, faites glisser un contrôle ListBox au-dessus du contrôle CrystalReportViewer.
6.
Cliquez sur le contrôle ListBox pour le sélectionner.
7.
Dans la fenêtre Propriétés, procédez comme suit :
a) Attribuez à ID ou Name la valeur "defaultParameterValuesList".
b) Attribuez à SelectionMode la valeur "Multiple" (ou "MultiExtended" dans un projet Windows).
8.
Dans le menu Fichier, sélectionnez Enregistrer tout.
1.5.1.2.4.2
Pour créer une méthode d'assistance qui extrait
les valeurs par défaut du champ de paramètre
Contexte
Vous êtes maintenant prêt à créer une méthode d'assistance qui extrait les valeurs par défaut du champ de
paramètre.
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
264
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
3.
Dans la partie inférieure de la classe, créez une méthode privée nommée
GetDefaultValuesFromParameterField() qui renvoie une instance ArrayList, en transmettant
ParameterFields dans la signature de la méthode.
Private Function GetDefaultValuesFromParameterField(ByVal
myParameterFields As ParameterFields) As ArrayList
End Function
private ArrayList
GetDefaultValuesFromParameterField(ParameterFields parameterFields)
{
}
4.
Extrayez l'instance ParameterField de la classe indexée ParameterFields, basée sur l'entrée d'index de
la constante PARAMETER_FIELD_NAME.
Dim myParameterField As ParameterField =
myParameterFields(PARAMETER_FIELD_NAME)
ParameterField parameterField =
parameterFields[PARAMETER_FIELD_NAME];
5.
Extrayez une classe indexée ParameterValues (en tant que variable defaultParameterValues) de la
propriété DefaultValues de l'instance ParameterField.
Dim defaultParameterValues As ParameterValues =
myParameterField.DefaultValues
ParameterValues defaultParameterValues =
parameterField.DefaultValues;
6.
Déclarez et instanciez une ArrayList.
Dim myArrayList As ArrayList = New ArrayList()
ArrayList arrayList = new ArrayList();
7.
Créez une boucle foreach pour extraire chaque instance ParameterValue de la variable
defaultParameterValues.
Dans la boucle foreach, créez maintenant un bloc conditionnel imbriqué qui recherche des valeurs de
paramètre discret (par opposition aux valeurs de paramètre de plage). Il existe deux versions de ce bloc
conditionnel, car l'API a subi de légères modifications au cours de l'évolution des versions de
SAP Crystal Reports, version développeur pour Microsoft Visual Studio. Vérifiez votre API (à l'aide
d'IntelliSense) pour connaître la propriété disponible sous ParameterValue :
For Each myParameterValue As ParameterValue In
defaultParameterValues
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
265
Next
foreach(ParameterValue parameterValue in defaultParameterValues)
{
}
8.
Si la propriété disponible est IsRange, saisissez le code suivant dans la boucle foreach :
If (Not myParameterValue.IsRange) Then
End If
if(!parameterValue.IsRange)
{
}
9.
Ou, si la propriété disponible est Kind (DiscreteOrRangeKind, une énumération comportant trois valeurs :
DiscreteValue, RangeValue, DiscreteAndRangeValue), saisissez le code suivant dans la boucle
foreach :
If (myParameterValue.Kind = DiscreteOrRangeKind.DiscreteValue) Then
End If
if(parameterValue.Kind == DiscreteOrRangeKind.DiscreteValue)
{
}
10. Dans le bloc conditionnel imbriqué, effectuez un cast de l'instance ParameterValue en sa classe étendue
DiscreteParameterValue.
Dim myParameterDiscreteValue As ParameterDiscreteValue =
CType(myParameterValue, ParameterDiscreteValue)
ParameterDiscreteValue parameterDiscreteValue =
(ParameterDiscreteValue)parameterValue;
11. Dans le bloc conditionnel imbriqué, ajoutez la propriété Value de l'instance ParameterDiscreteValue
(convertie en chaîne) dans l'instance ArrayList.
myArrayList.Add(myParameterDiscreteValue.Value.ToString())
arrayList.Add(parameterDiscreteValue.Value.ToString());
12. En dehors du bloc conditionnel et de la boucle foreach, en fin de méthode, renvoyez l'instance ArrayList
depuis la méthode.
Return myArrayList
266
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
return arrayList;
1.5.1.2.4.3
Pour lier l'ArrayList renvoyée de la méthode au
contrôle ListBox dans un projet Web
Contexte
Vous avez extrait les valeurs par défaut du champ de paramètre et les avez renvoyées de la méthode sous la
forme d'une ArrayList. Vous allez maintenant lier cette ArrayList au contrôle ListBox
defaultParameterValuesList.
Le code varie légèrement selon que vous utilisez un projet Web ou un projet Windows ; en conséquence, vous ne
devez effectuer que l'une des procédures Web ou Windows ci-après.
Procédure
1.
Dans la méthode ConfigureCrystalReports(), créez plusieurs sauts de ligne dans le code,
immédiatement après la ligne de code qui extrait l'instance ParameterFields.
2.
Dans les sauts de ligne, créez un bloc conditionnel Not IsPostBack.
Remarque
Le bloc conditionnel Not IsPostBack est utilisé pour encapsuler du code devant être exécuté
uniquement lors du premier chargement de la page. Les contrôles sont généralement liés aux valeurs de
données dans des blocs conditionnels Not IsPostBack afin que leurs valeurs de données (et tout
événement de contrôle suivant) ne soient pas redéfinies lorsque les pages sont rechargées.
If Not IsPostBack Then
End If
if(!IsPostBack)
{
}
3.
Dans le bloc conditionnel Not IsPostBack, attribuez à la propriété DataSource du contrôle ListBox
defaultParameterValuesList la méthode d'assistance GetDefaultValuesFromParameterField(),
en transmettant l'instance ParameterFields en tant que paramètre de méthode.
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(myParameterFields)
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
267
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(parameterFields);
4.
Toujours dans le bloc conditionnel Not IsPostBack, appelez la méthode DataBind() du contrôle ListBox
defaultParameterValuesList.
defaultParameterValuesList.DataBind()
defaultParameterValuesList.DataBind();
1.5.1.2.4.4
Pour lier l'ArrayList renvoyée de la méthode au
contrôle ListBox dans un projet Windows
Procédure
1.
Dans la méthode ConfigureCrystalReports(), créez plusieurs sauts de ligne dans le code,
immédiatement après la ligne de code qui extrait l'instance ParameterFields.
Dans ces sauts de ligne, vous pouvez à présent saisir un code supplémentaire définissant la source de
données du contrôle ListBox defaultParameterValuesList lors du premier chargement de la page.
2.
Dans les sauts de lignes, attribuez à la propriété DataSource du contrôle ListBox defaultParameterValuesList
la méthode d'assistance GetDefaultValuesFromParameterField(), en transmettant l'instance
ParameterFields en tant que paramètre de méthode.
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(myParameterFields)
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(parameterFields);
1.5.1.2.4.5
Pour vérifier si le contrôle ListBox
defaultParameterValuesList est rempli
Contexte
Vous êtes maintenant prêt à créer et exécuter le projet pour vérifier si la zone de texte
defaultParameterValuesList est renseignée.
268
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Le contrôle ListBox ListBox defaultParameterValuesList affiche la liste complète des valeurs par
défaut (dans ce tutoriel, il s'agit de villes).
4.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.1.2.5
ListBox
Définition des paramètres à partir des sélections
Dans cette section, vous allez ajouter un bouton pour réafficher le rapport en fonction des sélections du contrôle
ListBox defaultParameterValuesList. Dans la méthode d'événement de ce bouton, vous appellerez la
même méthode que celle appelée lors du premier chargement de la page :
SetCurrentValuesForParameterField(). Mais cette fois, au lieu de transmettre des valeurs arbitraires
(Paris et Tokyo), vous transmettrez les valeurs sélectionnées depuis le contrôle ListBox
defaultParameterValuesList.
1.5.1.2.5.1
Pour créer et configurer un contrôle Button de
réaffichage sur le formulaire
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Dans la boîte à outils, faites glisser un contrôle Button à droite du contrôle ListBox.
4.
Cliquez sur le contrôle Button pour le sélectionner.
5.
Dans la fenêtre Propriétés, procédez comme suit :
a) Attribuez à ID ou Name la valeur "redisplay".
b) Attribuez à Text la valeur "Réafficher le rapport".
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
269
1.5.1.2.5.2
Pour créer la méthode d'événement de clic du
contrôle Button de réaffichage dans un projet Web
Contexte
Vous êtes maintenant prêt à créer une méthode d'événement de clic qui recherche des éléments sélectionnés
dans le contrôle ListBox et les transmet à la méthode SetCurrentValuesForParameterField().
Le code varie légèrement pour un projet Web ou un projet Windows ; en conséquence, vous ne devez effectuer
que l'une des procédures Web ou Windows ci-après.
Procédure
1.
Cliquez deux fois sur le bouton Réafficher le rapport.
Cette opération affiche la classe code-behind dans laquelle une méthode d'événement redisplay_Click()
a été générée automatiquement.
2.
Au-dessus de la signature de classe, ajoutez une déclaration "Imports" [Visual Basic] ou "using"
[C#] au début de la classe de l'espace de noms System.Web.UI.WebControls (si cet espace de noms n'a pas
déjà été déclaré).
Imports System.Web.UI.WebControls
using System.Web.UI.WebControls;
3.
Dans la méthode d'événement redisplay_Click() qui vient d'être automatiquement générée, déclarez et
instanciez une ArrayList.
Dim myArrayList As ArrayList = New ArrayList()
ArrayList arrayList = new ArrayList();
4.
Créez une boucle foreach pour extraire chaque instance ListItem de la propriété Items du contrôle
ListBox defaultParameterValuesList.
For Each item As ListItem In defaultParameterValuesList.Items
Next
foreach(ListItem item in defaultParameterValuesList.Items)
{
}
270
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
5.
Dans la boucle foreach, créez un bloc conditionnel imbriqué qui vérifie si la propriété Selected de l'instance
actuelle Item a pour valeur True.
If item.Selected Then
End If
if(item.Selected)
{
}
6.
Dans le bloc conditionnel, ajoutez la propriété Value de l'instance Item à l'instance ArrayList.
myArrayList.Add(item.Value)
arrayList.Add(item.Value);
7.
En dehors du bloc conditionnel et de la boucle foreach, liez à nouveau le chemin d'accès au répertoire du
rapport CustomersByCity à la propriété ReportSource de la classe CrystalReportViewer.
Remarque
Le chemin d'accès au fichier indiqué ci-dessous s'applique à un projet Visual Studio. "NomProjet" est
remplacé par le nom de votre site Web. "NomUtilisateur" est remplacé par votre nom de connexion.
Le chemin par défaut d'un projet de site Web est le suivant :
myCrystalReportViewer.ReportSource = "C:\WebSites\NomProjet\CustomersByCity.rpt"
crystalReportViewer.ReportSource = "C:\\WebSites\\ NomProjet\
\CustomersByCity.rpt";
8.
Extrayez l'instance ParameterFields de la propriété ParameterFieldInfo du contrôle
CrystalReportViewer.
Dim myParameterFields As ParameterFields =
myCrystalReportViewer.ParameterFieldInfo
ParameterFields parameterFields =
crystalReportViewer.ParameterFieldInfo;
9.
Transmettez l'instance ParameterFields et l'instance ArrayList à la méthode
SetCurrentValuesForParameterField().
SetCurrentValuesForParameterField(myParameterFields, myArrayList)
SetCurrentValuesForParameterField(parameterFields, arrayList);
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
271
1.5.1.2.5.3
Pour créer la méthode d'événement de clic du
contrôle Button de réaffichage dans un projet Windows
Procédure
1.
Cliquez deux fois sur le contrôle Button de réaffichage.
Cette opération affiche la classe code-behind dans laquelle une méthode d'événement redisplay_Click()
a été générée automatiquement.
2.
Dans la méthode d'événement redisplay_Click() qui vient d'être automatiquement générée, déclarez et
instanciez une ArrayList.
Dim myArrayList As ArrayList = New ArrayList()
ArrayList arrayList = new ArrayList();
3.
Créez une boucle foreach pour extraire chaque élément (sous forme de chaîne) de la propriété
SelectedItems du contrôle ListBox defaultParameterValuesList.
For Each item As String In defaultParameterValuesList.SelectedItems
Next
foreach(string item in defaultParameterValuesList.SelectedItems)
{
}
4.
Dans la boucle foreach, ajoutez l'instance chaîne item à l'instance ArrayList.
myArrayList.Add(item)
arrayList.Add(item);
5.
En dehors de la boucle foreach, liez à nouveau le chemin d'accès au répertoire du rapport CustomersByCity à
la propriété ReportSource de la classe CrystalReportViewer.
Remarque
Le chemin d'accès au fichier indiqué ci-dessous s'applique à un projet Visual Studio. "NomProjet" est
remplacé par le nom de votre projet Windows. "NomUtilisateur" est remplacé par votre nom de connexion.
Le chemin par défaut d'un projet Windows est le suivant :
myCrystalReportViewer.ReportSource = "C:\Documents and Settings\NomUtilisateur
\Mes Documents\Visual Studio\Projects\NomProjet\CustomersByCity.rpt"
272
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
crystalReportViewer.ReportSource = "C:\\Documents and Settings\\NomUtilisateur\
\Mes Documents\\Visual Studio\\Projects\\NomProjet\\CustomersByCity.rpt";
6.
Extrayez l'instance ParameterFields de la propriété ParameterFieldInfo du contrôle
CrystalReportViewer.
Dim myParameterFields As ParameterFields =
myCrystalReportViewer.ParameterFieldInfo
ParameterFields parameterFields =
crystalReportViewer.ParameterFieldInfo;
7.
Transmettez l'instance ParameterFields et l'instance ArrayList à la méthode
SetCurrentValuesForParameterField().
SetCurrentValuesForParameterField(myParameterFields, myArrayList)
SetCurrentValuesForParameterField(parameterFields, arrayList);
1.5.1.2.5.4
Pour vérifier si le contrôle ListBox
defaultParameterValuesList est rempli
Contexte
Les valeurs sélectionnées du contrôle ListBox ayant été appliquées comme valeurs actuelles du champ de
paramètre, vous êtes maintenant prêt à réafficher le rapport.
Vous êtes maintenant prêt à générer et exécuter le projet pour vérifier si le champ de paramètre a bien été
correctement redéfini.
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
4.
Dans le contrôle ListBox, cliquez sur des villes différentes dans la liste en maintenant la touche Ctrl enfoncée.
5.
Cliquez sur le bouton Réafficher le rapport.
La page est rechargée, affichant les enregistrements des clients qui vivent dans les villes sélectionnées dans
la liste.
6.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
273
1.5.1.2.6
Configuration de la persistance des paramètres
Dans cette section, vous allez configurer la persistance (dans un tutoriel via le Web) des sélections des champs de
paramètre effectuées à partir du contrôle ListBox.
1.5.1.2.6.1
Pour ajouter un code de persistance à la méthode
ConfigureCrystalReports()
Contexte
Vous devez ajouter un code de persistance à votre application afin que les modifications apportées soient rendues
persistantes lorsque les pages Web sont rechargées.
Pour commencer, vous allez ajouter un code de persistance à la méthode ConfigureCrystalReports() en
ajoutant un bloc Else au bloc conditionnel If Not IsPostBack. Vous allez ensuite définir des valeurs uniques
pour l'instance ArrayList pour l'une des deux conditions du bloc conditionnel. A l'ouverture de la page, vous
allez définir les valeurs par défaut ("Paris" et "Tokyo") dans l'instance ArrayList. Au rechargement de la page,
vous allez extraire l'instance ArrayList stockée dans Session.
Procédure
1.
Dans la méthode ConfigureCrystalReports(), coupez et collez au bas du bloc conditionnel Not
IsPostBack les deux lignes de code permettant d'ajouter Paris et Tokyo à l'instance ArrayList.
Lorsque vous avez terminé, le bloc conditionnel doit ressembler à ceci :
If Not IsPostBack Then
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(myParameterFields)
defaultParameterValuesList.DataBind()
myArrayList.Add("Paris")
myArrayList.Add("Tokyo")
End If
if (!IsPostBack)
{
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(parameterFields);
defaultParameterValuesList.DataBind();
arrayList.Add("Paris");
arrayList.Add("Tokyo");
}
2.
274
Ajoutez une ligne de code finale au bloc conditionnel qui affecte l'instance ArrayList à Session.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Remarque
Vous pouvez utiliser le nom de variable comme identificateur de chaîne pour la Session ajoutée.
Session("myArrayList") = myArrayList
Session["arrayList"] = arrayList;
3.
Ajoutez une condition Else au bloc conditionnel Not IsPostBack.
4.
Dans le bloc Else, extrayez l'instance ArrayList de Session, puis effectuez un cast de celle-ci en instance
ArrayList.
myArrayList = Ctype(Session("myArrayList"), ArrayList)
arrayList = (ArrayList)Session["arrayList"];
Résultats
Lorsque vous avez terminé, le bloc conditionnel doit ressembler à ceci :
If Not IsPostBack Then
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(myParameterFields)
defaultParameterValuesList.DataBind()
myArrayList.Add("Paris")
myArrayList.Add("Tokyo")
Session("myArrayList") = myArrayList
Else
myArrayList = Ctype(Session("myArrayList"), ArrayList)
End If
if (!IsPostBack)
{
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(parameterFields);
defaultParameterValuesList.DataBind();
arrayList.Add("Paris");
arrayList.Add("Tokyo");
Session["arrayList"] = arrayList;
}
else
{
arrayList = (ArrayList)Session["arrayList"];
}
Ces modifications apportées à la méthode ConfigureCrystalReports() permettent de garantir que l'instance
actuelle ArrayList est toujours disponible pour être transmise à la méthode
SetCurrentValuesForParameterField().
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
275
Dans la section suivante, vous allez apporter deux modifications au code dans l'événement de clic :
●
Sélectionner l'instance ArrayList créée et l'affecter à Session.
●
Remplacer les deux dernières lignes de code (qui configurent et affichent le rapport) par un appel à la
méthode ConfigureCrystalReports() afin d'exécuter cette fonctionnalité sur un bloc de code commun.
1.5.1.2.6.2
Pour modifier le code de la méthode d'événement
de clic selon la persistance Session
Procédure
1.
Supprimez les trois dernières lignes de code dans la méthode d'événement de clic.
○
La première ligne de code à supprimer représente le code qui lie le chemin d'accès au répertoire de
fichiers du rapport à la propriété ReportSource du contrôle CrystalReportViewer.
○
La deuxième ligne de code à supprimer représente le code qui extrait l'instance ParameterFields de la
propriété ParameterFieldInfo du contrôle CrystalReportViewer.
○
La troisième ligne de code à supprimer représente l'appel à la méthode
SetCurrentValuesForParameterField().
Dans l'étape suivante, vous allez ajouter deux nouvelles lignes de code pour remplacer le code supprimé.
2.
Dans la méthode d'événement de clic, immédiatement en dehors de la boucle foreach, ajoutez une ligne de
code qui affecte l'instance ArrayList à Session.
Remarque
Vous pouvez utiliser le nom de variable comme identificateur de chaîne pour la Session ajoutée.
Session("myArrayList") = myArrayList
Session["arrayList"] = arrayList;
3.
Appeler la méthode ConfigureCrystalReports().
Cette méthode extrait l'instance ArrayList, l'applique au rapport, puis lie le rapport au contrôle
CrystalReportViewer.
ConfigureCrystalReports()
ConfigureCrystalReports();
276
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.1.2.6.3
Pour vérifier si le contrôle ListBox
defaultParameterValuesList est rempli
Contexte
Vous êtes maintenant prêt à générer et exécuter le projet pour vérifier si le champ de paramètre a bien été
correctement redéfini.
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
4.
Dans le contrôle ListBox, utilisez la combinaison de touches MAJ-clic pour sélectionner toutes les villes dans
la liste.
5.
Cliquez sur Réafficher le rapport.
La page se recharge et affiche les enregistrements clients de tous les clients dans toutes les villes. Il s'agit
d'un rapport volumineux contenant de nombreuses pages.
6.
Dans la barre d'outils CrystalReportViewer, cliquez sur Page suivante.
7.
La liste des villes sélectionnées est désormais rendue persistante. La page 2 du rapport s'affiche.
8.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.1.3
Tutoriel : Lecture et définition des paramètres de
plage d'un sous-rapport
Dans ce tutoriel, vous allez traiter un problème supplémentaire : que faire si un rapport contient un sous-rapport
nécessitant des paramètres différents ?
Introduction
Dans le tutoriel précédent, Tutoriel : Lecture et définition des paramètres discrets [page 252], vous avez appris à
créer un rapport avec un paramètre discret et à créer un code permettant de définir ce paramètre au moment de
l'exécution, en utilisant chaque fois des valeurs de paramètres codées en dur et des valeurs de paramètres
transmises à partir d'un contrôle ListBox ou TextBox.
Dans ce tutoriel, vous allez apprendre à ajouter des paramètres de plage à un sous-rapport.
Vous devez apporter quatre modifications au projet que vous avez précédemment créé :
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
277
●
Vous ajoutez un sous-rapport au rapport d'origine.
Ce sous-rapport désigne la table Commandes de la base de données Xtreme. La table Commandes est liée à
la table Clients utilisée dans le tutoriel précédent par la clé externe ID client.
●
Vous ajoutez un paramètre de plage au sous-rapport qui effectue un filtrage selon une plage de dates de
commande.
●
Vous ajoutez deux contrôles Text au formulaire : orderStartDate et orderEndDate afin de définir la plage des
dates de commande au moment de l'exécution.
●
Vous modifiez la méthode SetCurrentValuesForParameter() que vous avez créée lors du tutoriel précédent.
Cette méthode crée une instance ParameterRangeValue contenant les valeurs startDate et endDate, puis
transmet cette instance ParameterRangeValue au paramètre de plage dans le sous-rapport.
Une fois le tutoriel terminé, vous pouvez filtrer les valeurs affichées dans le rapport au moment de l'exécution. Le
code que vous ajoutez limite le nombre de villes affichées dans le rapport principal ainsi que la plage de dates de
commande qui apparaîtront dans le sous-rapport.
Ce tutoriel peut également être effectué avec des classes du modèle d'objet ReportDocument ; voir Tutoriel :
Lecture et définition des paramètres avec un sous-rapport [page 418] utilisant le modèle d'objet
ReportDocument.
Exemple de code
Ce tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez les
instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir d'une
version terminée.
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les noms des
dossiers de chaque version d'exemple de code sont les suivants :
●
Site Web C# : CS_Web_CRVObjMod_ParametersSubrpt
●
Projet Windows C# : CS_Win_CRVObjMod_ParametersSubrpt
●
Site Web Visual Basic : VB_Web_CRVObjMod_ParametersSubrpt
●
Projet Windows Visual Basic : VB_Win_CRVObjMod_ParametersSubrpt
Informations associées
Choisir le modèle d'objet correct pour votre projet [page 32]
Répertoire d'exemples de rapports [page 15]
1.5.1.3.1
Ajout d'un sous-rapport au rapport d'origine
Pour commencer, vous ajoutez un sous-rapport au rapport d'origine.
278
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.1.3.1.1
Pour ajouter un sous-rapport
Procédure
1.
Ouvrez le projet que vous avez créé dans le tutoriel précédent Tutoriel : Lecture et définition des paramètres
discrets [page 252].
2.
Dans l'Explorateur de solutions, cliquez deux fois sur le rapport CustomersByCity pour l'ouvrir.
3.
Cliquez avec le bouton droit de la souris sur la barre grise Détails et sélectionnez Insérer une section en
dessous.
4.
Cliquez avec le bouton droit de la souris sur la nouvelle section Détails b que vous avez créée, sélectionnez
Insérer, puis cliquez sur Sous-rapport.
Un carré gris encadre le curseur de la souris.
5.
Faites glisser le rectangle gris sur la nouvelle section Détails b, puis relâchez le bouton de la souris.
6.
Dans l'onglet Sous-rapport de la boîte de dialogue Insérer un sous-rapport, sélectionnez Créer un sous-rapport
à l'aide de l'Assistant de création de rapports.
Remarque
La boîte de dialogue Insérer un sous-rapport inclut d'autres options permettant de sélectionner un rapport
existant et des sous-rapports à la demande. Pour en savoir plus sur ces fonctionnalités, voir Onglet Sousrapport (boîte de dialogue Insérer un sous-rapport) [page 939].
7.
Dans le champ Nom du nouveau rapport, saisissez "CustomerOrders".
8.
Cliquez sur Assistant de création de rapports...
9.
Dans le panneau Sources de données disponibles de la fenêtre Assistant de création de rapports standard,
développez le dossier Créer une nouvelle connexion.
10. Dans le sous-dossier qui s'ouvre, développez le dossier ODBC (RDO).
11. Dans la fenêtre ODBC (RDO), sélectionnez l'entrée DSN ODBC correspondant à la base de données Xtreme,
puis cliquez sur Terminer.
Le dossier ODBC (RDO) se développe pour afficher la base de données Xtreme.
12. Sélectionnez la table Commandes et cliquez sur le bouton > pour la déplacer dans le panneau Tables
sélectionnées, puis cliquez sur Suivant.
13. Dans le panneau Champs disponibles, sélectionnez ID commande, Date de commande, Date d'expédition et
Transporteur.
14. Cliquez sur le bouton > pour déplacer ces champs dans le panneau Champs à afficher, puis cliquez sur
Terminer.
15. Dans la boîte de dialogue Insérer un sous-rapport, sélectionnez l'onglet Mise en relation.
16. Dans la liste Champs disponibles du panneau Champs du rapport principal à mettre en relation, développez la
table Clients, sélectionnez ID client, puis cliquez sur le bouton >.
17. Dans le panneau Mise en relation du champ Clients.ID client qui s'affiche, laissez les sélections par défaut.
Ces sélections de paramètres et de données génèrent automatiquement une relation entre le rapport
principal et le sous-rapport.
18. Cliquez sur OK.
Le nouveau sous-rapport, CustomerOrders, s'affiche dans la section Détails b du rapport principal.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
279
Remarque
Lorsque vous ajoutez un sous-rapport à la section Détails, le sous-rapport s'affiche pour chaque ligne, ce
qui influe sur les performances du rapport. Si vous ne souhaitez pas obtenir des informations aussi
détaillées, placez le sous-rapport dans une section Groupe plutôt qu'une section Détails.
1.5.1.3.1.2
Pour vérifier les paramètres du sous-rapport
Procédure
1.
Dans la section Détails du rapport, cliquez deux fois sur le sous-rapport CustomerOrders pour l'afficher.
Des boutons de navigation apparaissent au bas de la fenêtre du concepteur à la fois pour le rapport principal
et le sous-rapport CustomerOrders.
2.
Si l'Explorateur de champs n'est pas visible, cliquez sur Activer/Désactiver l'affichage du champ dans la barre
d'outils Crystal Reports.
Remarque
Vous pouvez également afficher l'Explorateur de champs en ouvrant le menu Crystal Reports, puis en
cliquant sur Explorateur de champs.
3.
Dans l'Explorateur de champs, développez Champs de paramètre.
4.
Vérifiez que le champ de paramètre Pm-Clients.ID Client a été automatiquement généré lorsque le
sous-rapport a été relié.
5.
Dans la barre d'outils Crystal Reports, cliquez sur Expert Sélection.
6.
Dans la boîte de dialogue Expert Sélection, vérifiez que le critère Commandes.ID Client est égal à
{Pm-Clients.ID Client} est défini, puis cliquez sur OK.
7.
Dans le menu Fichier, sélectionnez Enregistrer tout.
Résultats
Vous avez réussi à ajouter un sous-rapport CustomerOrders au rapport CustomersByCity.
280
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.1.3.1.3
Pour ajouter un paramètre OrderDateRange au
sous-rapport
Procédure
1.
Dans l'Explorateur de champs, cliquez avec le bouton droit de la souris sur Champs de paramètre et
sélectionnez Nouveau.
2.
Dans la boîte de dialogue Créer un champ de paramètre :
a) Attribuez à Nom la valeur "OrderDateRange".
b) Attribuez à Texte de l'invite la valeur "Spécifiez une plage de dates des commandes à afficher".
c) Attribuez à Type de valeur la valeur "Date".
d) Attribuez au paramètre Options une seule sélection, "Valeur(s) de plage".
3.
Cliquez sur OK.
4.
Dans la barre d'outils Crystal Reports, cliquez sur Expert Sélection.
5.
Cliquez sur l'onglet Nouveau.
6.
Dans la boîte de dialogue Choisir un champ, développez la table Commandes, sélectionnez Date de
commande, puis cliquez sur OK.
7.
Dans le nouvel onglet Commandes.date de commande, sélectionnez formule dans la liste déroulante des
critères : {Commandes.date de commande} in {?OrderDateRange}
8.
Cliquez sur OK.
9.
Dans le menu Fichier, sélectionnez Enregistrer tout.
Vous avez réussi à ajouter un paramètre OrderDateRange au sous-rapport et à l'associer à la colonne
Commandes.Date de commande. Dans la section suivante, vous allez ajouter un code afin de désigner le
paramètre OrderDateRange dans le sous-rapport.
1.5.1.3.2
Ajout du code de paramètre au sous-rapport
Contexte
Vous allez à présent ajouter le code de paramètre du sous-rapport à la classe code-behind. Vous commencez par
créer une méthode d'assistance privée SetDateRangeForOrders().
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
281
3.
Au début de la classe, ajoutez deux nouvelles constantes sous la constante PARAMETER_FIELD_NAME
existante définie dans le tutoriel précédent.
Private Const SUBREPORT_PARAMETER_FIELD_NAME As String =
"OrderDateRange"
Private Const SUBREPORT_NAME As String = "CustomerOrders"
private const string SUBREPORT_PARAMETER_FIELD_NAME =
"OrderDateRange";
private const string SUBREPORT_NAME = "CustomerOrders";
4.
Dans la partie inférieure de la classe, créez une méthode privée nommée SetDateRangeForOrders() avec
les trois paramètres suivants : ParameterFields, une chaîne startDate et une chaîne endDate.
Private Sub SetDateRangeForOrders(ByVal myParameterFields As
ParameterFields, ByVal startDate As String, ByVal endDate As
String)
End Sub
private void SetDateRangeForOrders(ParameterFields parameterFields,
string startDate, string endDate)
{
}
5.
Dans cette méthode, déclarez et instanciez la classe ParameterRangeValue.
Remarque
Pour que la classe ParameterRangeValue soit accessible, vous devez inclure une instruction "Imports"
[Visual Basic] ou "using" [C#] dans la partie supérieure de la classe code-behind pour l'espace de
noms CrystalDecisions.Shared. (Vous avez ajouté cette déclaration dans la procédure Configuration
d'un projet [page 15].)
Dim myParameterRangeValue As ParameterRangeValue = New
ParameterRangeValue()
ParameterRangeValue parameterRangeValue = new
ParameterRangeValue();
6.
Attribuez à la propriété StartValue de l'instance ParameterRangeValue le paramètre de méthode
startDate.
Remarque
Les propriétés StartValue et EndValue de la classe ParameterRangeValue acceptent les valeurs de
type Object. Ce type générique permet de transmettre la valeur de plage sous plusieurs formes, y compris
texte, nombre, date, devise ou heure.
myParameterRangeValue.StartValue = startDate
282
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
parameterRangeValue.StartValue = startDate;
7.
Attribuez à la propriété EndValue de l'instance ParameterRangeValue le paramètre de méthode endDate.
myParameterRangeValue.EndValue = endDate
parameterRangeValue.EndValue = endDate;
8.
Définissez les limites inférieures et supérieures afin de les inclure.
Remarque
Pour le paramètre BoundInclusive, les valeurs de plage supérieures et inférieures sont incluses dans la
plage.
myParameterRangeValue.LowerBoundType =
RangeBoundType.BoundInclusive
myParameterRangeValue.UpperBoundType =
RangeBoundType.BoundInclusive
parameterRangeValue.LowerBoundType = RangeBoundType.BoundInclusive;
parameterRangeValue.UpperBoundType = RangeBoundType.BoundInclusive;
Vous allez à présent affecter l'instance ParameterRangeValue au paramètre du sous-rapport.
9.
Extrayez l'instance ParameterField de la classe indexée ParameterFields, basée sur les deux valeurs
indexées suivantes : le nom du champ de paramètre du sous-rapport et le nom du sous-rapport. Transmettez
les deux valeurs de constante que vous avez déclarées au début de la classe.
Dim myParameterField As ParameterField =
myParameterFields(SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME)
ParameterField parameterField =
parameterFields[SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME];
10. Appelez la méthode Clear() de la propriété CurrentValues de l'instance ParameterField afin de supprimer
les éventuelles valeurs existantes de la propriété CurrentValues.
myParameterField.CurrentValues.Clear()
parameterField.CurrentValues.Clear();
11. Ajoutez l'instance ParameterRangeValue que vous venez de créer à la propriété CurrentValues de
l'instance ParameterField.
myParameterField.CurrentValues.Add(myParameterRangeValue)
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
283
parameterField.CurrentValues.Add(parameterRangeValue);
Résultats
Cette procédure a défini des valeurs de date de début et de fin dans une instance ParameterRangeValue et les a
transmises au paramètre OrderDateRange du sous-rapport CustomerOrders.
1.5.1.3.3
Ajout de contrôles TextBox pour contenir les
valeurs de paramètres de plage
Dans cette section, vous allez ajouter deux contrôles TextBox pour transmettre au paramètre de plage
OrderDateRange des valeurs de date de début et de date de fin au moment de l'exécution dans le sous-rapport
CustomerOrders.
Remarque
Si vous implémentez ce tutoriel dans un site Web, la persistance des valeurs de date que les utilisateurs
saisissent dans les zones de texte est conservée par ViewState.
1.5.1.3.3.1
Pour créer et configurer un contrôle Button de
réaffichage sur le formulaire
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Si vous développez un site Web, procédez comme suit :
a) Cliquez entre le contrôle ListBox et le contrôle Button.
b) Appuyez trois fois sur ENTREE pour insérer deux lignes entre le contrôle ListBox et le contrôle Button.
c) Sur la première ligne créée sous le contrôle ListBox, saisissez Date de début de la commande.
d) Sur la seconde ligne créée sous le contrôle ListBox, saisissez Date de fin de la commande.
4.
Si vous développez un projet Windows, procédez comme suit :
a) Dans la boîte à outils, faites glisser deux contrôles Label à droite du contrôle ListBox. Placez une
étiquette sur l'autre, en positionnant les deux étiquettes au-dessus du contrôle Button.
b) Sélectionnez le premier contrôle Label, puis attribuez à la propriété Text la valeur Date de début de
la commande dans la fenêtre Propriétés.
c) Sélectionnez le second contrôle Label, puis attribuez à la propriété Text la valeur Date de fin de la
commande dans la fenêtre Propriétés.
284
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
5.
Dans la boîte à outils, faites glisser un contrôle à droite de "Date de début de la commande."
6.
Cliquez sur le contrôle TextBox pour le sélectionner.
7.
Dans la fenêtre Propriétés, attribuez à ID (ou Name) la valeur orderStartDate.
8.
Dans la boîte à outils, faites glisser un contrôle TextBox à droite de "Date de fin de la commande."
9.
Cliquez sur le contrôle TextBox pour le sélectionner.
10. Dans la fenêtre Propriétés, attribuez à ID (ou Name) la valeur orderEndDate.
11. Dans le menu Fichier, sélectionnez Enregistrer tout.
1.5.1.3.4
Modification des méthodes d'appel du sous-rapport
Vous devez à présent modifier la méthode ConfigureCrystalReports() et la méthode d'événement
redisplay_Click() pour recevoir des informations de ces contrôles TextBox, les appliquer à la méthode
SetDateRangeForOrders() et traiter les informations de paramètre pour les sous-rapports.
Dans le tutoriel précédent, Tutoriel : Lecture et définition des paramètres discrets [page 252], vous avez conçu ces
méthodes de deux façons différentes si vous avez inclus la persistance Session.
Remarque
Les projets Windows ne nécessitent aucune persistance Session. Les sites Web nécessitent généralement la
persistance Session.
Choisissez l'une des deux (mais pas les deux) procédures ci-dessous. Modifiez les méthodes qui excluent la
persistance Session ou les méthodes qui incluent la persistance Session :
1.5.1.3.4.1
Modification des méthodes qui excluent la
persistance Session
Si vous avez créé le tutoriel précédent Tutoriel : Lecture et définition des paramètres discrets [page 252] et exclu
la persistance Session, effectuez les procédures suivantes. Sinon, effectuez la procédure Modification des
méthodes qui incluent la persistance Session [page 287].
1.5.1.3.4.1.1
Pour modifier la méthode
ConfigureCrystalReports() excluant la persistance Session
Procédure
1.
Dans la méthode ConfigureCrystalReports(), créez plusieurs sauts de ligne dans le code après les lignes
qui affectent "Paris" et "Tokyo" comme variables ArrayList.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
285
2.
Dans les sauts de ligne, déclarez et définissez des valeurs en code dur pour les deux variables chaîne,
startDate et endDate.
Dim startDate As String = "1/8/1997"
Dim endDate As String = "31/8/1997"
string startDate = "1/8/1997";
string endDate = "31/8/1997";
3.
Sous le code qui appelle la méthode SetCurrentValuesForParameterField(), appelez la méthode
SetDateRangeForOrders() et transmettez l'instance ParameterFields et les variables startDate et
endDate.
SetDateRangeForOrders(myParameterFields, startDate, endDate)
SetDateRangeForOrders(parameterFields, startDate, endDate);
4.
Dans le menu Fichier, sélectionnez Enregistrer tout.
1.5.1.3.4.1.2
Pour modifier la méthode redisplay_Click()
excluant la persistance Session
Procédure
1.
Dans la méthode d'événement redisplay_Click(), créez plusieurs sauts de ligne dans le code au-dessus
de la ligne qui lie le rapport au contrôle CrystalReportViewer.
2.
Dans les sauts de ligne, déclarez et définissez les valeurs des deux variables chaîne startDate et endDate à
partir des contrôles TextBox que vous avez ajoutés au Web Form ou Windows Form.
Dim startDate As String = orderStartDate.Text
Dim endDate As String = orderEndDate.Text
string startDate = orderStartDate.Text;
string endDate = orderEndDate.Text;
3.
Sous le code qui appelle la méthode SetCurrentValuesForParameterField(), appelez la méthode
SetDateRangeForOrders() et transmettez l'instance ParameterFields et les variables startDate et
endDate.
SetDateRangeForOrders(myParameterFields, startDate, endDate)
SetDateRangeForOrders(parameterFields, startDate, endDate);
286
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
4.
Dans le menu Fichier, sélectionnez Enregistrer tout.
1.5.1.3.4.2
Modification des méthodes qui incluent la
persistance Session
Si vous avez créé le tutoriel précédent Tutoriel : Lecture et définition des paramètres discrets [page 252] et inclus
la persistance Session, effectuez les procédures suivantes. Sinon, effectuez la procédure Modification des
méthodes qui excluent la persistance Session [page 285].
1.5.1.3.4.2.1
Pour modifier la méthode
ConfigureCrystalReports() incluant la persistance Session
Procédure
1.
Dans la méthode ConfigureCrystalReports(), créez plusieurs sauts de ligne dans le code après la ligne
qui déclare et instancie ArrayList.
2.
Dans les sauts de ligne, déclarez deux variables chaîne, startDate et endDate.
Dim startDate As String
Dim endDate As String
string startDate;
string endDate;
3.
Dans le bloc conditionnel Not IsPostBack, saisissez des valeurs par défaut pour les variables startDate et
endDate.
startDate = "1/8/1997"
endDate = "31/8/1997"
startDate = "1/8/1997";
endDate = "31/8/1997";
4.
Dans le bloc conditionnel Not IsPostBack, affectez les variables startDate et endDate à Session.
Session("startDate") = startDate
Session("endDate") = endDate
Session["startDate"] = startDate;
Session["endDate"] = endDate;
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
287
5.
Dans le bloc Else, après l'extraction de l'instance ArrayList de Session, extrayez les variables startDate et
endDate de Session.
startDate = Session("startDate").ToString()
endDate = Session("endDate").ToString()
startDate = Session["startDate"].ToString();
endDate = Session["endDate"].ToString();
Cette approche permet d'atteindre la fin du bloc avec les variables de date affectées dans les deux cas. Cette
méthode suit la logique parallèle de l'affectation de la variable ArrayList que vous avez configurée dans le
tutoriel précédent.
6.
Sous le code qui appelle la méthode SetCurrentValuesForParameterField(), appelez la méthode
SetDateRangeForOrders() et transmettez l'instance ParameterFields et les variables startDate et
endDate.
SetDateRangeForOrders(myParameterFields, startDate, endDate)
SetDateRangeForOrders(parameterFields, startDate, endDate);
7.
Dans le menu Fichier, sélectionnez Enregistrer tout.
1.5.1.3.4.2.2
Pour modifier la méthode redisplay_Click()
incluant la persistance Session
Contexte
Modifiez à présent la méthode d'événement redisplay_Click.
Procédure
1.
Dans la méthode d'événement redisplay_Click(), créez plusieurs sauts de ligne dans le code après la
ligne qui affecte l'instance ArrayList à Session.
2.
Dans les sauts de ligne, affectez la propriété Text des contrôles TextBox orderStartDate et orderEndDate aux
variables Session.
Session("startDate") = orderStartDate.Text
Session("endDate") = orderEndDate.Text
Session["startDate"] = orderStartDate.Text;
Session["endDate"] = orderEndDate.Text;
288
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
3.
Dans le menu Fichier, sélectionnez Enregistrer tout.
Résultats
Ces valeurs Session startDate et endDate sont à présent extraites et appliquées lors de l'appel de la méthode
ConfigureCrystalReports().
Vous êtes maintenant prêt à générer et exécuter le projet pour vérifier que les valeurs TextBox redéfinissent le
paramètre de plage dans le sous-rapport.
1.5.1.3.5
Vérification du paramètre du sous-rapport
Contexte
Vous allez à présent vérifier le paramètre du sous-rapport à partir des valeurs TextBox.
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
4.
Dans le contrôle ListBox, cliquez sur au moins quatre villes différentes dans la liste en maintenant la touche
Ctrl enfoncée.
5.
Dans le contrôle TextBox orderStartDate, saisissez 1/1/1997.
6.
Dans le contrôle TextBox orderEndDate, saisissez 8/31/1997.
7.
Cliquez sur le bouton Réafficher le rapport.
La page se recharge et affiche les enregistrements des clients qui vivent dans les villes que vous venez de
sélectionner dans la liste, ainsi qu'un sous-rapport indiquant les commandes correspondant à la plage de
dates spécifiées ci-dessus.
8.
Dans le contrôle CrystalReportViewer, augmentez le facteur de zoom à 125 %.
La page se recharge avec un facteur de zoom de 125 %. Les valeurs sélectionnées à la fois pour les villes et la
plage des dates de commande sont rendues persistantes.
9.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
289
1.5.1.4
Tutoriel : Filtrage des données à l'aide des formules
de sélection
Dans ce tutoriel, vous allez apprendre à utiliser des formules de sélection afin de filtrer les enregistrements à
afficher dans un rapport Crystal.
Introduction
Les formules de sélection servent à filtrer les enregistrements à afficher dans un rapport Crystal. Pour écrire des
formules de sélection, vous pouvez utiliser la syntaxe Basic et la syntaxe Crystal.
Dans ce tutoriel, vous allez créer une formule de sélection afin de filtrer les enregistrements clients dans lesquels
le champ Ventes de l'année dernière est supérieur à une valeur spécifique et le champ Nom du client est comparé
à une autre chaîne. Un contrôle ListBox sert à sélectionner un opérateur de comparaison pour le champ Nom du
client. Vous pouvez choisir d'afficher les noms de client qui sont égaux, inférieurs, supérieurs, inférieurs ou égaux,
supérieurs ou égaux, ou pas égaux à la valeur de chaîne que vous avez spécifiée.
La formule est transmise sous forme de variable chaîne à la propriété SelectionFormula de la classe
CrystalReportViewer. Une fois la propriété définie, le rapport Crystal lié au contrôle CrystalReportViewer est filtré
avant d'être affiché.
Exemple de code
Ce tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez les
instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir d'une
version terminée.
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les noms des
dossiers de chaque version d'exemple de code sont les suivants :
●
Site Web C# : CS_Web_CRVObjMod_FilteringData
●
Projet Windows C# : CS_Win_CRVObjMod_FilteringData
●
Site Web Visual Basic : VB_Web_CRVObjMod_FilteringData
●
Projet Windows Visual Basic : VB_Win_CRVObjMod_FilteringData
Informations associées
Formules - Référence [page 786]
Répertoire d'exemples de rapports [page 15]
290
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.1.4.1
sélection
Création d'un rapport avec une formule de
Dans cette section, vous créez un rapport à partir des informations de la base de données Xtreme.
1.5.1.4.1.1
Pour créer un rapport avec des données
sécurisées de la base de données Xtreme
Procédure
1.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du projet affiché en gras,
pointez sur Ajouter, puis cliquez sur Nouvel élément.
2.
Dans la boîte de dialogue Ajouter un nouvel élément, dans la vue Modèles, sélectionnez le modèle Rapport
Crystal.
3.
Dans le champ Nom, saisissez le nom CustomersBySalesName.rpt, puis cliquez sur Ajouter.
4.
Dans le panneau Créer un document de rapport Crystal de la boîte de dialogue Galerie de rapports Crystal,
sélectionnez en utilisant l' Assistant de création de rapports.
5.
Dans le panneau Choisir un expert, sélectionnez Standard, puis cliquez sur OK.
6.
Dans le panneau Sources de données disponibles de la fenêtre Assistant de création de rapports standard,
développez le dossier Créer une nouvelle connexion.
7.
Dans le sous-dossier qui s'ouvre, développez le dossier ODBC (RDO).
8.
Dans la fenêtre ODBC (RDO), sélectionnez l'entrée DSN ODBC correspondant à l'exemple de base de données
Xtreme, puis cliquez sur Terminer.
Le dossier ODBC (RDO) se développe pour afficher la base de données Xtreme.
9.
Développez le nœud Tables, cliquez deux fois sur la table Clients pour la déplacer dans le panneau Tables
sélectionnées, puis cliquez sur Suivant.
10. Développez la table Clients, puis utilisez la combinaison de touches Ctrl-clic pour sélectionner les champs
Nom du client et Ventes de l'année dernière.
11. Cliquez sur le bouton > pour déplacer ces champs dans le panneau Champs à afficher, puis cliquez sur
Suivant.
12. Dans le panneau Champs disponibles, sous Champs du rapport, cliquez deux fois sur Clients.Noms du client
pour déplacer le champ dans le panneau Regrouper par, puis cliquez sur Terminer.
Le rapport CustomersBySalesName est créé et chargé dans la fenêtre principale de Visual Studio.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
291
1.5.1.4.1.2
Pour créer une formule de sélection en fonction
du champ Ventes de l'année dernière
Contexte
Vous allez ensuite créer une formule de sélection pour filtrer les données en fonction du champ Ventes de l'année
dernière.
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code pour afficher la classe code-behind du Web Form ou du Windows
Form.
3.
Pour un site Web, dans la méthode ConfigureCrystalReports() (que vous avez créée dans la section
Configuration d'un projet [page 15]), créez un bloc conditionnel Not IsPostBack.
Remarque
Le bloc conditionnel Not IsPostBack encapsule du code devant être exécuté uniquement lors du premier
chargement de la page.
If Not IsPostBack Then
End If
if(!IsPostBack)
{
}
4.
Pour un site Web, ajoutez les lignes de code suivantes dans le bloc conditionnel Not IsPostBack. Pour un
projet Windows, ajoutez le code à la méthode ConfigureCrystalReports(), sans le bloc conditionnel Not
IsPostBack.
a) Saisissez la formule afin de sélectionner uniquement les enregistrements Ventes de l'année dernière
supérieurs à 11 000 $ et les clients dont le nom commence par la lettre "A".
Dim mySelectFormula As String = "{Customer.Last Year's Sales} >
11000.00 " _
& "AND Mid({Customer.Customer Name}, 1, 1) = ""A"" "
string selectFormula = "{Customer.Last Year's Sales} > 11000.00
"
+ "AND Mid({Customer.Customer Name}, 1, 1) = \"A\"";
292
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
b) Affectez la chaîne de formule de sélection à la propriété SelectionFormula du contrôle
CrystalReportViewer.
myCrystalReportViewer.SelectionFormula = mySelectFormula
crystalReportViewer.SelectionFormula = selectFormula;
1.5.1.4.2
Liaison du rapport
Lorsque vous avez suivi les instructions de la procédure Configuration d'un projet [page 15] en préparation de ce
tutoriel, vous avez placé un contrôle CrystalReportViewer sur le Web Form ou le Windows Form. Aux étapes
précédentes, vous avez ajouté un rapport CustomersBySalesName et une formule de sélection au projet.
Dans cette section, vous allez lier le chemin d'accès au répertoire du rapport CustomersBySalesName au
contrôle CrystalReportViewer. Vous allez ensuite vérifier si le rapport s'affiche correctement avec les rapports
filtrés selon la formule de sélection.
1.5.1.4.2.1
Pour lier le chemin d'accès au répertoire du
rapport CustomersBySalesName au contrôle
CrystalReportViewer.
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code pour afficher la classe code-behind du Web Form ou du Windows
Form.
3.
Localisez la méthode ConfigureCrystalReports() (que vous avez créée dans la section Configuration
d'un projet [page 15]).
4.
Déclarez une variable chaîne, nommez-la reportPath et affectez-lui un chemin d'accès au rapport local au
moment de l'exécution. Ce chemin est déterminé différemment selon qu'il s'agit d'un site Web ou d'un projet
Windows :
○
Pour un site Web, transmettez le nom du fichier de rapport local sous forme de paramètre de type chaîne
dans la méthode Server.MapPath(). Ceci permet d'associer le rapport local au chemin d'accès du
répertoire de fichiers du disque dur au moment de l'exécution.
Dim reportPath As String =
Server.MapPath("CustomersBySalesName.rpt")
string reportPath = Server.MapPath("CustomersBySalesName.rpt");
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
293
○
Pour un projet Windows, concaténez la propriété Application.StartupPath avec une barre oblique
inverse et le nom du fichier de rapport local. Ceci permet d'associer le rapport au même répertoire que
celui du fichier exécutable Windows.
Remarque
Au moment de la compilation, vous copierez le rapport dans le répertoire contenant le fichier
exécutable.
Dim reportPath As String = Application.StartupPath & "\" &
"CustomersBySalesName.rpt"
string reportPath = Application.StartupPath + "\\" +
"CustomersBySalesName.rpt";
5.
Affectez le chemin d'accès au répertoire du fichier du rapport NorthwindCustomers à la propriété
ReportSource du contrôle CrystalReportViewer.
myCrystalReportViewer.ReportSource = reportPath
crystalReportViewer.ReportSource = reportPath;
1.5.1.4.2.2
Pour vérifier la formule de sélection du rapport
CustomersBySalesName
Procédure
1.
Dans le menu Générer, cliquez sur Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Si vous utilisez un rapport non incorporé dans un projet Windows, recherchez l'exécutable Windows compilé
dans le sous-répertoire \bin\ [Visual Basic] ou \bin\debug\ [C#], puis copiez le rapport dans ce
sous-répertoire.
Remarque
Pour que le rapport non incorporé soit chargé par l'exécutable Windows au moment de l'exécution, le
rapport doit être stocké dans le même répertoire que l'exécutable Windows.
4.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport Crystal affiche quatre enregistrements clients : Alley Cat Cycles, Ankara Bicycle Company,
Arsenault et Maurier ainsi que Athens Bicycle Co.
5.
294
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.1.4.3
Ajout de contrôles dans la formule de sélection
Contexte
Dans cette section, vous allez ajouter des contrôles pour modifier de façon dynamique les valeurs utilisées dans la
formule de sélection. Pour le champ Ventes de l'année dernière, vous ajoutez une zone de texte pour spécifier la
valeur minimale des ventes à afficher dans le rapport Crystal. Pour le champ Nom du client, vous ajoutez des
contrôles DropDownList et TextBox pour spécifier les noms de client à afficher.
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Si vous développez un site Web, procédez comme suit :
a) Cliquez sur le contrôle CrystalReportViewer pour le sélectionner.
b) Appuyez sur la FLECHE GAUCHE du clavier afin de faire apparaître un curseur clignotant, puis appuyez
trois fois sur ENTREE.
Le contrôle CrystalReportViewer descend de trois lignes.
4.
Si vous développez un projet Windows, procédez comme suit :
a) Cliquez sur le contrôle CrystalReportViewer pour le sélectionner.
b) Dans la fenêtre Propriétés, attribuez à la propriété Dock la valeur "Bottom".
c) Redimensionnez le contrôle CrystalReportViewer afin d'afficher environ trois lignes au-dessus.
d) Dans la fenêtre Propriétés, attribuez à la propriété Anchor la valeur "Top, Bottom, Left, Right".
5.
Si vous développez un site Web, saisissez dans la première ligne Saisissez la valeur minimale des
ventes de l'année dernière : $.
6.
Si vous développez un projet Windows, procédez comme suit :
a) Dans la Boîte à outils, faites glisser un contrôle Label en haut du formulaire.
b) Dans la fenêtre Propriétés, attribuez à la propriété Text la valeur Saisissez la valeur minimale
des ventes de l'année dernière : $.
7.
Dans la Boîte à outils, faites glisser un contrôle TextBox à droite du texte.
8.
Sélectionnez le contrôle TextBox, puis effectuez les opérations suivantes dans la fenêtre Propriétés :
a) Attribuez à ID (ou Name) la valeur lastYearsSales.
b) Attribuez à Text la valeur 11000.00.
9.
Si vous développez un site Web, saisissez dans la deuxième ligne Afficher les noms des clients.
10. Si vous développez un projet Windows, procédez comme suit :
a) Dans la Boîte à outils, faites glisser un contrôle Label sur la deuxième ligne du formulaire.
b) Dans la fenêtre Propriétés, attribuez à la propriété Text la valeur "Afficher les noms des clients".
11. Dans la Boîte à outils, faites glisser un contrôle DropDownList (ComboBox dans un projet Windows) à droite
du texte.
12. Sélectionnez le contrôle DropDownList (ComboBox), puis attribuez à ID (ou Name) la valeur
"selectOperatorList" dans la fenêtre Propriétés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
295
13. Dans la Boîte à outils, faites glisser un contrôle TextBox à droite du contrôle DropDownList.
14. Sélectionnez le contrôle TextBox, puis effectuez les opérations suivantes dans la fenêtre Propriétés :
a) Attribuez à ID (ou Name) la valeur customerName.
b) Attribuez à Text la valeur A.
15. Dans la Boîte à outils, faites glisser un contrôle Button sur la troisième ligne du formulaire et au-dessus du
contrôle CrystalReportViewer.
16. Sélectionnez le contrôle Button, puis effectuez les opérations suivantes dans la fenêtre Propriétés :
a) Attribuez à ID (ou Name) la valeur redisplay.
b) Attribuez à Text la valeur Réafficher le rapport.
1.5.1.4.4
le code
Définition manuelle de la formule de sélection dans
Vous allez à présent ajouter un code pour modifier la formule de sélection dans la classe code-behind.
1.5.1.4.4.1
Pour coder la formule de sélection
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, sélectionnez Concepteur.
3.
Cliquez deux fois sur Réafficher le rapport.
La classe code-behind du rapport s'affiche et indique qu'une méthode d'événement redisplay_Click() a
été automatiquement générée.
4.
Pour la formule de sélection, créez une variable chaîne dont les valeurs proviennent des contrôles TextBox.
La formule de sélection est similaire au texte que vous avez saisi dans la méthode
ConfigureCrystalReports(). Au lieu de spécifier une valeur minimale de ventes de 11 000 $, vous utilisez
la valeur provenant du contrôle TextBox lastYearsSales. Pour le champ Nom du client, vous utilisez la
valeur provenant du contrôle TextBox customerName.
Dim mySelectFormula As String = "{Customer.Last Year's Sales} >
" & lastYearsSales.Text _
& " AND Mid({Customer.Customer Name}, 1, 1) > """ &
customerName.Text & """"
string selectFormula = "{Customer.Last Year's Sales} > " +
lastYearsSales.Text
+ " AND Mid({Customer.Customer Name}, 1, 1) > \"" +
customerName.Text + "\"";
296
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
5.
Affectez la variable chaîne à la propriété SelectionFormula du contrôle CrystalReportViewer.
myCrystalReportViewer.SelectionFormula = mySelectFormula
crystalReportViewer.SelectionFormula = selectFormula;
6.
Liez à nouveau le rapport CustomerBySalesName à la propriété ReportSource du contrôle
CrystalReportViewer.
Remarque
Le chemin d'accès au fichier indiqué ici s'applique à un projet Visual Studio. NomProjet est remplacé par le
nom de votre projet Web ou Windows. NomUtilisateur est remplacé par votre nom de connexion.
○
Le chemin par défaut d'un projet de site Web est le suivant :
myCrystalReportViewer.ReportSource = "C:\WebSites\ NomProjet
\CustomersBySalesName.rpt"
crystalReportViewer.ReportSource = "C:\\WebSites\\ NomProjet\
\CustomersBySalesName.rpt";
○
Le chemin par défaut d'un projet de site Windows est le suivant :
myCrystalReportViewer.ReportSource = "C:\Documents and Settings\
NomUtilisateur\Mes documents\Visual Studio\Projects\ NomProjet
\CustomersBySalesName.rpt"
crystalReportViewer.ReportSource = "C:\\Documents and Settings\\
NomUtilisateur\\Mes documents\\Visual Studio\\Projects\\ NomProjet\
\CustomersBySalesName.rpt";
Résultats
Vous venez de créer une formule de sélection que vous pouvez modifier au moment de l'exécution.
1.5.1.4.4.2
Pour vérifier la formule de sélection
Procédure
1.
Dans le menu Générer, cliquez sur Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
297
3.
Dans le menu Déboguer, cliquez sur Démarrer.
4.
Dans le contrôle TextBox lastYearsSales, saisissez200000.
5.
Dans le contrôle TextBox customerName, saisissez SAB.
6.
Cliquez sur Réafficher le rapport.
Le rapport Crystal affiche trois enregistrements clients : SAB Mountain, Tek Bikes et Tienda de Bicicletas El
Pardo.
Seuls les enregistrements clients dont le nom vient après les lettres "SAB" et dont les ventes annuelles de
l'année dernière sont supérieures à la valeur "200000" s'affichent.
7.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.1.4.5
Utilisation d'un contrôle DropDownList pour
modifier la formule de sélection
Dans cette section, vous allez remplir le contrôle DropDownList avec des opérateurs de comparaison. Vous
créez une énumération contenant les opérateurs de comparaison.
Le contrôle DropDownList permet de choisir d'afficher les noms de client qui sont égaux, inférieurs, supérieurs,
inférieurs ou égaux, supérieurs ou égaux, ou pas égaux au texte que vous avez saisi dans le contrôle TextBox.
Dans la méthode d'événement redisplay_Click(), vous modifiez la chaîne actuellement affectée à la propriété
SelectionFormula du contrôle CrystalReportViewer.
1.5.1.4.5.1
Pour créer une énumération
CeComparisonOperator
Procédure
1.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du projet affiché en gras,
pointez sur Ajouter, puis cliquez sur Nouvel élément.
2.
Dans la boîte de dialogue Ajouter un nouvel élément, sélectionnez Classe dans la vue Modèles.
3.
Dans le champ Nom, saisissez CeComparisonOperator, puis cliquez sur Ajouter.
Remarque
Vous pouvez être invité à placer cette classe dans un répertoire Code. Cliquez sur le bouton Oui.
4.
Dans la signature de classe, remplacez le mot class par enum pour convertir la classe en énumération.
Dans un projet Windows C# pour Visual Studio, vous devez également remplacer l'espace de noms par le
nom de votre projet.
298
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Remarque
Dans Visual Basic, n'oubliez pas de remplacer les signatures d'ouverture et de fermeture de la classe par
enum.
5.
Les énumérations ne comportant aucun constructeur, supprimez la méthode constructeur par défaut qui est
fournie dans la version C# du code.
6.
Dans l'énumération, saisissez les valeurs suivantes :
EqualTo
LessThan
GreaterThan
LessThan_or_EqualTo
GreaterThan_or_EqualTo
Not_EqualTo
EqualTo,
LessThan,
GreaterThan,
LessThan_or_EqualTo,
GreaterThan_or_EqualTo,
Not_EqualTo
1.5.1.4.5.2
Pour remplir le contrôle DropDownList à l'aide de
l'énumération CeComparisonOperator pour un site Web
Contexte
Les procédures suivantes indiquent comment lier l'énumération CeComparisonOperator au contrôle
DropDownList pour un site Web ou un projet Windows. Suivez les instructions de l'une des procédures ci-dessous.
Procédure
1.
Ouvrez le Web Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Dans le bloc conditionnel Not IsPostBack de la méthode ConfigureCrystalReports(), avant la
déclaration de chaîne de la formule de sélection, définissez la propriété DataSource du contrôle
DropDownList selon les valeurs de l'énumération CeComparisonOperator.
selectOperatorList.DataSource =
System.Enum.GetValues(GetType(CeComparisonOperator))
selectOperatorList.DataSource =
System.Enum.GetValues(typeof(CeComparisonOperator));
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
299
4.
Appelez à présent la méthode DataBind() du contrôle DropDownList selectOperatorList pour lier les valeurs
au contrôle.
selectOperatorList.DataBind()
selectOperatorList.DataBind();
1.5.1.4.5.3
Pour remplir le contrôle DropDownList à l'aide de
l'énumération CeComparisonOperator pour un projet Windows
Procédure
1.
Ouvrez le Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Dans la méthode ConfigureCrystalReports(), avant la déclaration de chaîne de la formule de sélection,
définissez la propriété DataSource du contrôle ComboBox selectOperatorList selon les valeurs de
l'énumération CeComparisonOperator.
selectOperatorList.DataSource =
System.Enum.GetValues(GetType(CeComparisonOperator))
selectOperatorList.DataSource =
System.Enum.GetValues(typeof(CeComparisonOperator));
1.5.1.4.5.4
Pour créer la méthode d'assistance
GetSelectedCompareOperator()
Contexte
Créez ensuite la méthode d'assistance GetSelectedCompareOperator() pour renvoyer l'index sélectionné
sous la forme d'une chaîne représentant un signe d'opérateur de comparaison.
Procédure
1.
A la fin de la classe, créez une méthode d'assistance privée intitulée GetSelectedCompareOperator() qui
renvoie une variable chaîne.
Private Function GetSelectedCompareOperator() As String
300
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
End Function
private string GetSelectedCompareOperator()
{
}
2.
Dans la méthode, créez une instruction "Select Case" [Visual Basic] ou "switch" [C#] qui
référence les membres de l'énumération CeComparisonOperator et renvoie le signe d'opérateur de
comparaison sous la forme d'une variable chaîne.
Select Case selectOperatorList.SelectedIndex
Case CeComparisonOperator.EqualTo
return "="
Case CeComparisonOperator.LessThan
return "<"
Case CeComparisonOperator.GreaterThan
return ">"
Case CeComparisonOperator.LessThan_or_EqualTo
return "<="
Case CeComparisonOperator.GreaterThan_or_EqualTo
return ">="
Case CeComparisonOperator.Not_EqualTo
return "<>"
Case Else
return "="
End Select
switch ((CeComparisonOperator)selectOperatorList.SelectedIndex)
{
case CeComparisonOperator.EqualTo:
return "=";
case CeComparisonOperator.LessThan:
return "<";
case CeComparisonOperator.GreaterThan:
return ">";
case CeComparisonOperator.LessThan_or_EqualTo:
return "<=";
case CeComparisonOperator.GreaterThan_or_EqualTo:
return ">=";
case CeComparisonOperator.Not_EqualTo:
return "<>";
default:
return "=";
}
1.5.1.4.5.5
Pour modifier l'opérateur de comparaison du
paramètre Nom du client affecté à la propriété
SelectionFormula
Contexte
Dans la méthode d'événement redisplay_Click(), un signe "supérieur à" (">") est actuellement utilisé pour la
sélection du champ Nom du client. Vous allez ensuite apprendre à remplacer le signe par l'opérateur de
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
301
comparaison que vous avez sélectionné à partir du contrôle DropDownList. Le signe sélectionné est renvoyé
sous la forme d'une chaîne lorsque vous appelez la méthode d'assistance GetSelectedCompareOperator().
Procédure
1.
Au début de la méthode d'événement redisplay_Click(), appelez la méthode d'assistance
GetSelectedCompareOperator(), puis affectez le résultat à une variable chaîne.
Dim mySelectedOperator As String = GetSelectedCompareOperator()
string selectedOperator = GetSelectedCompareOperator();
2.
Pour la variable chaîne de la formule de sélection, remplacez le signe "supérieur à" (">") par la chaîne de
l'opérateur sélectionnée.
Dim mySelectFormula As String = "{Customer.Last Year's Sales} >
" & lastYearsSales.Text _
& " AND Mid({Customer.Customer Name}, 1, 1) " &
mySelectedOperator & " """ & customerName.Text & """"
string selectFormula = "{Customer.Last Year's Sales} > " +
lastYearsSales.Text
+ " AND Mid({Customer.Customer Name}, 1, 1) " + selectedOperator + "
\"" + customerName.Text + "\"";
1.5.1.4.5.6
Pour vérifier la formule de sélection du rapport
CustomersBySalesName
Contexte
Vous avez créé une formule de sélection qui dépend des valeurs saisies dans le champ Ventes de l'année dernière
et le champ Nom du client.
Vous pouvez à présent créer et vérifier la formule de sélection.
Procédure
1.
Dans le menu Générer, cliquez sur Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
302
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
a) Dans le contrôle TextBox lastYearsSales, saisissez 40000.
b) Dans le contrôle TextBox customerName, saisissez Athens Bicycle Co.
c) Dans le contrôle DropDownList, sélectionnez LessThan.
d) Cliquez sur Réafficher le rapport.
Le rapport Crystal affiche deux enregistrements clients : Alley Cat Cycles et Ankara Bicycle Company.
4.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.1.5
Tutoriel : Personnalisation du contrôle
CrystalReportViewer
Dans ce tutoriel, vous allez apprendre à personnaliser l'affichage du contrôle CrystalReportViewer.
Introduction
Dans ce tutoriel, vous allez apprendre à personnaliser l'apparence du contrôle CrystalReportViewer en utilisant
les propriétés de sa classe sous-jacente.
Vous allez également apprendre à utiliser les méthodes de sélection de la page, de zoom, de recherche et
d'impression.
Pour commencer, vous allez apprendre à personnaliser la barre d'outils CrystalReportViewer. Vous avez besoin
d'un contrôle ListBox qui stocke les propriétés disponibles dans la barre d'outils. Seules les propriétés
sélectionnées dans le contrôle ListBox s'affichent dans la barre d'outils CrystalReportViewer.
Vous allez ensuite ajouter un second contrôle ListBox pour stocker les éléments du rapport. Pour un site Web,
vous pouvez également choisir d'afficher toutes les pages du rapport sous forme d'une page unique ou de pages
séparées.
Vous allez apprendre à personnaliser la couleur d'arrière-plan à l'aide d'un contrôle DropDownList.
Vous allez apprendre ensuite à sélectionner la page de rapport que vous souhaitez visualiser. Vous avez besoin
d'un contrôle TextBox pour saisir le numéro de page et d'un contrôle Button pour recharger le rapport à la page
sélectionnée. Vous avez également besoin d'un contrôle TextBox et d'un contrôle Button pour modifier le facteur
de zoom et rechercher un texte dans votre rapport.
Pour un site Web, vous disposez de propriétés du contrôle CrystalReportViewer qui ne sont pas disponibles pour
un projet Windows : une propriété permettant de choisir le mode d'impression et d'autres propriétés permettant
de changer la largeur, le style e
Exemple de code
Ce tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez les
instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir d'une
version terminée.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
303
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les noms des
dossiers de chaque version d'exemple de code sont les suivants :
●
Site Web C# : CS_Web_CRVObjMod_CustomizeViewer
●
Projet Windows C# : CS_Win_CRVObjMod_CustomizeViewer
●
Site Web Visual Basic : VB_Web_CRVObjMod_CustomizeViewer
●
Projet Windows Visual Basic : VB_Win_CRVObjMod_CustomizeViewer
Informations associées
Répertoire d'exemples de rapports [page 15]
1.5.1.5.1
Création d'un tableau de paramètres personnalisés
Dans cette section, vous allez créer et configurer un tableau (dans un site Web) ou un contrôle TableLayoutPanel
(dans un projet Windows) contenant les différents contrôles qui constituent votre tableau de paramètres
personnalisés.
Les sites Web et les projets Windows utilisant des types de tableau différents, choisissez la procédure
correspondant à votre site Web ou votre projet Windows.
1.5.1.5.1.1
Pour créer un tableau de paramètres
personnalisés pour un site Web
Procédure
1.
Ouvrez la page Default.aspx (le Web Form) en mode Design.
2.
Cliquez sur le contrôle CrystalReportViewer pour le sélectionner.
3.
Cliquez sur la flèche orientée vers la gauche pour déplacer le curseur à gauche du contrôle
CrystalReportViewer, puis appuyez sur Entrée.
4.
Cliquez sur la flèche orientée vers le haut pour déplacer le curseur vers la ligne vide au-dessus du contrôle
CrystalReportViewer.
5.
Dans le menu Disposition, cliquez sur Insérer un tableau.
6.
Dans la boîte de dialogue Insérer un tableau, sélectionnez l'option Personnalisé.
7.
Dans le panneau Disposition, cochez la case Largeur et conservez la valeur 100 %.
8.
Configurez pour Lignes le nombre 6 et pour Colonnes le nombre 4.
9.
Dans le panneau Attributs, cochez la case Bordure et attribuez-lui la valeur 1.
10. Cliquez sur le bouton Propriétés de la cellule.
11. Dans la boîte de dialogue Propriétés de la cellule du panneau Disposition, dans la liste déroulante Alignement
vertical, sélectionnez Top.
304
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
12. Cochez la case Pas de retour automatique à la ligne, puis cliquez sur OK.
13. Cliquez à nouveau sur OK pour fermer la boîte de dialogue Insérer un tableau.
Résultats
Vous pouvez maintenant ajouter des contrôles personnalisés pour votre site Web dans ce tableau.
Effectuez maintenant la procédure Eléments du rapport et de la barre d'outils du contrôle CrystalReportViewer
[page 306].
1.5.1.5.1.2
Pour créer un tableau de paramètres
personnalisés pour un projet Windows
Contexte
Remarque
Cette procédure fonctionne uniquement avec un projet créé à partir de la procédure Configuration d'un projet
[page 15]. La section Configuration d'un projet contient une configuration de références d'espaces de noms et
de code spécifique nécessaire à cette procédure. Il est impossible de suivre cette procédure sans cette
configuration.
Procédure
1.
Ouvrez le Windows Form en mode Design.
2.
Cliquez sur la barre de titre du Windows Form pour le sélectionner entièrement, puis faites glisser le coin
inférieur droit du formulaire pour l'agrandir jusqu'à ce qu'il remplisse la zone principale.
3.
Cliquez sur le contrôle CrystalReportViewer pour le sélectionner.
4.
Dans la fenêtre Propriétés, attribuez à la propriété Dock la valeur "Bottom".
5.
Dans la fenêtre Propriétés, attribuez à la propriété Anchor la valeur "Top, Bottom, Left, Right".
6.
Dans la Boîte à outils, faites glisser un contrôle TableLayoutPanel en haut à gauche du Windows Form.
Un contrôle TableLayoutPanel apparaît affichant deux colonnes et deux lignes.
7.
Si le panneau des tâches guidées n'est pas ouvert, cliquez sur le bouton triangulaire dans le coin supérieur
droit du contrôle TableLayoutPanel.
Le panneau des tâches guidées "Tâches TableLayoutPanel" s'affiche.
8.
Dans le panneau Tâches TableLayoutPanel, cliquez sur le lien Modifier les lignes et les colonnes.
9.
Dans la boîte de dialogue Styles de ligne et de colonne, dans la liste déroulante Type de membre, sélectionnez
Colonnes.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
305
10. Cliquez sur Ajouter jusqu'à ce que vous atteigniez quatre colonnes.
11. Pour chaque colonne, procédez de la manière suivante :
a) Sélectionnez la colonne.
b) Dans le panneau Type de taille, sélectionnez Pourcentage.
c) Définissez 25 % pour chaque valeur.
12. Dans la liste déroulante Type de membre, sélectionnez Lignes.
13. Cliquez sur Ajouter jusqu'à ce que vous atteigniez cinq lignes.
Remarque
Le tableau du projet Windows nécessite une ligne de moins que le tableau d'un site Web parce qu'il y a un
peu moins d'options configurables sur le contrôle CrystalReportViewer d'un projet Windows.
14. Pour chaque ligne, procédez de la manière suivante :
a) Sélectionnez la ligne.
b) Dans le panneau Type de taille, sélectionnez Pourcentage.
c) Définissez 40 % pour la valeur de la première ligne, puis 15 % pour chaque ligne suivante.
Remarque
(1 x 40 %) et (4 x 15 %) = 100 % de l'espace disponible.
15. Cliquez sur OK.
16. Fermez le panneau des tâches TableLayoutPanel.
17. Faites glisser le coin inférieur droit du contrôle TableLayoutPanel pour agrandir le tableau jusqu'à ce qu'il
remplisse l'espace que vous avez créé au-dessus du contrôle CrystalReportViewer.
Résultats
Vous pouvez maintenant ajouter des contrôles personnalisés pour votre projet Windows dans ce tableau.
1.5.1.5.2
Eléments du rapport et de la barre d'outils du
contrôle CrystalReportViewer
Dans ce tutoriel, vous allez manipuler les différents éléments du rapport et de la barre d'outils du contrôle
CrystalReportViewer.
Eléments du visualiseur
Les éléments par défaut du contrôle CrystalReportViewer varient légèrement en fonction des sites Web et des
projets Windows :
306
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
●
Pour les sites Web et les projets Windows :
○
Barre d'outils : affiche une barre d'outils au-dessus de la zone principale du rapport. Chaque élément de la
barre d'outils est contrôlé séparément.
Remarque
Pour en savoir plus, voir la section sur les éléments de la barre d'outils ci-dessous.
○
●
●
Arborescence des groupes : affiche les titres de chaque groupe du rapport, de la même façon qu'une
arborescence de répertoires ; elle s'affiche dans le panneau de la colonne gauche du rapport.
Pour les sites Web uniquement :
○
Page principale : affiche le rapport dans la zone principale de la page.
○
Activer les pages séparées : détermine si le rapport doit être affiché sur une seule page Web ou sous la
forme de pages séparées mises en forme.
Pour les projets Windows uniquement :
○
Barre d'état : affiche le numéro de page en cours et d'autres informations sur le rapport au bas de la zone
du rapport.
Eléments de la barre d'outils
Les éléments par défaut de la barre d'outils varient légèrement en fonction des sites Web et des projets Windows :
●
●
●
Pour les sites Web et les projets Windows :
○
Bouton d'arborescence des groupes : affiche ou masque la section Arborescence des groupes du rapport.
○
Exporter : enregistre le rapport Crystal sous un autre format de fichier tel que RPT, PDF, DOC, XLS ou
RTF.
○
Imprimer : imprime le rapport Crystal dans un fichier PDF ou appelle la boîte de dialogue d'impression.
○
Navigation : permet de sélectionner la page suivante, la page précédente, la dernière page ou la première
page à afficher.
○
Aller à la page : permet de saisir le numéro de la page à afficher.
○
Rechercher : permet de saisir une chaîne à rechercher dans le rapport.
○
Facteur de zoom : permet de sélectionner le facteur de zoom du rapport.
Pour les sites Web uniquement :
○
Vue Liste (uniquement pour un site Web) : permet de choisir la vue du rapport à afficher (par exemple
sous-rapports, etc.).
○
Explorer en amont : ouvre une page fournissant des informations plus détaillées que la rubrique actuelle.
○
Logo Crystal : affiche le logo du produit SAP Crystal Reports.
Pour les projets Windows uniquement :
○
Actualiser : réaffiche le rapport.
○
Fermer la vue : ferme la vue actuelle du rapport si plusieurs vues sont ouvertes.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
307
1.5.1.5.3
Ajout d'un mécanisme d'affichage et de masquage
des éléments du rapport et de la barre d'outils
Contexte
Dans cette section, vous allez apprendre à ajouter un mécanisme d'affichage/masquage pour déterminer quels
éléments doivent être affichés dans la barre d'outils CrystalReportViewer.
Vous allez commencer par ajouter les contrôles ListBox et Button dans le tableau sur le Web Form ou le Windows
Form.
Vous allez ensuite créer deux énumérations qui répertorient les éléments du rapport et les éléments de la barre
d'outils, puis vous allez remplir chaque contrôle ListBox avec les valeurs de l'une des énumérations.
Vous allez ensuite coder la méthode d'événement de clic du contrôle Button pour mettre à jour les éléments du
rapport et de la barre d'outils.
Au sein du gestionnaire d'événements, les propriétés de la classe CrystalReportViewer sont définies en fonction
des sélections effectuées dans les deux contrôles ListBox. Si un élément du contrôle ListBox est sélectionné, la
propriété de la barre d'outils a la valeur True.
Plus loin dans ce tutoriel, vous utiliserez le contrôle Button pour mettre à jour d'autres sélections.
Au moment de l'exécution, vous pourrez choisir quels éléments du rapport et de la barre d'outils vous souhaitez
afficher.
Commencez par ajouter les contrôles dans le tableau au bas du Web Form ou du Windows Form.
Procédure
1.
Ouvrez le Web Form ou le Windows Form en mode Design.
2.
Dans la Boîte à outils, faites glisser un contrôle Label vers la première ligne de la première colonne du tableau.
3.
Sélectionnez le contrôle Label, puis dans la fenêtre Propriétés, attribuez à la propriété Text la valeur
Sélectionner les éléments du rapport à afficher.
4.
Dans la Boîte à outils, faites glisser un contrôle ListBox vers la première ligne de la deuxième colonne du
tableau.
5.
Sélectionnez le contrôle ListBox, puis effectuez les opérations suivantes dans la fenêtre Propriétés :
a) Attribuez à ID la valeur listCRVReport.
b) Attribuez à SelectionMode la valeur Multiple (ou MultiExtended dans un projet Windows).
6.
Dans la Boîte à outils, faites glisser un second contrôle Label vers la première ligne de la troisième colonne du
tableau.
7.
Sélectionnez le contrôle Label, puis dans la fenêtre Propriétés, attribuez à la propriété Text la valeur
Sélectionner les éléments de la barre d'outils à afficher.
8.
Dans la Boîte à outils, faites glisser un contrôle Button vers la troisième ligne de la première colonne du
tableau.
9.
Cliquez sur le contrôle Button pour le sélectionner.
308
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
10. Dans la fenêtre Propriétés :
a) Attribuez à ID la valeur "redisplay".
b) Attribuez à Text la valeur "Réafficher le rapport".
11. Dans un projet Windows, redimensionnez le contrôle Button pour afficher la totalité du texte qu'il contient.
Résultats
La prochaine procédure varie selon que vous créez un site Web ou un projet Windows. Choisissez l'une des
procédures suivantes :
●
Configuration des contrôles ListBox pour un site Web [page 309]
●
Configuration des contrôles ListBox pour un projet Windows [page 315]
1.5.1.5.4
Web
Configuration des contrôles ListBox pour un site
Cette section explique comment configurer les contrôles ListBox d'un site Web. Si vous créez un projet Windows,
voir Configuration des contrôles ListBox pour un projet Windows [page 315].
Vous allez maintenant pouvoir créer le gestionnaire d'événements de clic du contrôle Button, puis ajouter du code
à ce gestionnaire d'événements. Le gestionnaire d'événements définit différentes valeurs booléennes pour les
propriétés de la barre d'outils de la classe CrystalReportViewer en fonction des sélections effectuées par
l'utilisateur dans le contrôle ListBox.
Avant de créer ce gestionnaire d'événements, vous devez créer deux énumérations : CeWebCRVReportOptions
et CeWebCRVToolbarOptions.
Ces énumérations fournissent une liste d'éléments du rapport et d'éléments de la barre d'outils pouvant être
sélectionnés.
1.5.1.5.4.1
Pour créer l'énumération
CeWebCRVReportOptions
Procédure
1.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du site Web, pointez sur
Ajouter, puis cliquez sur Nouvel élément.
2.
Dans la boîte de dialogue Ajouter un nouvel élément, sélectionnez Classe dans la vue Modèles.
3.
Dans le champ Nom, saisissez "CeWebCRVReportOptions", puis cliquez sur Ajouter.
Remarque
Vous pouvez être invité à placer cette classe dans un répertoire App_Code. Cliquez sur le bouton Oui.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
309
4.
Dans la signature de classe, remplacez le mot class par "enum" pour convertir la classe en énumération.
Remarque
Dans Visual Basic, n'oubliez pas de remplacer les signatures d'ouverture et de fermeture de la classe par
enum.
5.
Les énumérations ne comportant aucun constructeur, supprimez la méthode constructeur par défaut qui est
fournie dans la version C# du code.
6.
Dans l'énumération, saisissez les valeurs suivantes :
Toolbar
Group_Tree
Main_Page
Enable_Separate_Pages
Toolbar,
Group_Tree,
Main_Page,
Enable_Separate_Pages
7.
Dans le menu Fichier, cliquez sur Enregistrer tout.
1.5.1.5.4.2
Pour créer l'énumération
CeWebCRVToolbarOptions
Procédure
1.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du site Web, pointez sur
Ajouter, puis cliquez sur Nouvel élément.
2.
Dans la boîte de dialogue Ajouter un nouvel élément, sélectionnez Classe dans la vue Modèles.
3.
Dans le champ Nom, saisissez CeWebCRVToolbarOptions, puis cliquez sur Ajouter.
Remarque
Vous pouvez être invité à placer cette classe dans un répertoire App_Code. Cliquez sur le bouton Oui.
4.
Dans la signature de classe, remplacez le mot class par "enum" pour convertir la classe en énumération.
Remarque
Dans Visual Basic, n'oubliez pas de remplacer les signatures d'ouverture et de fermeture de la classe par
enum.
5.
Les énumérations ne comportant aucun constructeur, supprimez la méthode constructeur par défaut qui est
fournie dans la version C# du code.
6.
Dans l'énumération, saisissez les valeurs suivantes :
Group_Tree_Button
310
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Export_Button
Print_Button
View_List_Button
Drill_Up_Button
Page_Navigation_Button
Go_to_Page_Button
Search_Button
Zoom_Button
Crystal_Logo
Group_Tree_Button,
Export_Button,
Print_Button,
View_List_Button,
Drill_Up_Button,
Page_Navigation_Button,
Go_to_Page_Button,
Search_Button,
Zoom_Button,
Crystal_Logo
7.
Dans le menu Fichier, cliquez sur Enregistrer tout.
1.5.1.5.4.3
Pour remplir les contrôles ListBox à partir des
énumérations
Contexte
Vous remplissez à présent les contrôles ListBox avec les valeurs d'énumération qui représentent les propriétés
disponibles pour la barre d'outils CrystalReportViewer.
Procédure
1.
Ouvrez le Web Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Dans la méthode ConfigureCrystalReports(), ajoutez un bloc conditionnel Not IsPostBack.
Remarque
Vous avez créé la méthode ConfigureCrystalReports() dans la section Configuration d'un projet
[page 15] au début de ce tutoriel.
If Not IsPostBack Then
End If
if (!IsPostBack)
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
311
{
}
4.
Dans le bloc conditionnel, attribuez à la propriété DataSource du contrôle ListBox listCRVReport les
valeurs de l'énumération CeWebCRVReportOptions.
listCRVReport.DataSource = System.Enum.GetValues(GetType(CeWebCRVReportOptions))
listCRVReport.DataSource = System.Enum.GetValues(typeof(CeWebCRVReportOptions));
5.
Appelez la méthode DataBind() du contrôle ListBox listCRVReport pour lier les valeurs au contrôle.
listCRVReport.DataBind()
listCRVReport.DataBind();
6.
Attribuez ensuite à la propriété DataSource du contrôle ListBox listCRVToolbar les valeurs de
l'énumération CeWebCRVToolbarOptions.
listCRVToolbar.DataSource =
System.Enum.GetValues(GetType(CeWebCRVToolbarOptions))
listCRVToolbar.DataSource =
System.Enum.GetValues(typeof(CeWebCRVToolbarOptions));
7.
Appelez à présent la méthode DataBind() du contrôle ListBox listCRVToolbar pour lier les valeurs au
contrôle.
listCRVToolbar.DataBind()
listCRVToolbar.DataBind();
8.
En dehors du bloc conditionnel Not IsPostBack, liez le fichier Chart.rpt à la propriété ReportSource du
contrôle CrystalReportViewer.
Pour en savoir plus sur les exemples de rapports, voir Répertoire d'exemples de rapports [page 15].
myCrystalReportViewer.ReportSource = "C:\Program Files\Microsoft Visual Studio
9,0\Crystal Reports\Samples\fr\Reports\Feature Examples\Chart.rpt"
crystalReportViewer.ReportSource = "C:\\Program Files\\Microsoft Visual Studio
9.0\\Crystal Reports\\Samples\\fr\\Reports\\Feature Examples\\Chart.rpt";
312
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.1.5.4.4
Pour coder le contrôle Button de réaffichage pour
un site Web
Contexte
Vous pouvez à présent ajouter le code à l'événement de clic du contrôle Button. La méthode de clic doit définir
des valeurs booléennes pour les éléments du rapport et de la barre d'outils de la classe CrystalReportViewer.
Si un élément est sélectionné, la valeur booléenne est True et l'élément du rapport ou de la barre d'outils s'affiche.
Si aucune propriété n'est sélectionnée, la valeur booléenne est False et l'élément du rapport ou de la barre d'outils
ne s'affiche pas.
Procédure
1.
Ouvrez le Web Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Cliquez deux fois sur le contrôle Button de réaffichage.
La classe code-behind du rapport s'affiche et indique qu'une méthode d'événement redisplay_Click() a
été automatiquement générée.
4.
Dans la méthode d'événement redisplay_Click(), appelez la propriété Selected de chaque élément des
contrôles ListBox listCRVReport et listCRVToolbar.
La propriété Selected renvoie une valeur booléenne afin de définir les propriétés de la barre d'outils
CrystalReportViewer.
Remarque
Les éléments du rapport et de la barre d'outils CrystalReportViewer sont définis sur leurs valeurs
correspondantes dans les énumérations CeWebCRVReportOptions et CeWebCRVToolbarOptions. Les
valeurs de la classe enum renvoient une chaîne que vous devez convertir en nombre entier.
myCrystalReportViewer.HasToggleGroupTreeButton =
listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Group_Tree_Button)).S
elected
myCrystalReportViewer.HasExportButton =
listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Export_Button)).Selec
ted
myCrystalReportViewer.HasPrintButton =
listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Print_Button)).Select
ed
myCrystalReportViewer.HasViewList =
listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.View_List_Button)).Se
lected
myCrystalReportViewer.HasDrillUpButton =
listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Drill_Up_Button)).Sel
ected
myCrystalReportViewer.HasPageNavigationButtons =
listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Page_Navigation_Butto
n)).Selected
myCrystalReportViewer.HasGotoPageButton =
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
313
listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Go_to_Page_Button)).S
elected
myCrystalReportViewer.HasSearchButton =
listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Search_Button)).Selec
ted
myCrystalReportViewer.HasZoomFactorList =
listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Zoom_Button)).Selecte
d
myCrystalReportViewer.HasCrystalLogo =
listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Crystal_Logo)).Select
ed
myCrystalReportViewer.DisplayToolbar =
listCRVReport.Items(Convert.ToInt32(CeWebCRVReportOptions.Toolbar)).Selected
myCrystalReportViewer.DisplayGroupTree =
listCRVReport.Items(Convert.ToInt32(CeWebCRVReportOptions.Group_Tree)).Selected
myCrystalReportViewer.DisplayPage =
listCRVReport.Items(Convert.ToInt32(CeWebCRVReportOptions.Main_Page)).Selected
myCrystalReportViewer.SeparatePages =
listCRVReport.Items(Convert.ToInt32(CeWebCRVReportOptions.Enable_Separate_Pages))
.Selected
crystalReportViewer.HasToggleGroupTreeButton =
listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Group_Tree_Button)].S
elected;
crystalReportViewer.HasExportButton =
listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Export_Button)].Selec
ted;
crystalReportViewer.HasPrintButton =
listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Print_Button)].Select
ed;
crystalReportViewer.HasViewList =
listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.View_List_Button)].Se
lected;
crystalReportViewer.HasDrillUpButton =
listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Drill_Up_Button)].Sel
ected;
crystalReportViewer.HasPageNavigationButtons =
listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Page_Navigation_Butto
n)].Selected;
crystalReportViewer.HasGotoPageButton =
listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Go_to_Page_Button)].S
elected;
crystalReportViewer.HasSearchButton =
listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Search_Button)].Selec
ted;
crystalReportViewer.HasZoomFactorList =
listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Zoom_Button)].Selecte
d;
crystalReportViewer.HasCrystalLogo =
listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Crystal_Logo)].Select
ed;
crystalReportViewer.DisplayToolbar =
listCRVReport.Items[Convert.ToInt32(CeWebCRVReportOptions.Toolbar)].Selected;
crystalReportViewer.DisplayGroupTree =
listCRVReport.Items[Convert.ToInt32(CeWebCRVReportOptions.Group_Tree)].Selected;
crystalReportViewer.DisplayPage =
listCRVReport.Items[Convert.ToInt32(CeWebCRVReportOptions.Main_Page)].Selected;
crystalReportViewer.SeparatePages =
listCRVReport.Items[Convert.ToInt32(CeWebCRVReportOptions.Enable_Separate_Pages)]
.Selected;
314
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.1.5.4.5
Pour vérifier le contrôle Button de réaffichage
Contexte
Vous êtes maintenant prêt à générer et exécuter le projet afin de personnaliser la barre d'outils
CrystalReportViewer.
Procédure
1.
Dans le menu Générer, cliquez sur Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Les contrôles ListBox listCRVReport et listCRVToolbar affichent une liste complète des options du
rapport et de la barre d'outils CrystalReportViewer.
4.
Dans la liste des options de la barre d'outils, sélectionnez "Page_Navigation_Button", "Print_Button" et
"Export_Button".
5.
Dans la liste des options du rapport, sélectionnez "Toolbar", "Group_Tree" et "Main_Page".
6.
Cliquez sur Réafficher le rapport.
La page se recharge et affiche un contrôle CrystalReportViewer avec une barre d'outils, une arborescence
des groupes et une page principale visibles. Dans la barre d'outils, seuls les boutons Navigation, Imprimer et
Exporter sont visibles.
7.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.1.5.5
Windows
Configuration des contrôles ListBox pour un projet
Cette section explique comment configurer les contrôles ListBox d'un projet Windows. Si vous créez un site Web,
voir Configuration des contrôles ListBox pour un site Web [page 309].
Vous allez maintenant pouvoir créer le gestionnaire d'événements de clic du contrôle Button, puis ajouter du code
à ce gestionnaire d'événements. Le gestionnaire d'événements définit différentes valeurs booléennes pour les
propriétés de la barre d'outils de la classe CrystalReportViewer en fonction des sélections effectuées par
l'utilisateur dans le contrôle ListBox.
Avant de créer ce gestionnaire d'événements, vous devez créer deux énumérations : CeWinCRVReportOptions
et CeWinCRVToolbarOptions.
Ces énumérations fournissent une liste d'éléments du rapport et d'éléments de la barre d'outils pouvant être
sélectionnés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
315
1.5.1.5.5.1
Pour créer l'énumération
CeWinCRVReportOptions
Procédure
1.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du projet affiché en gras,
pointez sur Ajouter, puis cliquez sur Classe.
2.
Dans le champ Nom de la boîte de dialogue Ajouter un nouvel élément, saisissez CeWinCRVReportOptions,
puis cliquez sur Ajouter.
Remarque
Dans Visual Studio, vous pouvez être invité à placer cette classe dans un répertoire App_Code. Cliquez sur
le bouton Oui.
3.
Dans la signature de classe, remplacez le mot class par "enum" pour convertir la classe en énumération.
Remarque
Dans Visual Basic, n'oubliez pas de remplacer les signatures d'ouverture et de fermeture de la classe par
enum.
4.
Les énumérations ne comportant aucun constructeur, supprimez la méthode constructeur par défaut qui est
fournie dans la version C# du code.
5.
Dans l'énumération, saisissez les valeurs suivantes :
Toolbar
Group_Tree
Status_Bar
Toolbar,
Group_Tree,
Status_Bar
6.
Dans le menu Fichier, cliquez sur Enregistrer tout.
1.5.1.5.5.2
Pour créer l'énumération
CeWinCRVToolbarOptions
Procédure
1.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du projet affiché en gras,
pointez sur Ajouter, puis cliquez sur Classe.
2.
Dans le champ Nom de la boîte de dialogue Ajouter un nouvel élément, saisissez "CeWinCRVToolbarOptions",
puis cliquez sur Ajouter.
316
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Remarque
Vous pouvez être invité à placer cette classe dans un répertoire App_Code. Cliquez sur le bouton Oui.
3.
Dans la signature de classe, remplacez le mot class par "enum" pour convertir la classe en énumération.
Remarque
Dans Visual Basic, n'oubliez pas de remplacer les signatures d'ouverture et de fermeture de la classe par
enum.
4.
Les énumérations ne comportant aucun constructeur, supprimez la méthode constructeur par défaut qui est
fournie dans la version C# du code.
5.
Dans l'énumération, saisissez les valeurs suivantes :
Page_Navigation_Button
Go_to_Page_Button
Close_View_Button
Print_Button
Refresh_Button
Export_Button
Group_Tree_Button
Zoom_Button
Search_Button
Page_Navigation_Button,
Go_to_Page_Button,
Close_View_Button,
Print_Button,
Refresh_Button,
Export_Button,
Group_Tree_Button,
Zoom_Button,
Search_Button
6.
Dans le menu Fichier, cliquez sur Enregistrer tout.
1.5.1.5.5.3
Pour remplir les contrôles ListBox à partir des
énumérations
Contexte
Vous remplissez à présent les contrôles ListBox avec les valeurs d'énumération qui représentent les propriétés
disponibles pour la barre d'outils CrystalReportViewer.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
317
Procédure
1.
Ouvrez le Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Dans la méthode ConfigureCrystalReports(), attribuez à la propriété DataSource du contrôle ListBox
listCRVReport les valeurs de l'énumération CeWinCRVReportOptions.
Remarque
Vous avez créé la méthode ConfigureCrystalReports() dans la section Configuration d'un projet
[page 15] au début de ce tutoriel.
listCRVReport.DataSource =
System.Enum.GetValues(GetType(CeWinCRVReportOptions))
listCRVReport.DataSource =
System.Enum.GetValues(typeof(CeWinCRVReportOptions));
4.
Attribuez à la propriété DataSource du contrôle ListBox listCRVToolbar les valeurs de l'énumération
CeWinCRVToolbarOptions.
listCRVToolbar.DataSource =
System.Enum.GetValues(GetType(CeWinCRVToolbarOptions))
listCRVToolbar.DataSource =
System.Enum.GetValues(typeof(CeWinCRVToolbarOptions));
5.
Liez le fichier Chart.rpt à la propriété ReportSource du contrôle CrystalReportViewercontrol.
Pour en savoir plus sur les exemples de rapports, voir Répertoire d'exemples de rapports [page 15].
myCrystalReportViewer.ReportSource = "C:\Program Files\Microsoft Visual Studio
9,0\Crystal Reports\Samples\fr\Reports\Feature Examples\Chart.rpt"
crystalReportViewer.ReportSource = "C:\\Program Files\\Microsoft Visual Studio
9.0\\Crystal Reports\\Samples\\fr\\Reports\\Feature Examples\\Chart.rpt";
1.5.1.5.5.4
Pour coder le contrôle Button de réaffichage pour
un projet Windows
Contexte
Vous pouvez à présent ajouter le code à l'événement de clic du contrôle Button. La méthode de clic doit définir
des valeurs booléennes pour les éléments du rapport et de la barre d'outils de la classe CrystalReportViewer.
318
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Si un élément est sélectionné, la valeur booléenne est True et l'élément du rapport ou de la barre d'outils s'affiche.
Si aucune propriété n'est sélectionnée, la valeur booléenne est False et l'élément du rapport ou de la barre
d'outils ne s'affiche pas.
Procédure
1.
Ouvrez le Windows Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Cliquez deux fois sur le contrôle Button de réaffichage.
La classe code-behind du rapport s'affiche et indique qu'une méthode d'événement redisplay_Click() a
été automatiquement générée.
4.
Dans la méthode d'événement redisplay_Click(), appelez la méthode GetSelected(), puis transmettez
chaque élément du contrôle ListBox.
La méthode GetSelected() renvoie une valeur booléenne afin de définir les propriétés du rapport et de la
barre d'outils CrystalReportViewer.
Remarque
Les éléments du rapport et de la barre d'outils CrystalReportViewer sont définis sur leurs valeurs
correspondantes dans les énumérations CeWinCRVReportOptions et CeWinCRVToolbarOptions.
myCrystalReportViewer.ShowPageNavigateButtons =
listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Page_Navigation_Button)
myCrystalReportViewer.ShowGotoPageButton =
listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Go_to_Page_Button)
myCrystalReportViewer.ShowCloseButton = listCRVToolbar.
GetSelected(CeWinCRVToolbarOptions.Close_View_Button)
myCrystalReportViewer.ShowPrintButton =
listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Print_Button)
myCrystalReportViewer.ShowRefreshButton =
listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Refresh_Button)
myCrystalReportViewer.ShowExportButton =
listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Export_Button)
myCrystalReportViewer.ShowGroupTreeButton =
listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Group_Tree_Button)
myCrystalReportViewer.ShowZoomButton =
listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Zoom_Button)
myCrystalReportViewer.ShowTextSearchButton =
listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Search_Button)
myCrystalReportViewer.DisplayToolbar =
listCRVReport.GetSelected(CeWinCRVReportOptions.Toolbar)
myCrystalReportViewer.DisplayGroupTree =
listCRVReport.GetSelected(CeWinCRVReportOptions.Group_Tree)
myCrystalReportViewer.DisplayStatusBar =
listCRVReport.GetSelected(CeWinCRVReportOptions.Status_Bar)
crystalReportViewer.ShowPageNavigateButtons =
listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Page_Navigation
_Button));
crystalReportViewer.ShowGotoPageButton =
listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Go_to_Page_Butt
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
319
on));
crystalReportViewer.ShowCloseButton = listCRVToolbar.
GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Close_View_Button));
crystalReportViewer.ShowPrintButton =
listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Print_Button));
crystalReportViewer.ShowRefreshButton =
listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Refresh_Button)
);
crystalReportViewer.ShowExportButton =
listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Export_Button))
;
crystalReportViewer.ShowGroupTreeButton =
listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Group_Tree_Butt
on));
crystalReportViewer.ShowZoomButton =
listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Zoom_Button));
crystalReportViewer.ShowTextSearchButton =
listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Search_Button))
;
crystalReportViewer.DisplayToolbar =
listCRVReport.GetSelected(Convert.ToInt32(CeWinCRVReportOptions.Toolbar));
crystalReportViewer.DisplayGroupTree =
listCRVReport.GetSelected(Convert.ToInt32(CeWinCRVReportOptions.Group_Tree));
crystalReportViewer.DisplayStatusBar =
listCRVReport.GetSelected(Convert.ToInt32(CeWinCRVReportOptions.Status_Bar));
1.5.1.5.5.5
Pour vérifier le contrôle Button de réaffichage
Contexte
Vous êtes maintenant prêt à générer et exécuter le projet afin de personnaliser la barre d'outils
CrystalReportViewer.
Procédure
1.
Dans le menu Générer, cliquez sur Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Les contrôles ListBox listCRVReportet listCRVToolbar affichent une liste complète des options de
CrystalReportViewer rapport et barre d'outils.
4.
Dans la liste des options de la barre d'outils, sélectionnez "Page_Navigation_Button", "Print_Button" et
"Export_Button".
5.
Dans la liste des options du rapport, sélectionnez "Toolbar", "Group_Tree" et "Main_Page".
6.
Cliquez sur Réafficher le rapport.
La page se recharge et affiche un contrôle CrystalReportViewer avec une barre d'outils, une arborescence
des groupes et une page principale visibles. Dans la barre d'outils, seuls les boutons Navigation, Imprimer et
Exporter sont visibles.
320
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
7.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.1.5.6
Modification de la couleur d'arrière-plan du rapport
Dans cette section, vous allez apprendre à modifier la couleur d'arrière-plan du rapport.
Vous allez commencer par ajouter un contrôle DropDownList pour sélectionner la couleur d'arrière-plan.
1.5.1.5.6.1
Pour ajouter des contrôles pour modifier la
couleur d'arrière-plan
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Dans la Boîte à outils, faites glisser un contrôle Label vers la seconde ligne de la première colonne du tableau.
4.
Sélectionnez le contrôle Label, puis dans la fenêtre Propriétés, attribuez à la propriété Text la valeur
Sélectionnez la couleur d'arrière-plan.
5.
Dans la Boîte à outils, faites glisser un contrôle DropDownList (pour les sites Web) ou ComboBox (pour les
projets Windows) vers la seconde ligne de la deuxième colonne du tableau.
6.
Sélectionnez le contrôle DropDownList/ComboBox, puis dans la fenêtre Propriétés, attribuez à ID/Name la
valeur "selectBackColor".
1.5.1.5.6.2
Pour définir les valeurs par défaut des contrôles
Contexte
Vous devez à présent ajouter du code à la méthode ConfigureCrystalReports() afin de définir les valeurs par
défaut de la liste des couleurs d'arrière-plan et des cases à cocher des composants du rapport.
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
Dans la méthode ConfigureCrystalReports(), vous ajoutez ensuite du code pour définir les valeurs par
défaut des contrôles.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
321
Remarque
Si vous créez un site Web, placez ces lignes de code dans le bloc conditionnel Not IsPostBack. Si vous
créez un projet Windows, placez ces lignes de code dans la zone principale de la méthode
ConfigureCrystalReports().
3.
Affectez l'énumération KnownColor à la propriété DataSource du contrôle DropDownList
selectBackColor.
selectBackColor.DataSource = System.Enum.GetValues(GetType(KnownColor))
selectBackColor.DataSource = System.Enum.GetValues(typeof(KnownColor));
4.
Dans un site Web, liez la source de données au contrôle DropDownList selectBackColor.
selectBackColor.DataBind()
selectBackColor.DataBind();
1.5.1.5.6.3
Pour affecter la sélection de couleur d'arrièreplan dans un site Web
Contexte
Ajoutez ensuite du code à l'événement de clic Button pour réafficher le rapport en fonction de la sélection
DropDownList selectBackColor.
Ce code est différent pour un site Web et un projet Windows. Sélectionnez la procédure appropriée à votre cas cidessous.
Procédure
1.
Ouvrez le Web Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Au-dessus de la signature de classe, ajoutez une déclaration "Imports" [Visual Basic] ou "using"
[C#] au début de la classe pour l'espace de noms System.Drawing (si cet espace de noms n'a pas déjà été
déclaré).
Imports System.Drawing
322
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
using System.Drawing;
4.
Dans le gestionnaire d'événements redisplay_Click(), ajoutez le code suivant : dans le contrôle
DropDownList selectBackColor, extrayez l'élément sélectionné sous la forme d'une chaîne, puis transmettezle à la méthode FromName() de la classe Color. Affectez la valeur Color à la propriété BackColor du contrôle
CrystalReportViewer.
myCrystalReportViewer.BackColor =
Color.FromName(selectBackColor.SelectedItem.Text)
crystalReportViewer.BackColor =
Color.FromName(selectBackColor.SelectedItem.Text);
1.5.1.5.6.4
Pour affecter la sélection de couleur d'arrièreplan dans un projet Windows
Contexte
Vous êtes maintenant prêt à tester le bouton Réafficher le rapport. Passez à la section en question, ci-dessous.
Procédure
1.
Ouvrez le Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Au-dessus de la signature de classe, ajoutez une déclaration "Imports" [Visual Basic] ou "using"
[C#] au début de la classe pour l'espace de noms System.Drawing (si cet espace de noms n'a pas déjà été
déclaré).
Imports System.Drawing
using System.Drawing;
4.
Dans le gestionnaire d'événements redisplay_Click(), ajoutez du code pour extraire l'élément
sélectionné du contrôle ComboBox selectBackColor et convertissez-le en une instance KnownColor.
Dim mySelectedKnownColor As KnownColor = CType(selectBackColor.SelectedItem,
KnownColor)
KnownColor selectedKnownColor = (KnownColor)selectBackColor.SelectedItem;
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
323
5.
Créez un bloc conditionnel qui vérifie que la couleur d'arrière-plan sélectionnée n'est pas transparente.
If Not mySelectedKnownColor = KnownColor.Transparent Then
End If
if (selectedKnownColor != KnownColor.Transparent)
{
}
6.
Dans le bloc If, transmettez l'instance KnownColor à la méthode FromKnownName() de la classe
System.Drawing.Color. Affectez la valeur Color à la propriété BackColor du contrôle CrystalReportViewer.
myCrystalReportViewer.BackColor =
System.Drawing.Color.FromKnownColor(mySelectedKnownColor)
crystalReportViewer.BackColor =
System.Drawing.Color.FromKnownColor(selectedKnownColor);
1.5.1.5.6.5
Pour vérifier le contrôle Button de réaffichage
Contexte
Vous êtes maintenant prêt à tester le bouton Réafficher le rapport.
Procédure
1.
Dans le menu Générer, cliquez sur Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Le contrôle DropDownList/ComboBox s'affiche ainsi que les contrôles ListBox et Button que vous avez
ajoutés à la procédure précédente.
4.
Dans le contrôle DropDownList selectBackColor, sélectionnez la couleur bleue.
Remarque
N'oubliez pas de sélectionner les éléments de rapport, plus particulièrement Main_Page, pour qu'ils soient
visibles.
5.
Cliquez sur Réafficher le rapport.
La page se recharge pour afficher le rapport avec un arrière-plan bleu.
6.
324
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.1.5.7
rapport
Ajout d'un code pour sélectionner une page de
Dans cette section, vous allez apprendre à coder l'option "Aller à la page" de la barre d'outils
CrystalReportViewer.
La barre d'outils CrystalReportViewer comporte des boutons de navigation et une zone de texte permettant
de sélectionner les pages du rapport. Vous pouvez utiliser les méthodes suivantes de la classe
CrystalReportViewer pour coder manuellement les sélections de page :
●
ShowFirstPage()
●
ShowLastPage()
●
ShowNextPage()
●
ShowNthPage(int PageNumber)
●
ShowPreviousPage()
Lorsque vous appelez l'une de ces méthodes, la page sélectionnée s'affiche pour le rapport en cours.
1.5.1.5.7.1
Pour ajouter des contrôles TextBox et Button à
l'option "Aller à la page"
Procédure
1.
Ouvrez le Web Form ou le Windows Form en mode Design.
2.
Dans la Boîte à outils, faites glisser un contrôle TextBox vers la quatrième ligne de la première colonne du
tableau.
3.
Sélectionnez le contrôle TextBox, puis effectuez les opérations suivantes dans la fenêtre Propriétés :
a) Attribuez à ID (ou Name) la valeur "pageNumber".
b) Laissez la propriété Text vide.
4.
Dans la Boîte à outils, faites glisser un contrôle Button vers la quatrième ligne de la deuxième colonne du
tableau.
5.
Sélectionnez le contrôle Button, puis effectuez les opérations suivantes dans la fenêtre Propriétés :
a) Attribuez à ID (ou Name) la valeur "goToPage".
b) Attribuez à la propriété Text la valeur "Aller à la page".
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
325
1.5.1.5.7.2
Pour coder le gestionnaire d'événements Click()
pour le contrôle Button
Procédure
1.
Cliquez deux fois sur le contrôle Button Aller à la page.
La classe code-behind du rapport s'affiche et indique qu'un gestionnaire d'événements goToPage_Click() a
été automatiquement généré.
2.
Convertissez le texte saisi dans le contrôle TextBox en un nombre entier, puis transmettez la valeur à la
méthode ShowNthPage() du contrôle CrystalReportViewer.
Remarque
Vous n'avez pas validé l'entrée d'un nombre entier dans le contrôle TextBox. Dans des conditions réelles,
vous ajouteriez un contrôle de validation configuré par rapport au contrôle TextBox.
myCrystalReportViewer.ShowNthPage(Convert.ToInt32(pageNumber.Text))
crystalReportViewer.ShowNthPage(Convert.ToInt32(pageNumber.Text));
1.5.1.5.7.3
Pour vérifier le contrôle Button goToPage
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport Chart et tous les contrôles que vous avez ajoutés s'affichent.
4.
Saisissez 3 dans le contrôle pageNumber TextBox, puis cliquez sur Aller à la page.
La page se recharge et affiche la page 3 du rapport.
5.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.1.5.8
Modification du facteur de zoom
Par défaut, la barre d'outils CrystalReportViewer permet de sélectionner un facteur de zoom compris entre
25 % et 400 % par incréments fixes de 25 %, 50 % ou 100 %. Dans cette section, vous allez ajouter un code
permettant de sélectionner n'importe quel facteur de zoom.
326
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Vous avez besoin d'un contrôle TextBox dans lequel vous saisissez le facteur de zoom souhaité et d'un contrôle
Button afin de recharger la page.
1.5.1.5.8.1
Pour ajouter des contrôles TextBox et Button à
l'option Zoom
Procédure
1.
Ouvrez le Web Form ou le Windows Form en mode Design.
2.
Dans la Boîte à outils, faites glisser un contrôle TextBox vers la quatrième ligne de la troisième colonne du
tableau.
3.
Sélectionnez le contrôle TextBox, puis effectuez les opérations suivantes dans la fenêtre Propriétés :
a) Attribuez à ID (ou Name) la valeur "zoomFactor".
b) Laissez la propriété Text vide.
4.
Dans la Boîte à outils, faites glisser un contrôle Button vers la quatrième ligne de la quatrième colonne du
tableau.
5.
Sélectionnez le contrôle Button, puis effectuez les opérations suivantes dans la fenêtre Propriétés :
a) Attribuez à ID (ou Name) la valeur "updateZoomFactor".
b) Attribuez à Text la valeur "% Zoom".
1.5.1.5.8.2
Pour coder le gestionnaire d'événements Click()
pour le contrôle Button
Procédure
1.
Cliquez deux fois sur le contrôle Button updateZoomFactor.
La classe code-behind du rapport s'affiche et indique qu'un gestionnaire d'événements
updateZoomFactor_Click() a été automatiquement généré.
2.
Convertissez le texte saisi dans le contrôle TextBox en un nombre entier, puis transmettez la valeur à la
méthode Zoom() du contrôle CrystalReportViewer.
Remarque
Vous n'avez pas validé l'entrée d'un nombre entier dans le contrôle TextBox. Dans des conditions réelles,
vous ajouteriez un contrôle de validation configuré par rapport au contrôle TextBox.
myCrystalReportViewer.Zoom(Convert.ToInt32(zoomFactor.Text))
crystalReportViewer.Zoom(Convert.ToInt32(zoomFactor.Text));
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
327
1.5.1.5.8.3
Pour vérifier le contrôle Button
updateZoomFactor
Procédure
1.
Dans le menu Générer, cliquez sur Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport Chart et tous les contrôles que vous avez ajoutés s'affichent.
4.
Saisissez "38" dans la zone de texte zoomFactor, puis cliquez sur Zoom.
La page se recharge et affiche la page en cours à une taille 38 % inférieure à sa taille d'origine.
5.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.1.5.9
Recherche dans le rapport
Dans cette section, vous allez apprendre à rechercher un texte dans un rapport Crystal lié au contrôle
CrystalReportViewer.
Vous avez besoin d'un contrôle TextBox pour y saisir la chaîne recherchée, d'un contrôle Button pour lancer la
recherche dans le rapport et d'un contrôle Label pour être informé de la réussite ou de l'échec de la recherche.
1.5.1.5.9.1
Pour ajouter des contrôles TextBox, Button et
Label à l'option Rechercher
Procédure
1.
Ouvrez le Web Form ou le Windows Form en mode Design.
2.
Dans la Boîte à outils, faites glisser un contrôle TextBox vers la cinquième ligne de la première colonne du
tableau.
3.
Sélectionnez le contrôle TextBox, puis effectuez les opérations suivantes dans la fenêtre Propriétés :
a) Attribuez à ID (ou Name) la valeur "searchText".
b) Laissez la propriété Text vide.
4.
Dans la Boîte à outils, faites glisser un contrôle Button vers la cinquième ligne de la deuxième colonne du
tableau.
5.
Sélectionnez le contrôle Button, puis effectuez les opérations suivantes dans la fenêtre Propriétés :
a) Attribuez à ID (ou Name) la valeur "search".
b) Attribuez à Text la valeur "Rechercher le texte".
6.
328
Dans la Boîte à outils, faites glisser un contrôle Label vers la cinquième ligne de la troisième colonne du
tableau.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
a) Attribuez à ID (ou Name) la valeur "message".
b) Laissez la propriété Text vide.
c) Attribuez à ForeColor la valeur Red (couleur rouge).
7.
Créez la classe MessageConstants pour stocker les réponses standard sous forme de constantes chaîne pour
la recherche.
1.5.1.5.9.2
Pour coder le gestionnaire d'événements
search_Click() d'un site Web
Contexte
Vous devez ensuite appeler la méthode SearchAndHighlightText() dans le contrôle Button de recherche.
Remarque
Le comportement de la méthode SearchAndHighlightText() est différent selon que vous créez un site
Web ou un projet Windows.
Etant donné que le comportement de la méthode est différent pour un site Web et pour un projet Windows, suivez
la procédure adaptée à votre site Web ou votre projet Windows.
Procédure
1.
Cliquez deux fois sur le contrôle Button de recherche search.
La classe code-behind du rapport s'affiche et indique qu'un gestionnaire d'événements search_Click() a
été automatiquement généré.
2.
Extrayez le texte saisi dans le contrôle TextBox, puis transmettez la valeur à la méthode
SearchAndHighlightText() du contrôle CrystalReportViewer. Affectez l'appel de méthode à une variable
booléenne.
Remarque
Pour que la classe SearchDirection soit accessible, vous devez inclure une instruction "Imports"
[Visual Basic] ou "using" [C#] au début de la classe code-behind pour l'espace de noms
CrystalDecisions.Shared. (Vous avez ajouté cette déclaration dans la procédure Configuration d'un projet
[page 15].)
Dim mySearchResult As Boolean =
myCrystalReportViewer.SearchAndHighlightText(searchText.Text,
SearchDirection.Forward)
bool searchResult = crystalReportViewer.SearchAndHighlightText(searchText.Text,
SearchDirection.Forward);
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
329
3.
Créez un bloc conditionnel qui vérifie si la recherche a été fructueuse.
If Not mySearchResult Then
Else
End If
if(!searchResult)
{
}
else
{
}
4.
Dans le bloc If, affectez la constante MessageConstants.SUCCESS à la propriété Text du contrôle Label
message.
message.Text = MessageConstants.SUCCESS
message.Text = MessageConstants.SUCCESS;
5.
Dans le bloc Else, affectez la constante MessageConstants.FAILURE à la propriété Text du contrôle Label
message.
message.Text = MessageConstants.FAILURE
message.Text = MessageConstants.FAILURE;
1.5.1.5.9.3
Pour coder le gestionnaire d'événements
search_Click() d'un projet Windows
Contexte
Ignorez la procédure suivante pour les projets Windows et passez directement à la procédure de vérification qui
suit.
Procédure
1.
Cliquez deux fois sur le contrôle Button de recherche search.
La classe code-behind du rapport s'affiche et indique qu'un gestionnaire d'événements search_Click() a
été automatiquement généré.
330
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
2.
Extrayez le texte saisi dans le contrôle TextBox, puis transmettez la valeur à la méthode
SearchAndHighlightText() du contrôle CrystalReportViewer. Affectez l'appel de méthode à une variable
booléenne.
Dim mySearchResult As Boolean =
myCrystalReportViewer.SearchAndHighlightText(searchText.Text)
bool searchResult = crystalReportViewer.SearchAndHighlightText(searchText.Text);
3.
Créez un bloc conditionnel qui vérifie si la recherche a été fructueuse.
If mySearchResult Then
Else
End If
if(searchResult)
{
}
else
{
}
4.
Dans le bloc If, affectez la constante MessageConstants.SUCCESS à la propriété Text du contrôle Label
message.
message.Text = MessageConstants.SUCCESS
message.Text = MessageConstants.SUCCESS;
5.
Dans le bloc Else, affectez la constante MessageConstants.FAILURE à la propriété Text du contrôle
message Label.
message.Text = MessageConstants.FAILURE
message.Text = MessageConstants.FAILURE;
1.5.1.5.9.4
Pour vérifier le contrôle Button de recherche
Procédure
1.
Dans le menu Générer, cliquez sur Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
331
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport Chart et tous les contrôles que vous avez ajoutés s'affichent.
4.
Saisissez China dans la zone de texte searchText, puis cliquez sur Rechercher.
La page se recharge et affiche le résultat de la recherche ainsi qu'un message de réussite.
5.
Saisissez hello dans la zone de texte searchText, puis cliquez sur Rechercher.
La page se recharge et affiche un message d'échec.
6.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
Résultats
Les autres options de personnalisation sont disponibles uniquement pour la version Web du contrôle
CrystalReportViewer. En conséquence, si vous développez un site Web, effectuez la procédure Ajout d'une
bordure au rapport pour un site Web [page 332].
Si vous développez un projet Windows, vous avez maintenant terminé le tutoriel.
1.5.1.5.10
Ajout d'une bordure au rapport pour un site Web
Dans cette section, vous allez apprendre à ajouter une bordure personnalisée au rapport Crystal pour un site Web.
Pour un projet Windows, les propriétés de largeur, de style et de couleur de la bordure ne sont pas disponibles.
Les styles de bordure sont répertoriés dans l'énumération BorderStyle. Les couleurs sont répertoriées dans
l'énumération KnownColor. Cependant, la propriété BorderColor du contrôle CrystalReportViewer extrait les
valeurs de la classe Color. Vous devez par conséquent convertir la valeur KnownColor en valeur Color.
Pour commencer, vous ajoutez les contrôles nécessaires au Web Form. Vous avez besoin d'un contrôle TextBox,
de deux contrôles DropDownList et d'un contrôle Button pour dessiner la bordure.
1.5.1.5.10.1 Pour ajouter les contrôles afin de définir la
largeur, le style et la couleur de la bordure
Procédure
1.
Ouvrez le Web Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Dans la boîte à outils, faites glisser un contrôle Label vers la sixième ligne de la première colonne du tableau.
4.
Sélectionnez le contrôle Label, puis dans la fenêtre Propriétés, attribuez à la propriété Text la valeur "Largeur
de la bordure".
5.
Dans la boîte à outils, faites glisser un contrôle TextBox dans la même cellule du tableau que le contrôle Label.
332
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
6.
Sélectionnez le contrôle TextBox, puis dans la fenêtre Propriétés, attribuez à ID (ou Name) la valeur
"borderWidth".
7.
Dans la boîte à outils, faites glisser un second contrôle Label vers la sixième ligne de la deuxième colonne du
tableau.
8.
Sélectionnez le contrôle Label, puis dans la fenêtre Propriétés, attribuez à Text la valeur "Style de bordure".
9.
Dans la boîte à outils, faites glisser un contrôle DropDownList dans la même cellule du tableau que le contrôle
Label.
10. Sélectionnez le contrôle DropDownList, puis dans la fenêtre Propriétés, attribuez à ID (ou Name) la valeur
"selectBorderStyle".
11. Dans la boîte à outils, faites glisser un troisième contrôle Label vers la sixième ligne de la troisième colonne du
tableau.
12. Sélectionnez le contrôle Label, puis dans la fenêtre Propriétés, attribuez à Textla valeur "Couleur de la
bordure".
13. Dans la boîte à outils, faites glisser un contrôle DropDownList dans la même cellule du tableau que le contrôle
Label.
14. Sélectionnez le contrôle DropDownList, puis dans la fenêtre Propriétés, attribuez à ID (ou Name) la valeur
"selectBorderColor".
15. Dans la boîte à outils, faites glisser un contrôle Button vers la sixième ligne de la quatrième colonne du
tableau.
16. Sélectionnez le contrôle Button, puis effectuez les opérations suivantes dans la fenêtre Propriétés :
a) Attribuez à ID (ou Name) la valeur "drawBorder".
b) Attribuez à la propriété Text la valeur "Dessiner une bordure".
1.5.1.5.10.2
Pour remplir les contrôles DropDownList
Contexte
Vous devez à présent remplir les contrôles DropDownList avec les styles ou les couleurs de bordure disponibles
pour le contrôle CrystalReportViewer. Les contrôles DropDownList sont remplis dans la méthode
ConfigureCrystalReports().
Pour un site Web, les styles de bordure sont stockés dans l'énumération
System.Web.UI.WebControls.BorderStyle. Les couleurs de bordure sont extraites à partir de l'énumération
System.Drawing.KnownColor.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
333
Procédure
1.
Au-dessus de la signature de classe, ajoutez une déclaration "Imports" [Visual Basic] ou "using"
[C#] au début de la classe de l'espace de noms System.Web.UI.WebControls et System.Drawing (si cet
espace de noms n'a pas déjà été déclaré).
Imports System.Web.UI.WebControls
Imports System.Drawing
using System.Web.UI.WebControls;
using System.Drawing;
2.
Dans le bloc conditionnel Not IsPostBack de la méthode ConfigureCrystalReports(), affectez
l'énumération BorderStyle à la propriété DataSource du contrôle DropDownList selectBorderStyle.
selectBorderStyle.DataSource = System.Enum.GetValues(GetType(BorderStyle))
selectBorderStyle.DataSource = System.Enum.GetValues(typeof(BorderStyle));
3.
Liez la source de données au contrôle DropDownList selectBorderStyle.
selectBorderStyle.DataBind()
selectBorderStyle.DataBind();
4.
Toujours dans le bloc conditionnel Not IsPostBack, affectez l'énumération BorderStyle à la propriété
DataSource du contrôle DropDownList selectBorderStyle.
selectBorderColor.DataSource =
System.Enum.GetValues(GetType(KnownColor))
selectBorderColor.DataSource =
System.Enum.GetValues(typeof(KnownColor));
5.
Liez la source de données au contrôle DropDownList selectBorderColor.
selectBorderColor.DataBind()
selectBorderColor.DataBind();
334
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.1.5.10.3
bordure
Pour coder le contrôle Button Dessiner une
Contexte
Ensuite, vous allez affecter les valeurs aux propriétés BorderWidth, BorderStyle et BorderColor du contrôle
CrystalReportViewer.
Procédure
1.
Ouvrez le Web Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Cliquez deux fois sur le contrôle Button Dessiner une bordure.
La classe code-behind du rapport s'affiche et indique qu'un gestionnaire d'événements
drawBorder_Click() a été automatiquement généré.
4.
Dans le gestionnaire d'événements drawBorder_Click(), affectez le texte saisi dans le contrôle TextBox
borderWidth à la propriété BorderWidth du contrôle CrystalReportViewer.
Remarque
Vous n'avez pas validé l'entrée d'un nombre entier dans le contrôle TextBox. Dans des conditions réelles,
vous ajouteriez un contrôle de validation configuré par rapport au contrôle TextBox.
myCrystalReportViewer.BorderWidth =
Unit.Parse(borderWidth.Text.ToString())
crystalReportViewer.BorderWidth =
Convert.ToInt32(borderWidth.Text);
5.
Dans le contrôle DropDownList selectBorderStyle, extrayez l'index sélectionné, puis convertissez-le en
une valeur BorderStyle. Affectez la valeur BorderStyle à la propriété BorderStyle du contrôle
CrystalReportViewer.
myCrystalReportViewer.BorderStyle = CType(selectBorderStyle.SelectedIndex,
BorderStyle)
crystalReportViewer.BorderStyle = (BorderStyle)selectBorderStyle.SelectedIndex;
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
335
6.
Dans le contrôle DropDownList selectBorderColor, extrayez l'élément sélectionné sous la forme d'une chaîne,
puis transmettez-le à la méthode FromName() de la classe Color. Affectez la valeur Color à la propriété
BorderColor du contrôle CrystalReportViewer.
myCrystalReportViewer.BorderColor =
Color.FromName(selectBorderColor.SelectedItem.Text)
crystalReportViewer.BorderColor =
Color.FromName(selectBorderColor.SelectedItem.Text);
1.5.1.5.10.4
Crystal
Pour dessiner une bordure autour du rapport
Procédure
1.
Dans le menu Générer, cliquez sur Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
4.
Pour la largeur de la bordure, saisissez10.
5.
Pour le style de la bordure, sélectionnez Double.
6.
Pour la couleur de la bordure, sélectionnez SteelBlue.
7.
Cliquez sur le bouton Dessiner une bordure.
La page se recharge et affiche une bordure autour du rapport Crystal.
8.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.1.5.11
site Web
Configuration de la persistance Session pour un
Dans cette section, vous allez apprendre à configurer la persistance Session pour les événements de clic.
Lorsqu'une page Web est rechargée lors d'un événement de clic, les modifications apportées au modèle d'objet
CrystalReportViewer sont perdues.
336
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.1.5.11.1
Web
Pour montrer le manque de persistance d'un site
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
4.
Dans le contrôle DropDownList selectBackColor, sélectionnez la couleur bleue.
5.
Cliquez sur Réafficher le rapport.
La page se recharge pour afficher le rapport sans aucune barre d'outils, avec un arrière-plan bleu.
6.
Pour la largeur de la bordure, saisissez "10".
7.
Pour le style de la bordure, sélectionnez "Double".
8.
Pour la couleur de la bordure, sélectionnez "SteelBlue".
9.
Cliquez sur Dessiner Bordure.
La page se recharge pour afficher une bordure autour du rapport Crystal et la couleur bleue de l'arrière-plan
disparaît.
10. Saisissez "3" dans le contrôle TextBox pageNumber, puis cliquez sur Aller à la page.
La page se recharge pour afficher la page 3 et la bordure du rapport n'est plus visible.
11. Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.1.5.11.2
Pour ajouter un code d'affectation Session au
gestionnaire d'événements drawBorder_Click()
Contexte
Vous devez ajouter un code de persistance à votre application afin que les modifications apportées au modèle
d'objet CrystalReportViewer soient rendues persistantes lorsque les pages Web sont rechargées.
Pour commencer, vous ajoutez un code de persistance pour les valeurs de bordure au gestionnaire d'événements
drawBorder_Click(), auquel ces valeurs sont affectées en premier. Puis, dans la méthode
ConfigureCrystalReports(), les valeurs stockées dans Session sont extraites et affectées aux propriétés
respectives de la classe CrystalReportViewer.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
337
Procédure
Dans le gestionnaire d'événements drawBorder_Click(), à la suite du code existant, ajoutez les quatre
affectations Session BackColor, BorderColor, BorderStyle et BorderWidth.
Session("myBorderColor") =
myCrystalReportViewer.BorderColor.ToString()
Session("myBorderStyle") = myCrystalReportViewer.BorderStyle
Session("myBorderWidth") = myCrystalReportViewer.BorderWidth
Session["borderColor"] =
crystalReportViewer.BorderColor.ToString();
Session["borderStyle"] = crystalReportViewer.BorderStyle;
Session["borderWidth"] = crystalReportViewer.BorderWidth;
1.5.1.5.11.3
Pour ajouter un code d'extraction Session à la
méthode ConfigureCrystalReports()
Contexte
Vous pouvez maintenant extraire ces valeurs de Session dans la méthode ConfigureCrystalReports().
Procédure
1.
A la fin de la méthode ConfigureCrystalReports(), créez un bloc If qui vérifie si la variable Session
BackColor est null.
Si elle n'est pas null, dans le bloc If, extrayez la propriété BackColor de Session et effectuez un cast de
celle-ci en chaîne. Transmettez la chaîne à la méthode FromName() de la classe Color et affectez l'instance
Color à la propriété BackColor de l'instance CrystalReportViewer.
If Not IsNothing(Session("myBackColor")) Then
myCrystalReportViewer.BackColor =
Color.FromName(CType(Session("myBackColor"), String))
End If
if (Session["backColor"] != null)
{
crystalReportViewer.BackColor = Color.FromName((string)Session["backColor"]);
}
2.
Créez un second bloc If qui vérifie si la variable Session BorderColor est null. Si elle n'est pas null, dans le
bloc If, extrayez la propriété BorderColor de Session et effectuez un cast de celle-ci en chaîne.
338
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Transmettez la chaîne à la méthode FromName() de la classe Color et affectez l'instance Color à la
propriété BorderColor de l'instance CrystalReportViewer.
If Not IsNothing(Session("myBorderColor")) Then
myCrystalReportViewer.BorderColor =
Color.FromName(CType(Session("myBorderColor"), String))
End If
if (Session["borderColor"] != null)
{
crystalReportViewer.BorderColor =
Color.FromName((string)Session["borderColor"]);
}
3.
Créez un troisième bloc If qui vérifie si la variable Session BorderStyle est null. Si elle n'est pas null, dans le
bloc If, extrayez la propriété BorderStyle de Session et effectuez un cast de celle-ci en BorderStyle.
myCrystalReportViewer.BorderStyle = CType(Session("myBorderStyle"), BorderStyle)
if (Session["borderStyle"] != null)
{
crystalReportViewer.BorderStyle = (BorderStyle)Session["borderStyle"];
}
4.
Créez un quatrième bloc If qui vérifie si la variable Session BorderWidth est null. Si elle n'est pas null, dans le
bloc If, extrayez la propriété BorderWidth de Session et convertissez-la en entier.
myCrystalReportViewer.BorderWidth = Convert.ToInt32(Session("myBorderWidth"))
if (Session["borderStyle"] != null)
{
crystalReportViewer.BorderWidth = Convert.ToInt32(Session["borderStyle"]);
}
1.5.1.5.11.4
Pour coder le contrôle Button drawBorder
Contexte
Dans la procédure suivante, vous ajoutez une persistance Session au gestionnaire d'événements de clic du
contrôle Button de réaffichage.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
339
Procédure
1.
Dans le gestionnaire d'événements redisplay_Click(), affectez l'élément sélectionné du contrôle
DropDownList selectBackColor à Session.
Session("myBackColor") = selectBackColor.SelectedItem.Text
Session["backColor"] = selectBackColor.SelectedItem.Text;
2.
Dans le gestionnaire d'événements drawBorder_Click(), affectez la propriété Text du contrôle TextBox
borderWidth à Session.
Session("myBorderWidth") = borderWidth.Text
Session["borderWidth"] = borderWidth.Text;
3.
Affectez l'index sélectionné dans DropDownList selectBorderStyle à Session.
Session("myBorderStyle") = selectBorderStyle.SelectedIndex
Session["borderStyle"] = selectBorderStyle.SelectedIndex;
4.
Affectez l'élément sélectionné dans DropDownList selectBorderColor à Session.
Session("myBorderColor") = selectBorderColor.SelectedItem.Text
Session["borderColor"] = selectBorderColor.SelectedItem.Text;
Résultats
Vous pouvez maintenant générer et exécuter le projet, afin de vérifier que les changements apportés au rapport
sont persistants entre les événements de clic.
1.5.2
Tutoriels du modèle d'objet ReportDocument
Cette section présente divers tutoriels basés sur le modèle d'objet ReportDocument.
Cette section présente divers tutoriels basés sur le modèle d'objet ReportDocument.
340
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.2.1
Tutoriel : Persistance du modèle d'objet
ReportDocument à l'aide de Session
Dans ce tutoriel, vous allez utiliser le modèle d'objet ReportDocument et effectuer des modifications par
programmation sur un rapport au moment de l'exécution.
Dans ce tutoriel, vous allez utiliser le modèle d'objet ReportDocument et effectuer des modifications par
programmation sur un rapport au moment de l'exécution. Vous apprendrez également à utiliser Session pour
garantir la persistance de ces modifications au fur et à mesure du rechargement des pages Web.
Seules les applications Web nécessitant une persistance Session, ce tutoriel ne s'applique pas aux projets
Windows.
Introduction
Le projet que vous allez créer dans ce tutoriel utilise un Web Form contenant un contrôle CrystalReportViewer et
deux boutons qui modifient l'ordre de tri du rapport dans le modèle d'objet ReportDocument.
Vous allez tout d'abord créer le projet sans la méthode de persistance Session. Sans la persistance, vous pouvez
constater que la modification de l'ordre de tri ne dure que le temps d'un événement de clic.
Vous ajouterez ensuite la méthode de persistance Session au projet. L'instance ReportDocument est placée
dans Session au moment de la création, ainsi qu'à chaque modification de l'état de cette instance
ReportDocument.
Chaque fois que le rapport doit être réaffiché, l'instance ReportDocument est extraite de Session et liée au
contrôle CrystalReportViewer. Ceci permet de garantir que chaque fois que le rapport est affiché, l'utilisateur
visualise la version la plus récente de l'instance ReportDocument.
Remarque
Ce tutoriel utilise la méthode Session, car vous allez rendre persistantes les modifications apportées au modèle
d'objet ReportDocument. Si vous envisagez d'utiliser uniquement le modèle d'objet limité contenu dans le
contrôle CrystalReportViewer, utilisez exclusivement ViewState.
Lors de l'utilisation de Session pour rendre persistant un objet
ReportDocument, d'autres modèles de persistance sont-ils utilisés ?
Lors de l'utilisation de Session pour rendre persistant un objet ReportDocument, d'autres modèles de persistance
sont-ils utilisés ?
Oui. Dans une application Web ASP.NET, les objets utilisent généralement Session pour la persistance, tandis que
les contrôles serveur Web utilisent ViewState. Du fait qu'une application SAP Crystal Reports, version
développeur pour Microsoft Visual Studio utilise des objets et des contrôles serveur Web pour interagir avec les
rapports, la persistance est partagée par Session et ViewState :
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
341
●
Session rend persistant le modèle d'objet ReportDocument, qui interagit par programmation avec le rapport
au moment de l'exécution.
●
ViewState rend persistant le contrôle CrystalReportViewer, qui affiche le rapport. Plus particulièrement,
ViewState rend persistantes les propriétés affichées, définies dans la barre d'outils de CrystalReportViewer.
ViewState rend également persistants les événements (tels que zoom et NextPage) déclenchés à partir des
boutons de la barre d'outils.
La persistance de ViewState est gérée automatiquement. Vous ne codez donc que la persistance de Session dans
ce tutoriel.
Exemple de code
Ce tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez les
instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir d'une
version terminée.
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les noms des
dossiers de chaque version d'exemple de code sont les suivants :
●
Site Web C# : CS_Web_RDObjMod_Session
●
Site Web Visual Basic : VB_Web_RDObjMod_Session
Informations associées
Quelle méthode de persistance utiliser avec SAP Crystal Reports ? [page 53]
Répertoire d'exemples de rapports [page 15]
1.5.2.1.1
Configuration des boutons sur le Web Form
Vous allez tout d'abord ajouter deux boutons au Web Form, leur donner un nom, puis créer des événements de
clic pour chacun d'eux.
1.5.2.1.1.1
Pour ajouter des boutons au Web Form
Procédure
1.
Ouvrez la page Default.aspx.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Cliquez sur le contrôle CrystalReportViewer et appuyez sur la FLECHE GAUCHE du clavier afin de faire
apparaître un curseur clignotant, puis appuyez sur la touche ENTREE.
342
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Le contrôle CrystalReportViewer descend d'une ligne.
4.
Dans la boîte à outils, faites glisser un contrôle serveur Web Button au-dessus du contrôle
CrystalReportViewer.
5.
Cliquez à droite du contrôle Button afin de faire apparaître un curseur clignotant, puis appuyez deux fois sur la
barre espace.
6.
Dans la boîte à outils, faites glisser un second contrôle serveur Web Button à droite du premier contrôle
Button.
1.5.2.1.1.2
Pour définir les propriétés Text et ID de chaque
contrôle Button
Procédure
1.
Cliquez sur le premier contrôle serveur Web Button pour le sélectionner.
2.
Dans la fenêtre Propriétés :
○
Attribuez à ID la valeur "sortOrderDescending".
○
Attribuez à Text la valeur "Trier par ordre décroissant".
3.
Cliquez sur le second contrôle serveur Web Button pour le sélectionner.
4.
Dans la fenêtre Propriétés :
○
Attribuez à ID la valeur "sortOrderAscending".
○
Attribuez à Text la valeur "Trier par ordre croissant".
1.5.2.1.1.3
Création d'événements de clic pour chaque
contrôle Button
Procédure
1.
Cliquez deux fois sur le premier contrôle serveur Web Button.
La classe code-behind s'ouvre et une méthode d'événement sortOrderDescending_Click() est créée
dans la partie inférieure de la classe.
2.
Revenez au mode Design de la page Default.aspx.
3.
Cliquez deux fois sur le second contrôle serveur Web Button.
La classe code-behind s'ouvre et une méthode d'événement sortOrderAscending_Click() est créée dans
la partie inférieure de la classe.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
343
1.5.2.1.2
Programmation des événements Button avec un
ordre de tri
Dans cette procédure, vous allez programmer le modèle d'objet ReportDocument du rapport dans la méthode
d'événement et définir un ordre de tri croissant dans une méthode d'événement et un ordre de tri décroissant
dans l'autre méthode d'événement.
1.5.2.1.2.1
Pour programmer le modèle d'objet
ReportDocument du rapport dans la méthode d'événement
sortOrderDescending_Click
Procédure
1.
Ouvrez la classe code-behind et recherchez la méthode d'événement sortOrderDescending_Click().
2.
Dans la méthode d'événement, extrayez la propriété SortFields de la propriété DataDefinition de
l'instance de rapport et affectez-la à une instance de la classe indexée SortFields.
Dim mySortFields As SortFields =
hierarchicalGroupingReport.DataDefinition.SortFields
SortFields sortFields = hierarchicalGroupingReport.DataDefinition.SortFields;
3.
Extrayez la première instance SortField de la classe indexée SortFields et affectez-la à une variable
appelée firstSortField.
Remarque
La classe indexée SortFields est basée sur 0.
Dim firstSortField As SortField = mySortFields(0)
SortField firstSortField = sortFields[0];
4.
Affectez à la propriété SortDirection de firstSortField un ordre décroissant, en utilisant la sélection
DescendingOrder de l'énumération SortDirection.
firstSortField.SortDirection = SortDirection.DescendingOrder
firstSortField.SortDirection = SortDirection.DescendingOrder;
344
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
5.
Réaffectez maintenant ce rapport (avec l'ordre de tri modifié dans le modèle d'objet ReportDocument) à la
propriété ReportSource du contrôle CrystalReportViewer.
myCrystalReportViewer.ReportSource = hierarchicalGroupingReport
crystalReportViewer.ReportSource = hierarchicalGroupingReport;
Résultats
Dans la procédure suivante, vous allez saisir le code de la méthode d'événement
sortOrderAscending_Click(). Le code est identique, à l'exception du paramètre de propriété
SortDirection.
1.5.2.1.2.2
Pour programmer le modèle d'objet
ReportDocument du rapport dans la méthode d'événement
sortOrderAscending_Click
Procédure
1.
Ouvrez la classe code-behind et recherchez la méthode d'événement sortOrderAscending_Click().
2.
Dans la méthode d'événement, extrayez la propriété SortFields de la propriété DataDefinition de
l'instance de rapport et affectez-la à une instance de la classe indexée SortFields.
Dim mySortFields As SortFields =
hierarchicalGroupingReport.DataDefinition.SortFields
SortFields sortFields = hierarchicalGroupingReport.DataDefinition.SortFields;
3.
Extrayez la première instance SortField de la classe indexée SortFields et affectez-la à une variable
appelée firstSortField.
Remarque
La classe indexée SortFields est basée sur 0.
Dim firstSortField As SortField = mySortFields(0)
SortField firstSortField = sortFields[0];
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
345
4.
Attribuez à la propriété SortDirection de l'instance firstSortField un ordre croissant, en utilisant la
sélection AscendingOrder de l'énumération SortDirection.
firstSortField.SortDirection = SortDirection.AscendingOrder
firstSortField.SortDirection = SortDirection.AscendingOrder;
5.
Réaffectez maintenant ce rapport (avec l'ordre de tri modifié dans le modèle d'objet ReportDocument) à la
propriété ReportSource du contrôle CrystalReportViewer.
myCrystalReportViewer.ReportSource = hierarchicalGroupingReport
crystalReportViewer.ReportSource = hierarchicalGroupingReport;
Résultats
La programmation du modèle d'objet ReportDocument du rapport dans chaque méthode d'événement est
terminée. La section suivante va permettre de vérifier le bon fonctionnement de ces modifications d'ordre de tri et
leur persistance lorsque la méthode Session n'est pas appliquée.
1.5.2.1.3
Vérification et détermination des erreurs de
persistance
Dans cette section, vous verrez que, sans l'utilisation de la méthode de persistance Session, les modifications de
tri ne sont pas conservées lorsque la page est rechargée afin de refléter les changements apportés aux
paramètres d'affichage.
1.5.2.1.3.1
Pour vérifier les modifications par
programmation apportées à l'ordre de tri codé dans le projet
Procédure
1.
Dans le menu Générer, cliquez sur Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Si vous ne rencontrez aucune erreur lors de la génération, la page Default.aspx est chargée dans le
navigateur, avec le rapport Hierarchical Grouping généré dans le formulaire.
346
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
4.
Observez attentivement l'ordre de tri. Vous pouvez imprimer la page pour comparer les modifications dans
l'ordre de tri.
5.
Cliquez sur le bouton Trier par ordre décroissant.
L'ordre de tri s'inverse.
6.
Cliquez sur le bouton Trier par ordre croissant.
L'ordre de tri reprend sa valeur d'origine (croissant).
1.5.2.1.3.2
Pour vérifier si les modifications de tri sont
conservées lorsque les paramètres d'affichage sont modifiés
Contexte
Dans la procédure suivante, vous allez vérifier si l'ordre de tri est conservé lorsque d'autres modifications (de
paramètres d'affichage, par exemple) sont apportées à la page.
Procédure
1.
Cliquez sur le bouton Trier par ordre décroissant.
L'ordre de tri s'inverse.
2.
Dans la barre d'outils du rapport, ajustez le zoom de 100 % à 125 %.
La page recharge le rapport avec un facteur de zoom égal à 125 %, mais l'inversion du tri n'a pas été
conservée.
3.
Cliquez à nouveau sur le bouton Trier par ordre décroissant.
L'ordre de tri s'inverse.
4.
Dans la barre d'outils du rapport, ajustez le zoom de 125 % à 100 %.
5.
La page recharge le rapport avec un facteur de zoom égal à 100 %, mais l'inversion du tri n'a pas été
conservée.
6.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
Résultats
Ce test permet de constater qu'à ce stade du tutoriel la persistance échoue. L'ordre de tri n'est appliqué que
lorsque l'utilisateur clique sur l'un des boutons de tri. L'ordre de tri est annulé lorsque l'utilisateur interagit avec la
page pour régler le zoom ou ouvrir une autre page dans un rapport comprenant plusieurs pages. Par conséquent,
vous devez ajouter du code pour rendre persistant le changement d'ordre de tri effectué avec Session dans le
modèle d'objet ReportDocument.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
347
1.5.2.1.4
Ajout de code Session
Dans cette section, vous allez apprendre à utiliser Session pour rendre persistant le changement d'ordre de tri du
rapport. Vous allez ajouter, à la méthode ConfigureCrystalReports() créée lors de la configuration de votre
projet (voir Configuration d'un projet [page 15]), du code permettant de rechercher Session et de recharger
immédiatement l'instance du rapport dans Session lorsqu'un utilisateur modifie l'ordre de tri.
1.5.2.1.4.1
Pour ajouter à la méthode
ConfigureCrystalReports() du code permettant de rechercher
Session
Procédure
1.
Dans la méthode ConfigureCrystalReports(), avant le code existant, créez un bloc conditionnel if/else
vérifiant si un objet Session nommé hierarchicalGroupingReport existe.
Vous pouvez utiliser le nom d'identificateur de votre choix pour cet objet Session. Choisissez un identificateur
unique tel que le nom de l'instance de rapport.
If (Session("hierarchicalGroupingReport") Is Nothing) Then
Else
End If
if(Session["hierarchicalGroupingReport"] == null)
{
}
else
{
}
2.
Si vous utilisez un rapport incorporé, déplacez la ligne de code qui déclare et instancie le rapport de son
emplacement actuel vers le bloc If.
If (Session("hierarchicalGroupingReport") Is Nothing) Then
hierarchicalGroupingReport = New Hierarchical_Grouping()
Else
End If
if (Session["hierarchicalGroupingReport"] == null)
{
hierarchicalGroupingReport = new Hierarchical_Grouping();
}
else
{
}
348
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
3.
Si vous utilisez un rapport non incorporé, déplacez les deux lignes de code qui déclarent et instancient le
rapport, puis le chargent de son emplacement actuel dans le répertoire vers le bloc If.
Remarque
Consultez le lien Répertoire d'exemples de rapports [page 15] pour déterminer le chemin correct des
exemples de rapports.
If (Session("hierarchicalGroupingReport") Is Nothing) Then
hierarchicalGroupingReport = New ReportDocument()
hierarchicalGroupingReport.Load("C:\Program Files\Microsoft Visual Studio
9.0\Crystal Reports\Samples\fr\Reports\Feature Examples\Hierarchical
Grouping.rpt")
Else
End If
if(Session["hierarchicalGroupingReport"] == null)
{
hierarchicalGroupingReport = new ReportDocument();
hierarchicalGroupingReport.Load("C:\Program Files\Microsoft Visual Studio
9.0\Crystal Reports\Samples\fr\Reports\Feature Examples\Hierarchical
Grouping.rpt");
}
else
{
}
4.
Dans le bloc If, affectez le rapport dans Session, en utilisant le nom de la variable du rapport comme
identificateur Session.
Session("hierarchicalGroupingReport") = hierarchicalGroupingReport
Session["hierarchicalGroupingReport"] = hierarchicalGroupingReport;
Ce bloc est maintenant finalisé. Le bloc If est appliqué si le rapport ne se trouve pas dans Session. Le bloc Else
est appliqué si le rapport se trouve dans Session ; par conséquent, le but du bloc Else est d'extraire le rapport
de Session vers une instance du rapport.
5.
Dans le bloc Else, affectez le rapport stocké dans Session à l'instance du rapport.
hierarchicalGroupingReport = CType(Session("hierarchicalGroupingReport"),
ReportDocument)
hierarchicalGroupingReport =
(ReportDocument)Session["hierarchicalGroupingReport"];
Remarque
Session ne renvoyant que des objets génériques, vous devez effectuer un transtypage du rapport en type
de rapport. Que vous utilisiez des rapports incorporés ou non incorporés, effectuez un transtypage de
l'objet extrait en objet de type ReportDocument.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
349
En dehors et en dessous du bloc conditionnel, le code restant lie l'instance du rapport à la propriété
ReportSource du contrôle CrystalReportViewer.
Résultats
Comme cela est expliqué dans la section Configuration d'un projet (voir Configuration d'un projet [page 15]), la
méthode ConfigureCrystalReports() est appelée à chaque rechargement de page. La modification de cette
méthode garantit par conséquent l'extraction et le chargement du rapport le plus récent (qu'il soit nouveau ou
stocké dans Session). Toutefois, rien n'a encore été écrit pour mettre réellement à jour l'instance du rapport.
Dans la section suivante, vous allez mettre à jour l'instance de rapport dans Session à chaque modification de
l'ordre de tri.
1.5.2.1.4.2
Pour mettre à jour l'instance de rapport dans
Session pour la méthode d'événement
sortOrderDescending_Click
Procédure
1.
Dans la méthode d'événement sortOrderDescending_Click(), supprimez la dernière ligne de code qui lie
le contrôle CrystalReportViewer au rapport.
Vous devez donc obtenir les trois lignes de code permettant de modifier le sens du tri.
2.
Sous ces trois lignes de code, affectez l'instance hierarchicalGroupingReport (mise à jour avec un nouvel
ordre de tri) dans Session à l'aide du même identificateur que celui utilisé dans la méthode
ConfigureCrystalReports().
Remarque
Pour simplifier l'opération, copiez et collez cette ligne de code depuis la méthode
ConfigureCrystalReports().
Session("hierarchicalGroupingReport") = hierarchicalGroupingReport
Session["hierarchicalGroupingReport"] = hierarchicalGroupingReport;
3.
Enfin, ajoutez un appel à la méthode ConfigureCrystalReports() afin d'obtenir la dernière instance
hierarchicalGroupingReport de Session (celle que vous venez de mettre jour) et liez-la au contrôle
CrystalReportViewer.
ConfigureCrystalReports()
ConfigureCrystalReports();
350
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Résultats
Répétez maintenant les mêmes étapes pour la seconde méthode d'événement.
1.5.2.1.4.3
Pour mettre à jour l'instance de rapport dans
Session pour la méthode d'événement
sortOrderAscending_Click
Procédure
1.
Dans la méthode d'événement sortOrderAscending_Click(), supprimez la dernière ligne de code qui lie
le contrôle CrystalReportViewer au rapport.
Vous devez donc obtenir les trois lignes de code permettant de modifier le sens du tri.
2.
Sous ces trois lignes de code, affectez l'instance hierarchicalGroupingReport (mise à jour avec un nouvel
ordre de tri) dans Session à l'aide du même identificateur que celui utilisé dans la méthode
ConfigureCrystalReports().
Pour simplifier l'opération, copiez et collez cette ligne de code depuis la méthode
ConfigureCrystalReports().
Session("hierarchicalGroupingReport") = hierarchicalGroupingReport
Session["hierarchicalGroupingReport"] = hierarchicalGroupingReport;
3.
Enfin, ajoutez un appel à la méthode ConfigureCrystalReports() afin d'obtenir la dernière instance
hierarchicalGroupingReport de Session (celle que vous venez de mettre jour) et liez-la au contrôle
CrystalReportViewer.
ConfigureCrystalReports()
ConfigureCrystalReports();
Résultats
Vous pouvez à présent vérifier si les modifications de tri ont bien été rendues persistantes.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
351
1.5.2.1.5
Vérification et détermination du caractère correct
de la persistance
Dans cette section, vous allez vérifier si les modifications de tri ont bien été rendues persistantes à présent que
Session est utilisée.
1.5.2.1.5.1
Pour vérifier si les modifications de tri ont bien
été rendues persistantes
Procédure
1.
Dans le menu Générer, cliquez sur Générer la solution.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
2.
Dans le menu Déboguer, cliquez sur Démarrer.
Si vous ne rencontrez aucune erreur lors de la génération, la page Default.aspx est chargée dans le
navigateur, avec le rapport Hierarchical Grouping généré dans le formulaire.
3.
Observez attentivement l'ordre de tri. Vous pouvez imprimer la page pour comparer les modifications dans
l'ordre de tri.
4.
Cliquez sur le bouton Trier par ordre décroissant.
L'ordre de tri s'inverse.
5.
Dans la barre d'outils du rapport, ajustez le zoom de 100 % à 125 %.
La page recharge le rapport avec un facteur de zoom égal à 125 %. L'inversion de l'ordre de tri a bien été
conservée.
6.
Cliquez sur le bouton Trier par ordre croissant.
L'ordre de tri est rétabli.
7.
Dans la barre d'outils du rapport, ajustez le zoom de 125 % à 100 %.
La page recharge le rapport avec un facteur de zoom égal à 100 %. L'ordre de tri a conservé le paramétrage
de l'étape précédente.
Résultats
Ce test permet de constater que la persistance fonctionne maintenant correctement.
352
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.2.2
Tutoriel : Connexion à une base de données SQL
Server sécurisée à l'aide de l'authentification SQL
Dans ce tutoriel, vous allez apprendre à ajouter un code de connexion afin d'afficher un rapport contenant des
informations provenant d'une base de données SQL Server sécurisée.
Introduction
Pour vous connecter à une base de données SQL Server sécurisée, vous utilisez des classes du modèle d'objet
ReportDocument.
L'objet ReportDocument comporte une propriété Database qui renvoie une instance Database. Cette instance
Database contient les informations de base de données pour le rapport, notamment une propriété Tables qui
renvoie une instance de classe indexée Tables. Chaque instance Table peut être extraite de la classe indexée
Tables.
La connexion se produit au niveau granulaire de chaque instance Table, qui doit obtenir une autorisation d'accès
individuel à la base de données SQL Server sécurisée. Ceci s'effectue en plaçant les informations de connexion
dans une instance ConnectionInfo puis, à l'intérieur d'une boucle for, en appliquant cette instance
ConnectionInfo à la propriété ConnectionInfo de chaque instance Table.
Les propriétés de la classe ConnectionInfo sont les suivantes :
●
ServerName
●
DatabaseName
●
UserID
●
Password
●
IntegratedSecurity (non utilisée dans ce tutoriel)
Remarque
Si vous souhaitez suivre un tutoriel qui utilise l'authentification Windows (et utilise donc la propriété
IntegratedSecurity au lieu des propriétés UserID et Password), voir Tutoriel : Connexion à une base de données
SQL Server sécurisée à l'aide de la sécurité intégrée [page 370].
Si vous définissez uniquement les propriétés DatabaseName, UserID et Password, vous serez connecté au
serveur et à la base de données par défaut spécifiés dans le rapport. Toutefois, si vous affectez une autre
propriété ServerName, vous pouvez rediriger le rapport vers un serveur différent au moment de l'exécution.
Vous allez tout d'abord créer un rapport contenant des données d'une base de données SQL Server sécurisée.
Vous pouvez effectuer ce tutoriel en utilisant les classes du modèle d'objet CrystalReportViewer ; cependant, il est
recommandé d'utiliser le modèle d'objet ReportDocument.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
353
Exemple de code
Ce tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez les
instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir d'une
version terminée.
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les noms des
dossiers de chaque version d'exemple de code sont les suivants :
●
Site Web C# : CS_Web_RDObjMod_DBLogon
●
Projet Windows C# : CS_Win_RDObjMod_DBLogon
●
Site Web Visual Basic : VB_Web_RDObjMod_DBLogon
●
Projet Windows Visual Basic : VB_Win_RDObjMod_DBLogon
Informations associées
Choisir le modèle d'objet correct pour votre projet [page 32]
Tutoriel : Connexion à une base de données SQL Server sécurisée [page 244]
Dans ce tutoriel, vous allez apprendre à ajouter un code de connexion afin d'afficher un rapport contenant des
informations provenant d'une base de données SQL Server sécurisée.
Répertoire d'exemples de rapports [page 15]
1.5.2.2.1
Création d'un rapport connecté à une base de
données SQL Server sécurisée
Créez tout d'abord un rapport dont les informations proviennent de la base de données Northwind.
Remarque
Northwind est un exemple de base de données fourni avec SQL Server.
Une configuration préalable est requise avant de commencer ce tutoriel.
Informations associées
Tutoriel : Connexion à une base de données SQL Server sécurisée à l'aide de l'authentification SQL [page 353]
Dans ce tutoriel, vous allez apprendre à ajouter un code de connexion afin d'afficher un rapport contenant des
informations provenant d'une base de données SQL Server sécurisée.
354
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.2.2.1.1
données
Configuration préalable requise de la base de
Procédure
1.
Configuration de SQL Server :
○
Si vous disposez de SQL Server (ou de la version OEM, MSDE), il doit être configuré de manière à exiger
une authentification SQL Server pour l'utiliser dans ce tutoriel.
○
Si vous ne disposez pas de SQL Server (ou de la version OEM, MSDE), vous devez installer MSDE en
attribuant à l'authentification SQL Server la valeur True pour l'utiliser dans ce tutoriel.
2.
La base de données Northwind fournie avec SQL Server doit être installée et vous devez vérifier que
l'authentification SQL Server est bien acceptée.
3.
Vous devez créer un compte à accès limité qui sera utilisé au sein du site Web.
1.5.2.2.1.2
Pour créer un rapport avec des données
sécurisées à partir de la base de données Northwind
Contexte
Remarque
Cette procédure fonctionne uniquement avec un projet créé à partir de la procédure Configuration d'un projet
[page 15]. La section Configuration d'un projet contient une configuration de références d'espaces de noms et
de code spécifique nécessaire à cette procédure. Il est impossible de suivre cette procédure sans cette
configuration.
Procédure
1.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du projet affiché en gras,
pointez sur Ajouter, puis cliquez sur Nouvel élément.
2.
Dans la boîte de dialogue Ajouter un nouvel élément, dans la vue Modèles, sélectionnez le modèle Rapport
Crystal.
3.
Dans le champ Nom, saisissez le nom "NorthwindCustomers.rpt", puis cliquez sur Ouvrir.
4.
Dans le panneau Créer un document de rapport Crystal de la boîte de dialogue Galerie de rapports Crystal,
sélectionnez en utilisant l' Assistant de création de rapports.
5.
Dans le panneau Choisir un expert, sélectionnez Standard, puis cliquez sur OK.
La fenêtre Assistant de création de rapports standard s'affiche.
6.
Dans le panneau Sources de données disponibles, développez le dossier Créer une nouvelle connexion.
7.
Dans le sous-dossier qui s'ouvre, développez le dossier OLE DB (ADO).
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
355
La fenêtre OLE DB (ADO) s'affiche.
8.
Sélectionnez Microsoft OLE DB Provider for SQL Server, puis cliquez sur Suivant.
9.
Saisissez les valeurs correspondant à votre serveur de base de données, l'ID utilisateur et le mot de passe
dans les champs Serveur, ID utilisateur et Mot de passe.
10. Dans la liste déroulante Base de données, sélectionnez "Northwind".
Laissez la case à cocher Sécurité intégrée désactivée, car vous utilisez l'authentification SQL Server au lieu de
l'authentification NT.
11. Cliquez sur Terminer.
Le dossier OLE DB est maintenant développé, affichant votre serveur de base de données et, à l'intérieur de
celui-ci, la base de données Northwind.
12. Développez les nœuds Northwind, dbo et Tables, puis sélectionnez la table Customers.
13. Cliquez sur le bouton > pour déplacer la table dans le panneau Tables sélectionnées, puis cliquez sur Suivant.
14. Maintenez la touche CTRL enfoncée et cliquez sur CompanyName, ContactName et City.
15. Cliquez sur le bouton > pour déplacer ces champs dans le panneau Champs à afficher, puis cliquez sur
Suivant.
16. Dans le panneau Champs disponibles, sous Champs du rapport, sélectionnez Customer.City, cliquez sur le
bouton > pour déplacer le champ dans le panneau Regrouper par, puis cliquez sur Terminer.
Le rapport NorthwindCustomers est créé et chargé dans la fenêtre principale de Visual Studio.
Résultats
Vous êtes maintenant prêt à lier le rapport au contrôle CrystalReportViewer et à configurer par
programmation la connexion à la base de données.
1.5.2.2.2
Liaison du rapport
Durant la procédure Configuration d'un projet [page 15], vous avez placé un contrôle CrystalReportViewer dans un
Web Form ou Windows Form. Lors de l'étape précédente, vous avez ajouté un rapport NorthwindCustomers au
projet.
Dans cette section, vous allez instancier le rapport NorthwindCustomers et le lier au contrôle
CrystalReportViewer. Vous allez ensuite vérifier si le rapport s'affiche correctement lorsque les valeurs actuelles
n'ont pas été définies pour ce paramètre.
Vous pouvez instancier et lier le rapport de deux façons :
●
En tant que rapport incorporé.
●
En tant que rapport non incorporé.
Choisissez l'une des deux (mais pas les deux) procédures ci-dessous.
●
Si vous utilisez des rapports incorporés, effectuez la procédure suivante afin d'instancier le rapport sous
forme de rapport incorporé.
●
Si vous utilisez des rapports non incorporés, effectuez la seconde procédure afin d'instancier le rapport sous
forme de rapport non incorporé.
356
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.2.2.2.1
Pour instancier le rapport NorthwindCustomers
sous forme de rapport incorporé et le lier au contrôle
CrystalReportViewer
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Ajoutez une nouvelle déclaration de niveau classe pour la classe wrapper du rapport NorthwindCustomers, en
utilisant la variable northwindCustomersReport. Définissez le modificateur d'accès à private.
Private northwindCustomersReport As NorthwindCustomers
private NorthwindCustomers northwindCustomersReport;
4.
Dans la méthode ConfigureCrystalReports(), instanciez la classe wrapper du rapport.
Remarque
Vous avez créé la méthode ConfigureCrystalReports() dans Configuration d'un projet [page 15].
northwindCustomersReport = New NorthwindCustomers()
northwindCustomersReport = new NorthwindCustomers();
5.
Sur la ligne suivante, au-dessous de l'instanciation du rapport, liez la propriété ReportSource du contrôle
CrystalReportViewer à la classe de rapport instanciée (nom de la variable : northwindCustomersReport).
myCrystalReportViewer.ReportSource = northwindCustomersReport
crystalReportViewer.ReportSource = northwindCustomersReport;
Résultats
Vous êtes maintenant prêt à générer et exécuter votre projet. Dans la mesure où le code permettant de se
connecter à la base de données n'a pas encore été écrit, le chargement du rapport doit échouer.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
357
1.5.2.2.2.2
Pour instancier le rapport NorthwindCustomers
sous forme de rapport non incorporé et le lier au contrôle
CrystalReportViewer
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Ajoutez une nouvelle déclaration de niveau classe pour la classe wrapper du rapport ReportDocument, en
utilisant la variable northwindCustomersReport. Définissez le modificateur d'accès à private.
Private northwindCustomersReport As ReportDocument
private ReportDocument northwindCustomersReport;
Remarque
La classe ReportDocument est un membre de l'espace de noms CrystalDecisions.CrystalReports.Engine.
Vous avez ajouté une déclaration "Imports" [Visual Basic] ou "using" [C#] pour cet espace de
noms dans la section Configuration d'un projet [page 15]. Lorsque vous instanciez ReportDocument et
chargez un rapport dans l'espace de noms, vous accédez au rapport via le SDK sans l'incorporer.
4.
Dans la méthode ConfigureCrystalReports() (que vous avez créée dans la section Configuration d'un
projet [page 15]), instanciez la classe ReportDocument.
northwindCustomersReport = New ReportDocument()
northwindCustomersReport = new ReportDocument();
5.
Déclarez une variable chaîne, nommez-la reportPath et affectez-lui un chemin d'accès au rapport local au
moment de l'exécution. Ce chemin est déterminé différemment selon qu'il s'agit d'un site Web ou d'un projet
Windows :
○
Pour un site Web, transmettez le nom du fichier de rapport local sous forme de paramètre de type chaîne
dans la méthode Server.MapPath(). Ceci permet d'associer le rapport local au chemin d'accès du
répertoire de fichiers du disque dur au moment de l'exécution.
Dim reportPath As String = Server.MapPath("NorthwindCustomers.rpt")
string reportPath = Server.MapPath("NorthwindCustomers.rpt");
○
Pour un projet Windows, concaténez la propriété Application.StartupPath avec une barre oblique
inverse et le nom du fichier de rapport local. Ceci permet d'associer le rapport au même répertoire que
celui du fichier exécutable Windows.
358
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Remarque
Au moment de la compilation, vous copierez le rapport dans le répertoire contenant le fichier
exécutable.
Dim reportPath As String = Application.StartupPath & "\" &
"NorthwindCustomers.rpt"
string reportPath = Application.StartupPath + "\\" + "NorthwindCustomers.rpt";
6.
Appelez la méthode Load() de l'instance ReportDocument et transmettez-lui la variable chaîne reportPath.
northwindCustomersReport.Load(reportPath)
northwindCustomersReport.Load(reportPath);
7.
Liez la propriété ReportSource du contrôle CrystalReportViewer à l'instance ReportDocument.
myCrystalReportViewer.ReportSource = northwindCustomersReport
crystalReportViewer.ReportSource = northwindCustomersReport;
1.5.2.2.2.3
Pour tester le chargement du rapport
NorthwindCustomers
Contexte
Que vous ayez choisi d'instancier une classe de rapport incorporé ou une classe de rapport non incorporé via la
classe ReportDocument, le nom de la variable utilisée est identique : northwindCustomersReport. Vous pouvez
ainsi utiliser un bloc de code commun dans les procédures suivantes.
Vous êtes maintenant prêt à générer et exécuter votre projet. Dans la mesure où le code permettant de se
connecter à la base de données n'a pas encore été écrit, le chargement du rapport doit échouer.
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Si vous utilisez un rapport non incorporé dans un projet Windows, recherchez l'exécutable Windows compilé
dans le sous-répertoire \bin\ [Visual Basic] ou \bin\debug\ [C#], puis copiez le rapport dans ce
sous-répertoire.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
359
Remarque
Pour que le rapport non incorporé soit chargé par l'exécutable Windows au moment de l'exécution, le
rapport doit être stocké dans le même répertoire que l'exécutable Windows.
4.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport NorthwindCustomers ne s'affiche pas, car le code de connexion à la base de données n'a pas été
ajouté.
Remarque
Les résultats peuvent varier selon la version de SAP Crystal Reports utilisée. Par exemple, si vous avez
installé SAP Crystal Reports 10 ou une version ultérieure, un formulaire apparaît et vous demande de
fournir les informations de connexion à la base de données pour ce rapport. Il s'agit d'une nouvelle
fonctionnalité de SAP Crystal Reports Developer. Si vous exécutez une version antérieure de
SAP Crystal Reports, une exception est renvoyée. Dans les deux cas, vous devez effectuer la procédure
suivante pour créer une application entièrement fonctionnelle.
5.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.2.2.3
Ajout du code de connexion au rapport
Vous êtes maintenant prêt à ajouter le code de connexion à la classe code-behind. Vous commencez par créer
une méthode d'assistance privée nommée SetDBLogonForReport().
1.5.2.2.3.1
Pour créer et coder la méthode
SetDBLogonForReport()
Procédure
1.
Revenez à la classe code-behind de ce Web Form ou Windows Form.
2.
A la fin de la classe, créez une méthode privée nommée SetDBLogonForReport() avec deux paramètres :
ConnectionInfo et ReportDocument.
Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo, ByVal
myReportDocument As ReportDocument)
End Sub
private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument
reportDocument)
{
}
360
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
3.
Dans cette méthode, extrayez l'instance Tables de la propriété Tables de la propriété Database du
paramètre ReportDocument.
Remarque
Tables est une classe indexée contenant des instances de la classe Table.
Dim myTables As Tables = myReportDocument.Database.Tables
Tables tables = reportDocument.Database.Tables;
4.
Créez une boucle foreach qui effectue une boucle sur chaque instance Table de l'instance de classe indexée
Tables.
Remarque
Vous devez inclure le chemin d'accès de l'espace de noms à la classe Table afin de la distinguer de la
classe Table de l'espace de noms System.Web.UI.WebControls.
For Each myTable As CrystalDecisions.CrystalReports.Engine.Table In myTables
Next
foreach(CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
}
5.
Dans la boucle foreach, extrayez l'instance TableLogonInfo de la propriété LogOnInfo de l'instance Table.
Dim myTableLogonInfo As TableLogOnInfo = myTable.LogOnInfo
TableLogOnInfo tableLogonInfo = table.LogOnInfo;
6.
Dans la boucle foreach, attribuez à la propriété ConnectionInfo de TableLogonInfo le paramètre
ConnectionInfo.
myTableLogonInfo.ConnectionInfo = myConnectionInfo
tableLogonInfo.ConnectionInfo = connectionInfo;
7.
Dans la boucle foreach, transmettez maintenant l'instance TableLogonInfo comme paramètre à la
méthode ApplyLogonInfo de l'instance Table.
myTable.ApplyLogOnInfo(myTableLogonInfo)
table.ApplyLogOnInfo(tableLogonInfo);
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
361
Résultats
Cette procédure a créé une méthode permettant de définir les informations de connexion à la base de données.
Toutefois, vous devez modifier la méthode ConfigureCrystalReports() pour désigner cette méthode afin que
le rapport sache qu'il dispose des informations de connexion à la base de données.
La modification de la méthode ConfigureCrystalReports() se déroule en deux étapes :
●
Configurer l'instance ConnectionInfo.
●
Appeler la méthode SetDBLogonForReport().
1.5.2.2.3.2
Pour modifier la méthode
ConfigureCrystalReports() selon le code de connexion à la base
de données
Procédure
1.
Dans la méthode ConfigureCrystalReports(), créez plusieurs sauts de ligne dans le code au-dessus de
la ligne qui lie le rapport au contrôle CrystalReportViewer.
2.
Dans les sauts de ligne, déclarez et instanciez la classe ConnectionInfo.
Remarque
Pour que la classe ConnectionInfo soit accessible, incluez une instruction "Imports" [Visual Basic]
ou "using" [C#] au début de la classe code-behind pour l'espace de noms CrystalDecisions.Shared.
(Vous avez ajouté cette déclaration dans la procédure Configuration d'un projet [page 15].)
Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
ConnectionInfo connectionInfo = new ConnectionInfo();
3.
Définissez les propriétés DatabaseName, UserID et Password de l'instance ConnectionInfo.
Remarque
Pour des raisons de sécurité, il est important que vous utilisiez un compte de base de données à accès
limité.
Dans votre propre code, remplacez l'exemple de mot de passe 1234 (indiqué ci-dessous) par votre propre
mot de passe.
myConnectionInfo.DatabaseName = "Northwind"
myConnectionInfo.UserID = "limitedPermissionAccount"
myConnectionInfo.Password = "
1234"
362
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
connectionInfo.DatabaseName = "Northwind";
connectionInfo.UserID = "limitedPermissionAccount";
connectionInfo.Password = "
1234";
4.
Saisissez un appel à la méthode SetDBLogonForReport() en transmettant l'instance ConnectionInfo et le
rapport NorthwindCustomers.
SetDBLogonForReport(myConnectionInfo, northwindCustomersReport)
SetDBLogonForReport(connectionInfo, northwindCustomersReport);
Résultats
Cette procédure est suivie du code d'origine qui lie le rapport au contrôle CrystalReportViewer.
Vous êtes maintenant prêt à générer et exécuter votre projet. Le rapport doit se charger correctement, car vous
avez ajouté le code de connexion à la base de données.
1.5.2.2.3.3
Pour tester le chargement du rapport
NorthwindCustomers
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport NorthwindCustomers s'affiche correctement.
4.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
Résultats
Le rapport NorthwindCustomers s'affiche correctement.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
363
1.5.2.2.4
Ajout de la possibilité de modifier l'emplacement
de la base de données au moment de l'exécution
Dans cette section, vous allez apprendre à modifier l'emplacement de la base de données au moment de
l'exécution. Cette opération nécessite simplement une légère modification de l'instance ConnectionInfo.
1.5.2.2.4.1
Pour modifier l'emplacement de la base de
données au moment de l'exécution
Procédure
1.
Dans la méthode ConfigureCrystalReports(), créez plusieurs sauts de ligne dans le code après la ligne
qui déclare et instancie la classe ConnectionInfo.
2.
Dans les sauts de ligne, définissez la propriété ServerName de l'instance ConnectionInfo.
Remarque
Dans votre propre code, remplacez l'exemple de nom de serveur DevDatabase (indiqué ci-dessous) par
votre propre nom de serveur.
myConnectionInfo.ServerName = "DevDatabase"
connectionInfo.ServerName = "DevDatabase";
1.5.2.2.4.2
Pour vérifier si un autre serveur de base de
données peut être redéfini pour le rapport au moment de
l'exécution
Contexte
Vous êtes maintenant prêt à générer et exécuter votre projet. Le rapport devrait se rediriger vers l'autre serveur
de base de données au moment de l'exécution.
Procédure
1.
364
Dans le menu Générer, sélectionnez Générer la solution.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport NorthwindCustomers s'affiche correctement.
4.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.2.2.5
Addenda : Améliorations du code de connexion à la
base de données
Vous avez correctement défini votre code pour modifier l'emplacement de la base de données au moment de
l'exécution. Dans cet exemple, le serveur de base de données est identique, la seule différence est que vous l'avez
appelé explicitement par son nom.
Toutefois, vous pouvez maintenant modifier le nom de ce serveur de base de données avec n'importe quel autre
serveur de base de données contenant la base de données Northwind. Si vous utilisez SAP Crystal Reports avec
Visual Studio 2005 ou 2008, vous avez accès aux fonctionnalités API améliorées pour la connexion à une base de
données SQL Server sécurisée. La fonctionnalité API de SAP Crystal Reports permet de réduire la quantité de
code nécessaire à la connexion à la base de données.
Dans les procédures précédentes, vous avez appris à créer la méthode d'assistance SetDBLogonForReport(),
qui utilise une boucle foreach pour définir la propriété ConnectionInfo de chaque table du rapport Crystal.
Dans ce tutoriel, vous allez apprendre à supprimer la méthode d'assistance et à ajouter un code afin d'utiliser la
classe DataSourceConnections provenant de l'espace de noms CrystalDecisions.Shared ou la méthode
SetDatabaseLogon() provenant de la classe ReportDocument.
La classe DataSourceConnections est une ArrayList qui contient les instances ConnectionInfo pour chaque
connexion utilisée par le rapport Crystal. Vous pouvez extraire les instances ConnectionInfo au niveau d'un
index donné, puis appeler les méthodes SetLogon() ou SetConnection() pour transmettre les informations
de connexion au rapport.
La méthode SetLogon() permet de définir le nom d'utilisateur et le mot de passe. Cette méthode utilise le
serveur et la base de données par défaut que vous avez spécifiés dans le rapport. La méthode SetConnection()
permet de définir le nom du serveur, le nom de la base de données, le nom d'utilisateur et le mot de passe.
Pour utiliser le nouveau code API, vous devez suivre les instructions des sections Création d'un rapport connecté à
une base de données SQL Server sécurisée [page 354] et Liaison du rapport [page 356] sans code de connexion.
Vous pouvez ensuite utiliser l'une des méthodes API améliorées suivantes :
●
Utilisation de la classe DataSourceConnections pour la connexion à la base de données [page 367]
●
Utilisation de la méthode SetDatabaseLogon() de la classe ReportDocument [page 369]
Si vous avez effectué toutes les procédures de la section Tutoriel : Connexion à une base de données SQL Server
sécurisée à l'aide de l'authentification SQL [page 353], vous devez d'abord supprimer certaines lignes de code
indiquées dans la section Modification du projet pour la connexion à la base de données [page 366] avant de
pouvoir utiliser l'une des méthodes API améliorées.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
365
1.5.2.2.5.1
Modification du projet pour la connexion à la base
de données
Si vous avez effectué toutes les procédures de la section Tutoriel : Connexion à une base de données SQL Server
sécurisée à l'aide de l'authentification SQL [page 353], vous devez d'abord supprimer certaines lignes de code
indiquées dans la procédure suivante.
1.5.2.2.5.1.1
Pour modifier le projet afin d'utiliser les
fonctionnalités API améliorées de SAP Crystal Reports
Procédure
1.
Ouvrez le projet terminé de ce tutoriel.
2.
Ouvrez le Web Form ou Windows Form.
3.
Dans le menu Affichage, cliquez sur Code.
4.
Supprimez la méthode d'assistance SetDBLogonForReport().
5.
Dans la méthode ConfigureCrystalReports(), supprimez les lignes de code suivantes :
a) Supprimez le code qui déclare une instance de la classe ConnectionInfo.
b) Supprimez le code qui utilise les propriétés ServerName, DatabaseName, UserID et Password provenant
de la classe ConnectionInfo.
c) Supprimez l'appel à la méthode SetDBLogonForReport().
Résultats
La méthode ConfigureCrystalReports() comporte à présent deux lignes de code.
Private Sub ConfigureCrystalReports()
northwindCustomersReport = new NorthwindCustomers()
myCrystalReportViewer.ReportSource = northwindCustomersReport
End Sub
private void ConfigureCrystalReports()
{
northwindCustomersReport = new NorthwindCustomers();
crystalReportViewer.ReportSource = northwindCustomersReport;
}
Vous pouvez à présent choisir d'utiliser l'une des méthodes API améliorées suivantes :
●
Utilisation de la classe DataSourceConnections pour la connexion à la base de données [page 367]
●
Utilisation de la méthode SetDatabaseLogon() de la classe ReportDocument [page 369]
366
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.2.2.5.2
Utilisation de la classe DataSourceConnections
pour la connexion à la base de données
Dans cette section, vous allez apprendre à ajouter deux lignes de code pour vous connecter à une base de
données SQL Server. Vous devez extraire l'instance DataSourceConnections, puis définir les informations de
connexion à la base de données à l'aide des méthodes SetLogon() ou SetConnection().
●
Vous devez créer un projet basé sur les instructions des sections Création d'un rapport connecté à une base
de données SQL Server sécurisée [page 354] et Liaison du rapport [page 356] sans code de connexion.
●
Ou vous devez créer un projet en suivant les instructions de la section Modification du projet pour la connexion
à la base de données [page 366].
Si vous souhaitez utiliser le serveur et la base de données par défaut, appelez la méthode SetLogon() à l'aide de
votre nom d'utilisateur et de votre mot de passe.
En revanche, si vous souhaitez modifier le serveur ou la base de données, appelez la méthode SetConnection()
à l'aide de vos nom de serveur, nom de base de données, nom d'utilisateur et mot de passe.
1.5.2.2.5.2.1
Pour utiliser la méthode SetLogon() de la classe
DataSourceConnections
Procédure
1.
Entre les deux lignes de code de la méthode ConfigureCrystalReports(), extrayez l'instance
DataSourceConnections à partir de la propriété DataSourceConnections de l'instance
NorthwindCustomers.
Dim myDataSourceConnections As DataSourceConnections =
northwindCustomersReport.DataSourceConnections
DataSourceConnections dataSourceConnections =
northwindCustomersReport.DataSourceConnections;
2.
Extrayez l'élément IConnectionInfo au niveau de l'index 0 de l'instance DataSourceConnections.
Dim myConnectInfo As IConnectionInfo = myDataSourceConnections(0)
IConnectionInfo connectInfo = dataSourceConnections[0];
3.
Appelez la méthode SetLogon() à l'aide de votre nom d'utilisateur et votre mot de passe.
Remarque
Pour des raisons de sécurité, il est important que vous utilisiez un compte de base de données à accès
limité.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
367
Dans votre propre code, remplacez l'exemple de mot de passe 1234 (indiqué ci-dessous) par votre propre
mot de passe.
myConnectInfo.SetLogon("limitedPermissionAccount", "1234")
connectInfo.SetLogon("limitedPermissionAccount", "1234");
1.5.2.2.5.2.2
Pour utiliser la méthode SetConnection() de la
classe DataSourceConnections
Procédure
1.
Entre les deux lignes de code de la méthode ConfigureCrystalReports(), extrayez l'instance
DataSourceConnections à partir de la propriété DataSourceConnections de l'instance NorthwindCustomers.
Dim myDataSourceConnections As DataSourceConnections =
northwindCustomersReport.DataSourceConnections
DataSourceConnections dataSourceConnections =
northwindCustomersReport.DataSourceConnections;
2.
Extrayez l'élément IConnectionInfo au niveau de l'index 0 de l'instance DataSourceConnections.
Dim myConnectInfo As IConnectionInfo = myDataSourceConnections(0)
IConnectionInfo connectInfo = dataSourceConnections[0];
3.
Appelez la méthode SetConnection() à l'aide de vos nom de serveur, nom de base de données, nom
d'utilisateur et mot de passe.
Remarque
Pour des raisons de sécurité, il est important que vous utilisiez un compte de base de données à accès
limité.
Dans votre propre code, remplacez l'exemple de mot de passe 1234 (indiqué ci-dessous) par votre propre
mot de passe.
myConnectInfo.SetConnection("ServerName", "Northwind",
"limitedPermissionAccount", "1234")
connectInfo.SetConnection("ServerName", "Northwind", "limitedPermissionAccount",
"1234");
368
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Résultats
Vous êtes maintenant prêt à générer et exécuter le projet afin de vous connecter à la base de données SQL Server
sécurisée.
1.5.2.2.5.3
Utilisation de la méthode SetDatabaseLogon() de
la classe ReportDocument
Contexte
Entre les deux lignes de code dans la méthode ConfigureCrystalReports(), appelez la méthode
SetDatabaseLogon() de l'instance NorthwindCustomers, puis transmettez l'un des ensembles de paramètres
suivants :
Procédure
1.
Appelez la méthode SetDatabaseLogon() à l'aide de votre nom d'utilisateur et votre mot de passe.
Remarque
Pour des raisons de sécurité, il est important que vous utilisiez un compte de base de données à accès
limité.
Dans votre propre code, remplacez l'exemple de mot de passe 1234 (indiqué ci-dessous) par votre propre
mot de passe.
northwindCustomersReport.SetDatabaseLogon("limitedPermissionAccount","1234")
northwindCustomersReport.SetDatabaseLogon("limitedPermissionAccount","1234");
2.
Ou appelez la méthode SetDatabaseLogon() à l'aide de vos nom de serveur, nom de base de données, nom
d'utilisateur et mot de passe.
Remarque
Cette méthode ne modifie pas le serveur ni la base de données. Vous êtes limité au serveur et à la base de
données par défaut spécifiés dans le rapport.
Dans votre propre code, remplacez l'exemple de mot de passe 1234 (indiqué ci-dessous) par votre propre
mot de passe.
northwindCustomersReport.SetDatabaseLogon("limitedPermissionAccount","1234",
"ServerName", "Northwind")
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
369
northwindCustomersReport.SetDatabaseLogon("limitedPermissionAccount","1234",
"ServerName", "Northwind");
1.5.2.3
Tutoriel : Connexion à une base de données SQL
Server sécurisée à l'aide de la sécurité intégrée
Dans ce tutoriel, vous allez apprendre à ajouter un code de connexion afin d'afficher un rapport contenant des
informations provenant d'une base de données SQL Server sécurisée.
Introduction
Pour vous connecter à une base de données SQL Server sécurisée, vous utilisez des classes du modèle d'objet
ReportDocument.
L'objet ReportDocument comporte une propriété Database qui renvoie une instance Database. Cette instance
Database contient les informations de base de données pour le rapport, notamment une propriété Tables qui
renvoie une instance de classe indexée Tables. Chaque instance Table peut être extraite de la classe indexée
Tables.
La connexion se produit au niveau granulaire de chaque instance Table, qui doit obtenir une autorisation d'accès
individuel à la base de données SQL Server sécurisée. Ceci s'effectue en plaçant les informations de connexion
dans une instance ConnectionInfo puis, à l'intérieur d'une boucle for, en appliquant cette instance
ConnectionInfo à la propriété ConnectionInfo de chaque instance Table.
Les propriétés de la classe ConnectionInfo sont les suivantes :
●
ServerName
●
DatabaseName
●
UserID (non utilisée dans ce tutoriel)
●
Password (non utilisée dans ce tutoriel)
●
IntegratedSecurity
Remarque
Si vous souhaitez suivre un tutoriel qui utilise l'authentification Windows (et utilise donc les propriétés UserID
et Password au lieu de la propriété IntegratedSecurity), voir Tutoriel : Connexion à une base de données SQL
Server sécurisée à l'aide de l'authentification SQL [page 353].
Si vous définissez uniquement les propriétés DatabaseName et IntegratedSecurity, vous serez connecté au
serveur et à la base de données par défaut spécifiés dans le rapport. Toutefois, si vous affectez une autre
propriété ServerName, vous pouvez rediriger le rapport vers un serveur différent au moment de l'exécution.
Vous allez tout d'abord créer un rapport contenant des données d'une base de données SQL Server sécurisée.
Vous pouvez effectuer ce tutoriel en utilisant les classes du modèle d'objet CrystalReportViewer ; cependant, il est
recommandé d'utiliser le modèle d'objet ReportDocument.
370
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Exemple de code
Ce tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez les
instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir d'une
version terminée.
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les noms des
dossiers de chaque version d'exemple de code sont les suivants :
●
Site Web C# : CS_Web_RDObjMod_DBLogonIntegratedSecurity
●
Projet Windows C# : CS_Win_RDObjMod_DBLogonIntegratedSecurity
●
Site Web Visual Basic : VB_Web_RDObjMod_DBLogonIntegratedSecurity
●
Projet Windows Visual Basic : VB_Win_RDObjMod_DBLogonIntegratedSecurity
Informations associées
Choisir le modèle d'objet correct pour votre projet [page 32]
Répertoire d'exemples de rapports [page 15]
1.5.2.3.1
Création d'un rapport connecté à une base de
données SQL Server sécurisée à l'aide de la sécurité intégrée
Créez tout d'abord un rapport dont les informations proviennent de la base de données Northwind.
Remarque
Northwind est un exemple de base de données fourni avec SQL Server.
Une configuration préalable est requise avant de commencer ce tutoriel.
1.5.2.3.1.1
données
Configuration préalable requise de la base de
Procédure
1.
Configuration de SQL Server :
○
Si vous disposez de SQL Server (ou de la version OEM, MSDE), il doit être configuré pour accepter
l'authentification Windows dans ce tutoriel.
○
Si vous ne disposez pas de SQL Server (ou de la version OEM, MSDE), vous devez installer MSDE avec
l'authentification Windows (par défaut) pour l'utiliser dans ce tutoriel.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
371
2.
La base de données Northwind fournie avec SQL Server doit être installée et vous devez vérifier que
l'authentification Windows est bien acceptée.
Après avoir configuré SQL Server et la base de données Northwind conformément aux instructions des
sections ci-dessus, vous êtes prêt à créer un rapport dont les informations proviennent, de façon sécurisée,
de la base de données Northwind.
Remarque
Cette procédure fonctionne uniquement avec un projet créé à partir de la procédure Configuration d'un
projet [page 15]. La section Configuration d'un projet contient une configuration de références d'espaces
de noms et de code spécifique nécessaire à cette procédure. Il est impossible de suivre cette procédure
sans cette configuration.
1.5.2.3.1.2
Pour créer un rapport avec des données
sécurisées à partir de la base de données Northwind
Procédure
1.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du projet affiché en gras,
pointez sur Ajouter, puis cliquez sur Nouvel élément.
2.
Dans la boîte de dialogue Ajouter un nouvel élément, dans la vue Modèles, sélectionnez le modèle Rapport
Crystal.
3.
Dans le champ Nom, saisissez le nom "NorthwindCustomers.rpt", puis cliquez sur Ouvrir.
4.
Dans le panneau Créer un document de rapport Crystal de la boîte de dialogue Galerie de rapports Crystal,
sélectionnez en utilisant l' Assistant de création de rapports.
5.
Dans le panneau Choisir un expert, sélectionnez Standard, puis cliquez sur OK.
La fenêtre Assistant de création de rapports standard s'affiche.
6.
Dans le panneau Sources de données disponibles, développez le dossier Créer une nouvelle connexion.
7.
Dans le sous-dossier qui s'ouvre, développez le dossier OLE DB (ADO).
La fenêtre OLE DB (ADO) s'affiche.
8.
Sélectionnez Microsoft OLE DB Provider for SQL Server, puis cliquez sur Suivant.
9.
Saisissez le nom de votre serveur de base de données dans le champ Serveur.
10. Activez la case à cocher Sécurité intégrée.
11. Dans la liste déroulante Base de données, sélectionnez "Northwind".
12. Cliquez sur Terminer.
Le dossier OLE DB est maintenant développé, affichant votre serveur de base de données et, à l'intérieur de
celui-ci, la base de données Northwind.
13. Développez les nœuds Northwind, dbo et Tables, puis sélectionnez la table Customers.
14. Cliquez sur le bouton > pour déplacer la table dans le panneau Tables sélectionnées, puis cliquez sur Suivant.
15. Maintenez la touche CTRL enfoncée et cliquez sur CompanyName, ContactName et City.
16. Cliquez sur le bouton > pour déplacer ces champs dans le panneau Champs à afficher, puis cliquez sur
Suivant.
372
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
17. Dans le panneau Champs disponibles, sous Champs du rapport, sélectionnez Customer.City, cliquez sur le
bouton > pour déplacer le champ dans le panneau Regrouper par, puis cliquez sur Terminer.
Le rapport NorthwindCustomers est créé et chargé dans la fenêtre principale de Visual Studio.
Résultats
Vous êtes maintenant prêt à lier le rapport au contrôle CrystalReportViewer et à configurer par programmation la
connexion à la base de données.
1.5.2.3.2
Liaison du rapport
Durant la procédure Configuration d'un projet [page 15], vous avez placé un contrôle CrystalReportViewer
dans un Web Form ou un Windows Form. Lors de l'étape précédente, vous avez ajouté un rapport
NorthwindCustomers au projet.
Dans cette section, vous allez instancier le rapport NorthwindCustomers et le lier au contrôle
CrystalReportViewer. Vous allez ensuite vérifier si le rapport s'affiche correctement lorsque les valeurs
actuelles n'ont pas été définies pour ce paramètre.
Vous pouvez instancier et lier le rapport de deux façons :
●
En tant que rapport incorporé.
●
En tant que rapport non incorporé.
Choisissez l'une des deux (mais pas les deux) procédures ci-dessous.
●
Si vous utilisez des rapports incorporés, effectuez la procédure suivante afin d'instancier le rapport sous
forme de rapport incorporé.
●
Si vous utilisez des rapports non incorporés, effectuez la seconde procédure afin d'instancier le rapport sous
forme de rapport non incorporé.
1.5.2.3.2.1
Pour instancier le rapport NorthwindCustomers
sous forme de rapport incorporé et le lier au contrôle
CrystalReportViewer
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Ajoutez une nouvelle déclaration de niveau classe pour la classe wrapper du rapport NorthwindCustomers, en
utilisant la variable northwindCustomersReport. Définissez le modificateur d'accès à private.
Private northwindCustomersReport As NorthwindCustomers
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
373
private NorthwindCustomers northwindCustomersReport;
4.
Dans la méthode ConfigureCrystalReports(), instanciez la classe wrapper du rapport.
Remarque
Vous avez créé la méthode ConfigureCrystalReports() dans Configuration d'un projet [page 15].
northwindCustomersReport = New NorthwindCustomers()
northwindCustomersReport = new NorthwindCustomers();
5.
Sur la ligne suivante, au-dessous de l'instanciation du rapport, liez la propriété ReportSource du contrôle
CrystalReportViewer à la classe de rapport instanciée (nom de la variable :
northwindCustomersReport).
myCrystalReportViewer.ReportSource = northwindCustomersReport
crystalReportViewer.ReportSource = northwindCustomersReport;
Résultats
Vous êtes maintenant prêt à générer et exécuter votre projet. Dans la mesure où le code permettant de se
connecter à la base de données n'a pas encore été écrit, le chargement du rapport doit échouer.
1.5.2.3.2.2
Pour instancier le rapport NorthwindCustomers
sous forme de rapport non incorporé et le lier au contrôle
CrystalReportViewer
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Ajoutez une nouvelle déclaration de niveau classe pour la classe wrapper du rapport ReportDocument, en
utilisant la variable northwindCustomersReport. Définissez le modificateur d'accès à private.
Private northwindCustomersReport As ReportDocument
private ReportDocument northwindCustomersReport;
374
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Remarque
La classe ReportDocument est un membre de l'espace de noms CrystalDecisions.CrystalReports.Engine.
Vous avez ajouté une déclaration "Imports" [Visual Basic] ou "using" [C#] pour cet espace de
noms dans la section Configuration d'un projet [page 15]. Lorsque vous instanciez ReportDocument et
chargez un rapport dans l'espace de noms, vous accédez au rapport via le SDK sans l'incorporer.
4.
Dans la méthode ConfigureCrystalReports() (que vous avez créée dans la section Configuration d'un
projet [page 15]), instanciez la classe ReportDocument.
northwindCustomersReport = New ReportDocument()
northwindCustomersReport = new ReportDocument();
5.
Déclarez une variable chaîne, nommez-la reportPath et affectez-lui un chemin d'accès au rapport local au
moment de l'exécution. Ce chemin est déterminé différemment selon qu'il s'agit d'un site Web ou d'un projet
Windows :
○
Pour un site Web, transmettez le nom du fichier de rapport local sous forme de paramètre de type chaîne
dans la méthode Server.MapPath(). Ceci permet d'associer le rapport local au chemin d'accès du
répertoire de fichiers du disque dur au moment de l'exécution.
Dim reportPath As String = Server.MapPath("NorthwindCustomers.rpt")
string reportPath = Server.MapPath("NorthwindCustomers.rpt");
○
Pour un projet Windows, concaténez la propriété Application.StartupPath avec une barre oblique
inverse et le nom du fichier de rapport local. Ceci permet d'associer le rapport au même répertoire que
celui du fichier exécutable Windows.
Remarque
Au moment de la compilation, vous copierez le rapport dans le répertoire contenant le fichier
exécutable.
Dim reportPath As String = Application.StartupPath & "\" &
"NorthwindCustomers.rpt"
string reportPath = Application.StartupPath + "\\" + "NorthwindCustomers.rpt";
6.
Appelez la méthode Load() de l'instance ReportDocument et transmettez-lui la variable chaîne reportPath.
northwindCustomersReport.Load(reportPath)
northwindCustomersReport.Load(reportPath);
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
375
7.
Liez la propriété ReportSource du contrôle CrystalReportViewer à l'instance ReportDocument.
myCrystalReportViewer.ReportSource = northwindCustomersReport
crystalReportViewer.ReportSource = northwindCustomersReport;
Résultats
Que vous ayez choisi d'instancier une classe de rapport incorporé ou une classe de rapport non incorporé via la
classe ReportDocument, le nom de la variable utilisée est identique : northwindCustomersReport. Vous pouvez
ainsi utiliser un bloc de code commun dans les procédures suivantes.
Vous êtes maintenant prêt à générer et exécuter votre projet. Dans la mesure où le code permettant de se
connecter à la base de données n'a pas encore été écrit, le chargement du rapport doit échouer.
1.5.2.3.2.3
Pour tester le chargement du rapport
NorthwindCustomers
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Si vous utilisez un rapport non incorporé dans un projet Windows, recherchez l'exécutable Windows compilé
dans le sous-répertoire \bin\ [Visual Basic] ou \bin\debug\ [C#], puis copiez le rapport dans ce
sous-répertoire.
Remarque
Pour que le rapport non incorporé soit chargé par l'exécutable Windows au moment de l'exécution, le
rapport doit être stocké dans le même répertoire que l'exécutable Windows.
4.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport NorthwindCustomers ne s'affiche pas, car le code de connexion à la base de données n'a pas été
ajouté.
Remarque
Les résultats peuvent varier selon la version de SAP Crystal Reports utilisée. Par exemple, si vous avez
installé SAP Crystal Reports Developer, un formulaire apparaît et vous demande de fournir les informations
de connexion à la base de données pour ce rapport. Il s'agit d'une nouvelle fonctionnalité de
SAP Crystal Reports Developer. Si vous exécutez une version antérieure de SAP Crystal Reports, une
exception est renvoyée. Dans les deux cas, vous devez effectuer la procédure suivante pour créer une
application entièrement fonctionnelle.
376
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
5.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.2.3.3
Ajout du code de connexion au rapport
Vous êtes maintenant prêt à ajouter le code de connexion à la classe code-behind. Vous commencez par créer
une méthode d'assistance privée nommée SetDBLogonForReport().
1.5.2.3.3.1
Pour créer et coder la méthode
SetDBLogonForReport()
Procédure
1.
Revenez à la classe code-behind de ce Web Form ou Windows Form.
2.
A la fin de la classe, créez une méthode privée nommée SetDBLogonForReport() avec deux paramètres :
ConnectionInfo et ReportDocument.
Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo, ByVal
myReportDocument As ReportDocument)
End Sub
private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument
reportDocument)
{
}
3.
Dans cette méthode, extrayez l'instance Tables de la propriété Tables de la propriété Database du paramètre
ReportDocument.
Remarque
Tables est une classe indexée contenant des instances de la classe Table.
Dim myTables As Tables = myReportDocument.Database.Tables
Tables tables = reportDocument.Database.Tables;
4.
Créez une boucle foreach qui effectue une boucle sur chaque instance Table de l'instance de classe indexée
Tables.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
377
Remarque
Vous devez inclure le chemin d'accès de l'espace de noms à la classe Table afin de la distinguer de la classe
Table de l'espace de noms System.Web.UI.WebControls.
For Each myTable As CrystalDecisions.CrystalReports.Engine.Table In myTables
Next
foreach(CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
}
5.
Dans la boucle foreach, extrayez l'instance TableLogonInfo de la propriété LogOnInfo de l'instance Table.
Dim myTableLogonInfo As TableLogOnInfo = myTable.LogOnInfo
TableLogOnInfo tableLogonInfo = table.LogOnInfo;
6.
Dans la boucle foreach, attribuez à la propriété ConnectionInfo de TableLogonInfo le paramètre
ConnectionInfo.
myTableLogonInfo.ConnectionInfo = myConnectionInfo
tableLogonInfo.ConnectionInfo = connectionInfo;
7.
Dans la boucle foreach, transmettez maintenant l'instance TableLogonInfo comme paramètre à la méthode
ApplyLogonInfo de l'instance Table.
myTable.ApplyLogOnInfo(myTableLogonInfo)
table.ApplyLogOnInfo(tableLogonInfo);
Résultats
Cette procédure a créé une méthode permettant de définir les informations de connexion à la base de données.
Toutefois, vous devez modifier la méthode ConfigureCrystalReports() pour désigner cette méthode afin que
le rapport sache qu'il dispose des informations de connexion à la base de données.
La modification de la méthode ConfigureCrystalReports() se déroule en deux étapes :
●
Configurer l'instance ConnectionInfo.
●
Appeler la méthode SetDBLogonForReport().
378
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.2.3.3.2
Pour modifier la méthode
ConfigureCrystalReports() selon le code de connexion à la base
de données
Procédure
1.
Dans la méthode ConfigureCrystalReports(), créez plusieurs sauts de ligne dans le code au-dessus de
la ligne qui lie le rapport au contrôle CrystalReportViewer.
2.
Dans les sauts de ligne, déclarez et instanciez la classe ConnectionInfo.
Remarque
Pour que la classe ConnectionInfo soit accessible, incluez une instruction "Imports" [Visual Basic]
ou "using" [C#] au début de la classe code-behind pour l'espace de noms CrystalDecisions.Shared.
(Vous avez ajouté cette déclaration dans la procédure Configuration d'un projet [page 15].)
Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
ConnectionInfo connectionInfo = new ConnectionInfo();
3.
Définissez les propriétés DatabaseName et IntegratedSecurity de l'instance ConnectionInfo.
myConnectionInfo.DatabaseName = "Northwind"
myConnectionInfo.IntegratedSecurity = True
connectionInfo.DatabaseName = "Northwind";
connectionInfo.IntegratedSecurity = true;
4.
Saisissez un appel à la méthode SetDBLogonForReport() en transmettant l'instance ConnectionInfo et le
rapport NorthwindCustomers.
SetDBLogonForReport(myConnectionInfo, northwindCustomersReport)
SetDBLogonForReport(connectionInfo, northwindCustomersReport);
Résultats
Cette procédure est suivie du code d'origine qui lie le rapport au contrôle CrystalReportViewer.
Vous êtes maintenant prêt à générer et exécuter votre projet. Le rapport doit se charger correctement, car vous
avez ajouté le code de connexion à la base de données.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
379
1.5.2.3.3.3
Pour tester le chargement du rapport
NorthwindCustomers
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport NorthwindCustomers s'affiche correctement.
4.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
Résultats
Dans la section suivante, vous allez apprendre à modifier l'emplacement de la base de données au moment de
l'exécution.
1.5.2.3.4
Ajout de la possibilité de modifier l'emplacement
de la base de données au moment de l'exécution
Dans cette section, vous allez apprendre à modifier l'emplacement de la base de données au moment de
l'exécution. Cette opération nécessite simplement une légère modification de l'instance ConnectionInfo.
1.5.2.3.4.1
Pour modifier l'emplacement de la base de
données au moment de l'exécution
Procédure
1.
Dans la méthode ConfigureCrystalReports(), créez plusieurs sauts de ligne dans le code après la ligne
qui déclare et instancie la classe ConnectionInfo.
2.
Dans les sauts de ligne, définissez la propriété ServerName de l'instance ConnectionInfo.
Remarque
Dans votre propre code, remplacez l'exemple de nom de serveur DevDatabase (indiqué ci-dessous) par
votre propre nom de serveur.
myConnectionInfo.ServerName = "DevDatabase"
380
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
connectionInfo.ServerName = "DevDatabase";
Résultats
Vous êtes maintenant prêt à générer et exécuter votre projet. Le rapport devrait se rediriger vers l'autre serveur
de base de données au moment de l'exécution.
1.5.2.3.4.2
Pour vérifier si un autre serveur de base de
données peut être redéfini pour le rapport au moment de
l'exécution
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport NorthwindCustomers s'affiche correctement.
4.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.2.3.5
Configuration avec la méthode SetConnection
Contexte
Dans cette section, vous allez apprendre à appliquer trois modifications (modification du nom du serveur, du nom
de la base de données et du paramètre de sécurité intégrée) à l'aide de la méthode SetConnection(). Cette
opération nécessite simplement une légère modification de l'instance ConnectionInfo.
Procédure
1.
Dans la méthode ConfigureCrystalReports(), après la ligne qui déclare et instancie la classe
ConnectionInfo, supprimez les lignes de code qui affectent les propriétés et ServerName, DatabaseName
et IntegratedSecurity.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
381
2.
Saisissez une nouvelle ligne de code contenant un appel à la méthode SetConnection() de l'instance
ConnectionInfo, en transmettant le nom du serveur, le nom de la base de données et le paramètre de
sécurité intégrée à cette méthode.
myConnectionInfo.SetConnection("DevDatabase", "Northwind", True)
connectionInfo.SetConnection("DevDatabase", "Northwind", true);
Résultats
Vous êtes maintenant prêt à générer et exécuter votre projet.
1.5.2.4
Tutoriel : Connexion à une base de données SQL
Server sécurisée avec un sous-rapport
Dans ce tutoriel, vous allez traiter un problème supplémentaire concernant la connexion à une base de données
SQL Server sécurisée : que faire si le rapport qui nécessite une connexion à une base de données SQL Server
sécurisée contient un sous-rapport ?
Introduction
Dans ce tutoriel, vous allez apprendre à remplir les conditions requises pour la connexion d'un sous-rapport.
Vous devez apporter deux modifications au projet créé dans le précédent tutoriel :
●
Vous ajoutez un sous-rapport au rapport d'origine.
Ce sous-rapport désigne la table Orders de la base de données Northwind. La table Orders est liée à la table
Customers utilisée par la clé externe CustomerID dans le tutoriel précédent.
●
Vous ajoutez une nouvelle méthode.
La méthode extrait les sous-rapports du rapport principal, puis transmet chaque sous-rapport à la méthode
d'assistance SetDBLogonForReport().
Vous pouvez également effectuer ce tutoriel en utilisant les classes du modèle d'objet CrystalReportViewer, bien
qu'il soit recommandé d'utiliser le modèle d'objet ReportDocument.
Pour créer ce tutoriel à l'aide du modèle d'objet CrystalReportViewer, voir Tutoriel : Connexion à une base de
données SQL Server sécurisée [page 244] à l'aide du modèle d'objet CrystalReportViewer.
382
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Exemple de code
Ce tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez les
instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir d'une
version terminée.
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les noms des
dossiers de chaque version d'exemple de code sont les suivants :
●
Site Web C# : CS_Web_RDObjMod_DBLogonSubrpt
●
Projet Windows C# : CS_Win_RDObjMod_DBLogonSubrpt
●
Site Web Visual Basic : VB_Web_RDObjMod_DBLogonSubrpt
●
Projet Windows Visual Basic : VB_Win_RDObjMod_DBLogonSubrpt
Informations associées
Répertoire d'exemples de rapports [page 15]
1.5.2.4.1
Ajout d'un sous-rapport au rapport d'origine
Pour commencer, vous ajoutez un sous-rapport au rapport d'origine.
1.5.2.4.1.1
Pour ajouter un sous-rapport
Procédure
1.
Ouvrez le projet que vous avez créé dans le tutoriel précédent Tutoriel : Connexion à une base de données SQL
Server sécurisée à l'aide de la sécurité intégrée [page 370].
2.
Dans l'Explorateur de solutions, cliquez deux fois sur le rapport NorthwindCustomers pour l'ouvrir.
3.
Cliquez avec le bouton droit de la souris sur la barre grise Détails et sélectionnez Insérer une section en
dessous.
4.
Cliquez avec le bouton droit de la souris sur la nouvelle section Détails b que vous avez créée, sélectionnez
Insérer, puis cliquez sur Sous-rapport.
Un carré gris encadre le curseur de la souris.
5.
Faites glisser le rectangle gris sur la nouvelle section Détails b, puis relâchez le bouton de la souris.
6.
Dans l'onglet Sous-rapport de la boîte de dialogue Insérer un sous-rapport, sélectionnez Créer un sous-rapport
à l'aide de l'Assistant de création de rapports.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
383
Remarque
La boîte de dialogue Insérer un sous-rapport inclut d'autres options permettant de sélectionner un rapport
existant et des sous-rapports à la demande. Pour en savoir plus sur ces fonctionnalités, voir Onglet Sousrapport (boîte de dialogue Insérer un sous-rapport) [page 939].
7.
Dans le champ Nom du nouveau rapport, saisissez "CustomerOrders".
8.
Cliquez sur Assistant de création de rapports...
9.
Dans le panneau Sources de données disponibles de la boîte de dialogue Assistant de création de rapports
standard, développez le dossier Créer une nouvelle connexion.
10. Développez le dossier OLE DB (ADO).
Le dossier contient le serveur de base de données qui a été configuré pour le rapport lorsque ce dernier a été
créé.
Remarque
Si le serveur ne s'affiche pas, suivez les instructions du tutoriel précédent pour vous connecter à la base de
données SQL Server.
11. Développez les nœuds Northwind, dbo et Tables.
12. Sélectionnez la table Commandes et cliquez sur le bouton > pour la déplacer dans le panneau Tables
sélectionnées, puis cliquez sur Suivant.
13. Dans le panneau Champs disponibles, sélectionnez Order ID, Order Date, Shipped Date et Ship Name.
14. Cliquez sur le bouton > pour déplacer ces champs dans le panneau Champs à afficher, puis cliquez sur
Terminer.
15. Dans la boîte de dialogue Insérer un sous-rapport, sélectionnez l'onglet Mise en relation.
16. Dans la liste Champs disponibles du panneau Champs du rapport principal à mettre en relation, développez la
table Customers, sélectionnez CustomerID, puis cliquez sur le bouton >.
17. Dans le panneau Mise en relation du champ Customers.CustomerID qui s'affiche, laissez les sélections par
défaut.
Ces sélections de paramètres et de données génèrent automatiquement une relation entre le rapport
principal et le sous-rapport.
18. Cliquez sur OK.
Le nouveau sous-rapport, CustomerOrders, s'affiche dans la section Détails b du rapport principal.
Remarque
Lorsque vous ajoutez un sous-rapport à la section Détails, le sous-rapport s'affiche pour chaque ligne, ce
qui influe sur les performances du rapport. Si vous ne souhaitez pas obtenir des informations aussi
détaillées, placez le sous-rapport dans une section Groupe plutôt qu'une section Détails.
Résultats
Vous pouvez à présent vérifier les paramètres du sous-rapport.
384
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.2.4.1.2
Pour vérifier les paramètres du sous-rapport
Procédure
1.
Dans la section Détails du rapport, cliquez deux fois sur le sous-rapport CustomerOrders pour l'afficher.
Des boutons de navigation apparaissent au bas de la fenêtre du concepteur à la fois pour le rapport principal
et le sous-rapport CustomerOrders.
2.
Si l'Explorateur de champs n'est pas visible, cliquez sur Activer/Désactiver l'affichage du champ dans la barre
d'outils Crystal Reports.
Remarque
Vous pouvez également afficher l'Explorateur de champs en ouvrant le menu Crystal Reports, puis en
cliquant sur Explorateur de champs.
3.
Dans l'Explorateur de champs, développez Champs de paramètre.
4.
Vérifiez que le champ de paramètre Pm-Customers.CustomerID a été automatiquement généré lorsque le
sous-rapport a été relié.
5.
Dans la barre d'outils, cliquez sur Expert Sélection.
6.
Dans la boîte de dialogue Expert Sélection, vérifiez que le critère Orders.CustomerID est égal à {?PmCustomers.CustomerID} est défini, puis cliquez sur OK.
7.
Dans le menu Fichier, sélectionnez Enregistrer tout.
Résultats
Vous avez réussi à ajouter un sous-rapport CustomerOrders au rapport NorthwindCustomers. Dans la section
suivante, vous allez ajouter un code permettant de définir les informations de connexion à la base de données SQL
Server sécurisée pour tous les sous-rapports présents dans le rapport principal.
1.5.2.4.2
Ajout du code de connexion au sous-rapport
Vous allez à présent ajouter le code de connexion du sous-rapport à la classe code-behind. Vous commencez par
créer une méthode d'assistance privée nommée SetDBLogonForSubreports().
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
385
1.5.2.4.2.1
Pour créer et coder la méthode
SetDBLogonForSubreports()
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
A la fin de la classe, créez une méthode privée nommée SetDBLogonForSubreports() avec deux
paramètres : ConnectionInfo et ReportDocument.
Private Sub SetDBLogonForSubreports(ByVal myConnectionInfo As ConnectionInfo,
ByVal myReportDocument As ReportDocument)
End Sub
private void SetDBLogonForSubreports(ConnectionInfo connectionInfo,
ReportDocument reportDocument)
{
}
4.
Dans cette méthode, extrayez l'instance Section de la propriété Sections de la propriété ReportDefinition
du paramètre ReportDocument.
Remarque
Sections est une classe indexée contenant des instances de la classeSection.
Dim mySections As Sections = myReportDocument.ReportDefinition.Sections
Sections sections = reportDocument.ReportDefinition.Sections;
5.
Créez une boucle foreach qui effectue une boucle sur chaque instance Section de l'instance de classe
indexée Sections.
For Each mySection As Section In mySections
Next
foreach(Section section in sections)
{
}
6.
Dans la boucle foreach, extrayez l'instance ReportObjects de la propriété ReportObjects de l'instance
Section.
Dim myReportObjects As ReportObjects = mySection.ReportObjects
386
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
ReportObjects reportObjects = section.ReportObjects;
7.
Dans chaque boucle foreach, créez une boucle foreach imbriquée qui effectue une boucle sur chaque
instance ReportObject de l'instance de classe indexée ReportObjects.
For Each myReportObject As ReportObject In myReportObjects
Next
foreach(ReportObject reportObject in reportObjects)
{
}
8.
Dans la boucle foreach imbriquée, créez un bloc conditionnel qui vérifie si la propriété Kind de l'instance
ReportObject équivaut à la sélection SubreportObject de l'énumération ReportObjectKind.
If myReportObject.Kind = ReportObjectKind.SubreportObject Then
End If
if(reportObject.Kind == ReportObjectKind.SubreportObject)
{
}
9.
Dans le bloc conditionnel, effectuez un cast de l'instance ReportObject en instance SubreportObject.
Dim mySubreportObject As SubreportObject = CType(myReportObject, SubreportObject)
SubreportObject subreportObject = (SubreportObject)reportObject;
10. Toujours dans le bloc conditionnel, déclarez une nouvelle instance de ReportDocument sous la forme d'une
variable subReportDocument et remplissez-la en appelant la méthode OpenSubreport() de l'instance
SubreportObject.
Dim subReportDocument As ReportDocument =
mySubreportObject.OpenSubreport(mySubreportObject.SubreportName)
ReportDocument subReportDocument =
subreportObject.OpenSubreport(subreportObject.SubreportName);
11. Dans le bloc conditionnel, appelez la méthode SetDBLogonForReport() d'origine et transmettez-lui le
paramètre ConnectionInfo et la nouvelle variable subReportDocument.
SetDBLogonForReport(myConnectionInfo, subReportDocument)
SetDBLogonForReport(connectionInfo, subReportDocument);
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
387
1.5.2.4.2.2
Pour modifier la méthode
ConfigureCrystalReports() selon le code de connexion à la base
de données des sous-rapports
Contexte
Cette procédure a créé une méthode permettant d'extraire tous les sous-rapports possibles sous forme
d'instances ReportDocument. Chaque instance ReportDocument de sous-rapport est ensuite transmise à la
méthode d'origine afin de définir la connexion à une base de données SQL Server sécurisée.
Cependant, vous devez maintenant modifier la méthode ConfigureCrystalReports() pour désigner cette
méthode et permettre le traitement des informations de connexion à la base de données des sous-rapports.
Procédure
1.
Dans la méthode ConfigureCrystalReports(), créez plusieurs sauts de ligne dans le code au-dessus de
la ligne qui lie le rapport au contrôle CrystalReportViewer.
2.
Dans les sauts de ligne, saisissez un appel à la méthode SetDBLogonForSubreports() en transmettant
l'instance ConnectionInfo et le rapport NorthwindCustomers.
SetDBLogonForSubreports(myConnectionInfo, northwindCustomersReport)
SetDBLogonForSubreports(connectionInfo, northwindCustomersReport);
1.5.2.4.2.3
Pour tester le chargement du rapport
NorthwindCustomers
Contexte
Cette procédure est suivie du code d'origine qui lie le rapport au contrôle CrystalReportViewer.
Vous êtes maintenant prêt à générer et exécuter votre projet. Le chargement du rapport et de son sous-rapport
ne devrait poser aucun problème, car le code permettant de connecter n'importe quel sous-rapport à la base de
données est maintenant écrit.
Procédure
1.
388
Dans le menu Générer, sélectionnez Générer la solution.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport NorthwindCustomers et son nouveau sous-rapport CustomerOrders s'affichent correctement.
4.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.2.5
Tutoriel : Lecture et définition des paramètres
discrets
Dans ce tutoriel, vous allez apprendre à créer un rapport dont les données peuvent être filtrées en fonction d'un
paramètre discret.
Introduction
Un paramètre discret est une valeur unique alors qu'un paramètre de plage fait référence à une plage de valeurs.
Les éléments textuels (tels que les villes) sont généralement accessibles via des paramètres discrets. Les
éléments numériques (tels que les salaires des employés) sont généralement accessibles via des paramètres de
plage.
Dans ce tutoriel, vous allez définir une valeur de paramètre discret afin d'afficher un rapport sur les clients basé
sur un champ. Ce rapport affiche uniquement les clients vivant dans les villes sélectionnées dans une liste de
villes. Cette liste provient des valeurs par défaut du paramètre Ville. Les valeurs par défaut du paramètre Ville sont
encapsulées dans le rapport.
Créez tout d'abord un rapport sur les clients avec un paramètre de ville. Les données du rapport proviennent de
l'exemple de base de données fourni avec SAP Crystal Reports, version développeur pour Microsoft Visual Studio.
Lorsque vous instanciez le rapport dans le code, vous créez une instance ArrayList contenant des noms de ville
(Paris, Tokyo), puis transmettez cette instance à une méthode d'assistance qui définit ces noms de ville comme
les valeurs actuelles du paramètre Ville. Vous liez ensuite le rapport au contrôle CrystalReportViewer et seuls les
clients vivant à Paris ou à Tokyo sont affichés dans ce rapport.
Dans la partie suivante du tutoriel, vous allez effectuer les opérations suivantes :
●
Créer une méthode qui extrait toutes les valeurs par défaut et les renvoie dans une instance ArrayList.
●
Ajouter un contrôle ListBox au formulaire et le remplir avec les valeurs provenant de l'ArrayList.
●
Ajouter un contrôle Button pour réafficher le rapport en fonction des sélections ListBox.
Dans la dernière partie du tutoriel, vous coderez l'événement de clic pour extraire les éléments sélectionnés à
partir du contrôle ListBox et définir les valeurs actuelles du paramètre Ville. Le rapport est réaffiché, indiquant
uniquement les clients qui vivent dans les villes sélectionnées dans le contrôle ListBox.
Ce tutoriel peut également être effectué avec des classes du modèle d'objet CrystalReportViewer, bien qu'il soit
recommandé d'utiliser le modèle d'objet ReportDocument.
Pour créer ce tutoriel à l'aide du modèle d'objet CrystalReportViewer, voir Tutoriel : Connexion à une base de
données SQL Server sécurisée [page 244] à l'aide du modèle d'objet CrystalReportViewer.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
389
Exemple de code
Ce tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez les
instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir d'une
version terminée.
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les noms des
dossiers de chaque version d'exemple de code sont les suivants :
●
Site Web C# : CS_Web_RDObjMod_Parameters
●
Projet Windows C# : CS_Win_RDObjMod_Parameters
●
Site Web Visual Basic : VB_Web_RDObjMod_Parameters
●
Projet Windows Visual Basic : VB_Win_RDObjMod_Parameters
Base de données Xtreme
Ce tutoriel utilise un exemple de base de données appelée Xtreme. Le fichier de base de données xtreme.mdb est
fourni dans le package d'exemples de code du SDK de SAP Crystal Reports .NET. Pour utiliser la base de données
Xtreme, vous devez créer manuellement une connexion ODBC à cette base de données.
Informations associées
Choisir le modèle d'objet correct pour votre projet [page 32]
Répertoire d'exemples de rapports [page 15]
1.5.2.5.1
Création d'un rapport avec des paramètres
Commencez par créer un rapport à partir des informations de la base de données Xtreme.
1.5.2.5.1.1
Pour créer un rapport avec des paramètres
Procédure
1.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du projet affiché en gras,
pointez sur Ajouter, puis cliquez sur Nouvel élément.
2.
Dans la boîte de dialogue Ajouter un nouvel élément, dans la vue Modèles, sélectionnez le modèle Rapport
Crystal.
3.
Dans le champ Nom, saisissez le nom CustomersByCity.rpt, puis cliquez sur Ajouter.
390
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
4.
Dans le panneau Créer un document de rapport Crystal de la boîte de dialogue Galerie de rapports Crystal,
sélectionnez en utilisant l' Assistant de création de rapports.
5.
Dans le panneau Choisir un expert, sélectionnez Standard, puis cliquez sur OK.
6.
Dans le panneau Sources de données disponibles de la fenêtre Assistant de création de rapports standard,
développez le dossier Créer une nouvelle connexion.
Remarque
Dans SAP Visual Studio .NET 2003, l'application SAP Crystal Reports n'a pas été mise à niveau vers la
version complète et le dossier Créer une nouvelle connexion n'existe pas ; le contenu est indiqué au niveau
supérieur.
7.
Dans le sous-dossier qui s'ouvre, développez le dossier ODBC (RDO).
8.
Dans la fenêtre ODBC (RDO), sélectionnez l'entrée DSN ODBC correspondant à la base de données Xtreme,
puis cliquez sur Terminer.
Le dossier ODBC (RDO) se développe pour afficher la base de données Xtreme.
9.
Développez le nœud Tables et sélectionnez la table Clients.
10. Cliquez deux fois sur la table Clients pour l'ajouter au panneau Tables sélectionnées, puis cliquez sur Suivant.
11. Développez la table Clients, puis utilisez la combinaison de touches CTRL-clic pour sélectionner les champs
Nom du client, Titre, Adresse 1, Nom du contact et Ville.
12. Cliquez sur le bouton > pour déplacer ces champs dans le panneau Champs à afficher, puis cliquez sur le
bouton Suivant.
13. Dans le panneau Champs disponibles, sous Champs du rapport, sélectionnez Clients.Ville, cliquez sur le
bouton > pour déplacer le champ dans le panneau Regrouper par, puis cliquez sur Terminer.
Le rapport CustomersByCity est créé et chargé dans la fenêtre principale de Visual Studio.
Résultats
Vous êtes maintenant prêt à ajouter un paramètre appelé Ville et à le remplir avec des valeurs par défaut.
1.5.2.5.1.2
Pour ajouter un paramètre Ville
Contexte
L'Explorateur de champs doit être visible, car il permet d'accéder à plusieurs fonctions du rapport, notamment
aux paramètres.
Procédure
1.
Si l'Explorateur de champs n'est pas visible, cliquez sur Activer/Désactiver l'affichage du champ dans la barre
d'outils Crystal Reports.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
391
Remarque
Vous pouvez également afficher l'Explorateur de champs en ouvrant le menu Crystal Reports, puis en
cliquant sur Explorateur de champs.
2.
Dans l'Explorateur de champs, cliquez avec le bouton droit de la souris sur Champs de paramètre, puis
sélectionnez Nouveau.
3.
Dans la boîte de dialogue Créer un champ de paramètre :
a) Attribuez à Nom la valeur Ville.
b) Attribuez à Type la valeur Chaîne. Attribuez à Texte de l'invite la valeur Sélectionnez une ou
plusieurs villes.
c) Attribuez à Champ de valeur la valeur Ville.
d) Cliquez sur Actions, puis sélectionnez Ajouter toutes les valeurs de la base de données. La liste complète
des villes apparaît dans le volet du milieu.
e) Dans le volet Options de valeur, attribuez à Texte de l'invite la valeur Sélectionnez une ou
plusieurs villes.
f)
Dans ce même volet, attribuez à Autoriser plusieurs valeurs la valeur True.
g) Attribuez à Autoriser les valeurs discrètes la valeur True.
4.
Cliquez sur OK pour fermer la boîte de dialogue Créer un champ de paramètre.
Résultats
Vous venez de définir les valeurs par défaut de sorte qu'elles contiennent une liste importante de villes. Plus loin
dans ce tutoriel, vous accéderez par programmation à cette même liste de valeurs par défaut, via la propriété
DefaultValues de la classe ParameterFieldDefinition.
Vous devez maintenant utiliser l'Expert Sélection pour définir une formule permettant de connecter la colonne
Ville de la base de données au champ de paramètre Ville que vous venez de créer.
1.5.2.5.1.3
Pour connecter le paramètre Ville à la colonne
Ville de la base de données
Procédure
1.
Dans la barre d'outils Crystal Reports, cliquez sur Expert Sélection.
2.
Dans la boîte de dialogue Choisir un champ, sous Champs du rapport, sélectionnez Clients.Ville, puis cliquez
sur OK.
3.
Dans la boîte de dialogue Expert Sélection, dans l'onglet Clients.Ville, choisissez est égal à dans la liste
déroulante.
4.
Dans la nouvelle liste déroulante qui s'affiche à droite, sélectionnez le premier élément de la liste, {?Ville}, puis
cliquez sur OK.
392
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Remarque
Cette sélection, {?Ville}, correspond au paramètre Ville que vous avez créé précédemment.
5.
Dans le menu Fichier, sélectionnez Enregistrer tout.
Résultats
Vous êtes maintenant prêt à lier le rapport au contrôle CrystalReportViewer et à définir le paramètre Ville avec
deux valeurs d'origine, Paris et Tokyo.
1.5.2.5.2
Liaison du rapport
Lorsque vous avez suivi les instructions de la procédure Configuration d'un projet [page 15] en préparation de ce
tutoriel, vous avez placé un contrôle CrystalReportViewer sur le Web Form ou le Windows Form. Aux étapes
précédentes, vous avez ajouté un rapport CustomerByCity au projet.
Dans cette section, vous allez instancier le rapport CustomersByCity et le lier au contrôle CrystalReportViewer.
Vous allez ensuite vérifier si le rapport s'affiche correctement lorsque les valeurs actuelles n'ont pas été définies
pour ce paramètre.
Vous pouvez instancier et lier le rapport de deux façons :
●
En tant que rapport incorporé.
●
En tant que rapport non incorporé.
Choisissez l'une des deux (mais pas les deux) procédures ci-dessous.
●
Si vous utilisez des rapports incorporés, effectuez la procédure suivante afin d'instancier le rapport sous
forme de rapport incorporé.
●
Si vous utilisez des rapports non incorporés, effectuez la seconde procédure afin d'instancier le rapport sous
forme de rapport non incorporé.
1.5.2.5.2.1
Pour instancier le rapport CustomersByCity sous
forme de rapport incorporé et le lier au contrôle
CrystalReportViewer
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code pour afficher la classe code-behind du Web Form ou du Windows
Form.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
393
3.
Ajoutez une nouvelle déclaration de niveau classe pour la classe wrapper du rapport CustomersByCity, avec
la variable customersByCityReport. Définissez le modificateur d'accès à private.
Private customersByCityReport As CustomersByCity
private CustomersByCity customersByCityReport;
4.
Dans la méthode ConfigureCrystalReports(), instanciez la classe wrapper du rapport.
Remarque
Vous avez créé la méthode ConfigureCrystalReports() dans Configuration d'un projet [page 15].
customersByCityReport = New CustomersByCity()
customersByCityReport = new CustomersByCity();
5.
Sur la ligne suivante, au-dessous de l'instanciation du rapport, liez la propriété ReportSource du contrôle
CrystalReportViewer à la classe de rapport instanciée (nom de la variable : customersByCityReport).
myCrystalReportViewer.ReportSource = customersByCityReport
crystalReportViewer.ReportSource = customersByCityReport;
Remarque
L'instance du contrôle CrystalReportViewer est accessible dans le code, car vous avez ajouté le contrôle à
votre Web Form ou Windows Form. Si IntelliSense ne reconnaît pas l'instance du contrôle
CrystalReportViewer, vérifiez que le contrôle CrystalReportViewer a été ajouté sous la forme d'une
déclaration de niveau classe à cette classe code-behind.
1.5.2.5.2.2
Pour instancier le rapport CustomersByCity sous
forme de rapport non incorporé et le lier au contrôle
CrystalReportViewer
Contexte
Vous êtes maintenant prêt à générer et exécuter votre projet. Le chargement du rapport doit échouer, car le code
permettant de définir une valeur pour le champ de paramètre Ville n'a pas encore été écrit.
394
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Ajoutez une nouvelle déclaration de niveau classe pour la classe wrapper du rapport ReportDocument, avec la
variable customersByCityReport. Définissez le modificateur d'accès à private.
Private customersByCityReport As ReportDocument
private ReportDocument customersByCityReport;
Remarque
La classe ReportDocument est un membre de l'espace de noms CrystalDecisions.CrystalReports.Engine.
Vous avez ajouté une déclaration "Imports" [Visual Basic] ou "using" [C#] pour cet espace de
noms dans la section Configuration d'un projet [page 15]. Lorsque vous instanciez ReportDocument et
chargez un rapport dans l'espace de noms, vous accédez au rapport via le SDK sans l'incorporer.
4.
Dans la méthode ConfigureCrystalReports() (que vous avez créée dans l'une des procédures de la
section Configuration d'un projet [page 15]), instanciez la classe ReportDocument.
customersByCityReport = New ReportDocument()
customersByCityReport = new ReportDocument();
5.
Déclarez une variable chaîne, nommez-la reportPath et affectez-lui un chemin d'accès au rapport local au
moment de l'exécution. Ce chemin est déterminé différemment selon qu'il s'agit d'un site Web ou d'un projet
Windows :
○
Pour un site Web, transmettez le nom du fichier de rapport local sous forme de paramètre de type chaîne
dans la méthode Server.MapPath(). Ceci permet d'associer le rapport local au chemin d'accès du
répertoire de fichiers du disque dur au moment de l'exécution.
Dim reportPath As String = Server.MapPath("CustomersByCity.rpt")
string reportPath = Server.MapPath("CustomersByCity.rpt");
○
Pour un projet Windows, concaténez la propriété Application.StartupPath avec une barre oblique
inverse et le nom du fichier de rapport local. Ceci permet d'associer le rapport au même répertoire que
celui du fichier exécutable Windows.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
395
Remarque
Au moment de la compilation, vous copierez le rapport dans le répertoire contenant le fichier
exécutable.
Dim reportPath As String = Application.StartupPath & "\" &
"CustomersByCity.rpt"
string reportPath = Application.StartupPath + "\\" + "CustomersByCity.rpt";
6.
Appelez la méthode Load() de l'instance ReportDocument et transmettez-lui la variable chaîne reportPath.
customersByCityReport.Load(reportPath)
customersByCityReport.Load(reportPath);
7.
Sur la ligne suivante, sous le chargement du rapport, liez la propriété ReportSource du contrôle
CrystalReportViewer à l'instance ReportDocument.
myCrystalReportViewer.ReportSource = customersByCityReport
crystalReportViewer.ReportSource = customersByCityReport;
Résultats
Que vous ayez choisi d'instancier une classe de rapport incorporé ou une classe de rapport non incorporé via la
classe ReportDocument, le nom de la variable utilisée est identique : customersByCityReport. Vous pouvez ainsi
utiliser un bloc de code commun dans les procédures suivantes.
Vous êtes maintenant prêt à générer et exécuter votre projet. Le chargement du rapport doit échouer, car le code
permettant de définir une valeur pour le champ de paramètre Ville n'a pas encore été écrit. Vous ajouterez une
valeur au paramètre Ville plus loin dans ce tutoriel.
1.5.2.5.2.3
Pour tester le chargement du rapport
CustomersByCity
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
396
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
3.
Si vous utilisez un rapport non incorporé dans un projet Windows, recherchez l'exécutable Windows compilé
dans le sous-répertoire \bin\ [Visual Basic] ou \bin\debug\ [C#], puis copiez le rapport dans ce
sous-répertoire.
Remarque
Pour que le rapport non incorporé soit chargé par l'exécutable Windows au moment de l'exécution, le
rapport doit être stocké dans le même répertoire que l'exécutable Windows.
4.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport CustomersByCity ne s'affiche pas. Il s'affiche après que vous avez ajouté une valeur au paramètre
Ville plus loin dans ce tutoriel.
Remarque
Les résultats peuvent varier selon la version de SAP Crystal Reports utilisée. Dans les versions plus
récentes, un formulaire s'affiche vous demandant de fournir des valeurs de paramètre pour ce rapport.
Dans les versions antérieures, une exception "Valeur actuelle du champ de paramètre introuvable" est
renvoyée. Dans les deux cas, vous devez ajouter du code supplémentaire pour créer une application
entièrement fonctionnelle.
5.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.2.5.3
Définition manuelle des paramètres dans le code
Vous êtes maintenant prêt à créer deux valeurs ("Paris" et "Tokyo") dans le champ de paramètre Ville du rapport
CustomersByCity.
Cette opération nécessite un code qui peut être décomposé selon les processus suivants :
●
Une constante PARAMETER_FIELD_NAME est nécessaire pour contenir le champ de paramètre "Ville", qui
est utilisé plusieurs fois dans l'ensemble du code.
●
Le code permettant d'ajouter les valeurs actuelles au paramètre étant généralement utilisé dans deux
emplacements différents dans ce tutoriel, il est préférable de créer ce code en tant que méthode d'assistance
distincte.
●
Dans la méthode ConfigureCrystalReports(), vous devez ajouter les paramètres "Paris" et "Tokyo" à
une instance ArrayList, puis transmettre le rapport et l'instance à la méthode d'assistance pour le traitement.
Dans la section suivante, vous allez apprendre à extraire les valeurs par défaut du champ de paramètre et à définir
ces valeurs dans un contrôle ListBox. Ces valeurs seront utilisées à la fin du tutoriel pour sélectionner de façon
dynamique de nouvelles villes et filtrer le rapport en fonction des nouvelles villes sélectionnées.
Effectuez maintenant la procédure Création d'un contrôle ListBox qui affiche les paramètres par défaut [page
402].
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
397
1.5.2.5.3.1
Pour créer une constante
PARAMETER_FIELD_NAME
Procédure
1.
Revenez à la classe code-behind de ce Web Form ou Windows Form.
2.
Au niveau de la classe, créez une constante chaîne, PARAMETER_FIELD_NAME, et attribuez-lui la valeur
"Ville".
Private Const PARAMETER_FIELD_NAME As String = "City"
private const string PARAMETER_FIELD_NAME = "City";
1.5.2.5.3.2
Pour créer une méthode d'assistance permettant
d'ajouter les valeurs actuelles au paramètre dans le rapport
Contexte
Vous êtes maintenant prêt à créer la méthode d'assistance qui permet d'ajouter les valeurs actuelles au
paramètre dans le rapport.
Procédure
1.
Revenez à la classe code-behind de ce Web Form ou Windows Form.
2.
Au-dessus de la signature de classe, ajoutez une déclaration "Imports" [Visual Basic] ou "using"
[C#] au début de la classe de l'espace de noms System.Collections (si cet espace de noms n'a pas déjà été
déclaré).
Imports System.Collections
using System.Collections;
Remarque
Cette déclaration est nécessaire pour accéder à la classe ArrayList.
3.
398
Dans la partie inférieure de la classe, créez une méthode privée nommée
SetCurrentValuesForParameterField() avec deux variables dans la signature de la méthode.
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Remarque
Plus loin dans ce tutoriel, si vous avez utilisé un rapport incorporé, vous transmettez votre classe de
rapport incorporé au paramètre de la méthode ReportDocument. Cette possibilité s'explique par le fait que
Toutes les classes de rapport incorporé présentes dans SAP Crystal Reports héritent de la classe de base
ReportDocument.
Private Sub SetCurrentValuesForParameterField(ByVal myReportDocument As
ReportDocument, ByVal myArrayList As ArrayList)
End Sub
private void SetCurrentValuesForParameterField(ReportDocument reportDocument,
ArrayList arrayList)
{
}
4.
Dans cette méthode, déclarez et instanciez la classe indexée ParameterValues en tant que variable
currentParameterValues.
Remarque
Pour que la classe ParameterValues soit accessible, vous devez avoir inclus une déclaration "Imports"
[Visual Basic] ou "using" [C#] dans la partie supérieure de la classe code-behind pour l'espace de
noms CrystalDecisions.Shared. (Vous avez ajouté cette déclaration dans la procédure Configuration d'un
projet [page 15].)
Dim currentParameterValues As ParameterValues = New ParameterValues()
ParameterValues currentParameterValues = new ParameterValues();
5.
Créez une boucle foreach pour extraire toutes les valeurs envoyées (comme type Objet) de l'instance
ArrayList.
Remarque
Dans cette méthode, vous extrayez les valeurs d'ArrayList. Par la suite, vous écrirez du code permettant
d'ajouter des valeurs à l'ArrayList.
For Each submittedValue As Object In myArrayList
Next
foreach(object submittedValue in arrayList)
{
}
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
399
6.
Dans la boucle foreach, déclarez et instanciez la classe ParameterDiscreteValue.
Dim myParameterDiscreteValue As ParameterDiscreteValue = New
ParameterDiscreteValue()
ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue();
7.
Dans la boucle foreach, convertissez la valeur envoyée en chaîne et transmettez-la à la propriété Value de
l'instance ParameterDiscreteValue.
myParameterDiscreteValue.Value = submittedValue.ToString()
parameterDiscreteValue.Value = submittedValue.ToString();
8.
Dans la boucle foreach, ajoutez l'instance ParameterDiscreteValue dans la classe indexée
currentParameterValues.
currentParameterValues.Add(myParameterDiscreteValue)
currentParameterValues.Add(parameterDiscreteValue);
L'écriture de code dans la boucle foreach est à présent terminée. Vous placez le code restant (à l'aide des
étapes suivantes) après la boucle foreach.
9.
En dehors de la boucle foreach, extrayez la classe indexée ParameterFieldDefinitions provenant de la
propriété DataDefinition de l'instance ReportDocument.
Dim myParameterFieldDefinitions As ParameterFieldDefinitions =
myReportDocument.DataDefinition.ParameterFields
ParameterFieldDefinitions parameterFieldDefinitions =
reportDocument.DataDefinition.ParameterFields;
10. Extrayez l'instance ParameterFieldDefinition de la classe indexée ParameterFieldDefinitions qui se base sur
l'entrée d'index de la constante PARAMETER_FIELD_NAME.
Dim myParameterFieldDefinition As ParameterFieldDefinition =
myParameterFieldDefinitions(PARAMETER_FIELD_NAME)
ParameterFieldDefinition parameterFieldDefinition =
parameterFieldDefinitions[PARAMETER_FIELD_NAME];
11. Transmettez l'instance currentParameterValues à la méthode ApplyCurrentValues de l'instance
ParameterFieldDefinition.
myParameterFieldDefinition.ApplyCurrentValues(currentParameterValues)
400
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
parameterFieldDefinition.ApplyCurrentValues(currentParameterValues);
1.5.2.5.3.3
Pour appeler la méthode
SetCurrentValuesForParameterField () avant la liaison du
rapport au contrôle CrystalReportViewer
Contexte
Cette procédure a permis de créer une méthode qui extrait les valeurs envoyées d'une instance ArrayList et les
place comme valeurs actuelles dans une instance ParameterFieldDefinition. Vous devez maintenant appeler cette
méthode avant que votre rapport ne soit lié au contrôle CrystalReportViewer afin que le rapport sache qu'il
dispose de paramètres.
Procédure
1.
Dans la méthode ConfigureCrystalReports(), créez plusieurs sauts de ligne dans le code au-dessus de
la ligne qui lie le rapport au contrôle CrystalReportViewer.
Dans ces sauts de ligne, vous pouvez saisir du code supplémentaire qui modifie le rapport avant qu'il ne soit
lié au visualiseur.
2.
Dans les sauts de lignes, déclarez et instanciez une ArrayList.
Dim myArrayList As ArrayList = New ArrayList()
ArrayList arrayList = new ArrayList();
3.
Ajoutez les noms de ville "Paris" et "Tokyo" comme chaînes à l'instance ArrayList.
myArrayList.Add("Paris")
myArrayList.Add("Tokyo")
arrayList.Add("Paris");
arrayList.Add("Tokyo");
4.
Appelez la méthode SetCurrentValuesForParameterField(), puis transmettez l'instance
CustomersByCityReport et l'instance ArrayList.
SetCurrentValuesForParameterField(customersByCityReport,
myArrayList)
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
401
SetCurrentValuesForParameterField(customersByCityReport,
arrayList);
1.5.2.5.3.4
Pour tester le chargement du rapport
CustomersByCity
Contexte
La dernière ligne de code de la méthode lie le rapport au contrôle CrystalReportViewer.
Vous êtes maintenant prêt à générer et exécuter votre projet. Le rapport doit s'afficher correctement, car le code
définissant les valeurs actuelles dans le champ de paramètre est désormais écrit.
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport CustomersByCity s'affiche correctement, indiquant des listes de clients à Paris et à Tokyo.
4.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.2.5.4
Création d'un contrôle ListBox qui affiche les
paramètres par défaut
Le reste du tutoriel concerne l'affichage de la liste complète des valeurs par défaut du champ de paramètre dans
un contrôle ListBox et le refiltrage du contenu du rapport en fonction des sélections effectuées à partir du
contrôle ListBox.
Dans cette section, vous allez apprendre à remplir le contrôle ListBox à partir des valeurs par défaut du champ de
paramètre.
Remarque
N'oubliez pas que vous avez défini les valeurs par défaut, une liste importante de villes, lors de la création du
rapport au début de ce tutoriel.
Pour ce faire, vous devez ajouter et configurer un contrôle ListBox, puis créer une méthode d'assistance pour
remplir ce contrôle.
402
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.2.5.4.1
Pour créer et configurer un contrôle ListBox sur
le formulaire
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Si vous développez un site Web, procédez comme suit :
○
Cliquez sur le contrôle CrystalReportViewer pour le sélectionner.
○
Appuyez sur la FLECHE GAUCHE du clavier afin de faire apparaître un curseur clignotant, puis appuyez
sur ENTREE.
Le contrôle CrystalReportViewer descend d'une ligne.
4.
Si vous développez un projet Windows, procédez comme suit :
○
Cliquez sur le contrôle CrystalReportViewer pour le sélectionner.
○
Dans la fenêtre Propriétés, attribuez à la propriété Dock la valeur "Bottom".
Remarque
Dans Visual Studio, lorsque vous sélectionnez la propriété Dock, un cadre apparaît à la place d'une liste
d'options. Sélectionnez la partie du cadre correspondant à "Bottom".
5.
○
Redimensionnez le Windows Form et le contrôle CrystalReportViewer de manière à ce que ce dernier soit
suffisamment grand pour afficher le rapport. Laissez de l'espace au-dessus du contrôle
CrystalReportViewer pour ajouter un contrôle ListBox.
○
Dans la fenêtre Propriétés, attribuez à la propriété Anchor la valeur "Top, Bottom, Left, Right".
○
Redimensionnez le Windows Form et le contrôle CrystalReportViewer de manière à ce que ce dernier soit
suffisamment grand pour afficher le rapport. Laissez de l'espace au-dessus du contrôle
CrystalReportViewer pour ajouter un contrôle ListBox.
Dans la boîte à outils, faites glisser un contrôle ListBox au-dessus du contrôle CrystalReportViewer.
Remarque
Si une tâche guidée apparaît dans le contrôle ListBox (dans Visual Studio), appuyez sur Echap pour la
fermer.
6.
Cliquez sur le contrôle ListBox pour le sélectionner.
7.
Dans la fenêtre Propriétés :
8.
○
Attribuez à ID ou Name la valeur "defaultParameterValuesList".
○
Attribuez à SelectionMode la valeur "Multiple" (ou "MultiExtended" dans un projet Windows).
Dans le menu Fichier, sélectionnez Enregistrer tout.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
403
Résultats
Vous êtes maintenant prêt à créer une méthode d'assistance qui extrait les valeurs par défaut du champ de
paramètre.
1.5.2.5.4.2
Pour créer une méthode d'assistance qui extrait
les valeurs par défaut du champ de paramètre
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Dans la partie inférieure de la classe, créez une méthode privée nommée
GetDefaultValuesFromParameterField() qui renvoie une instance ArrayList, en transmettant
ReportDocument dans la signature de la méthode.
Private Function GetDefaultValuesFromParameterField(ByVal myReportDocument As
ReportDocument) As ArrayList
End Function
private ArrayList GetDefaultValuesFromParameterField(ReportDocument
reportDocument)
{
}
4.
Dans la méthode GetDefaultValuesFromParameterField(), extrayez la classe indexée
ParameterFieldDefinitions provenant de la propriété DataDefinition de l'instance ReportDocument.
Dim myParameterFieldDefinitions As ParameterFieldDefinitions =
myReportDocument.DataDefinition.ParameterFields
ParameterFieldDefinitions parameterFieldDefinitions =
reportDocument.DataDefinition.ParameterFields;
5.
Extrayez l'instance ParameterFieldDefinition de la classe indexée ParameterFieldDefinitions, basée sur
l'entrée d'index de la constante PARAMETER_FIELD_NAME.
Dim myParameterFieldDefinition As ParameterFieldDefinition =
myParameterFieldDefinitions(PARAMETER_FIELD_NAME)
ParameterFieldDefinition parameterFieldDefinition =
parameterFieldDefinitions[PARAMETER_FIELD_NAME];
404
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
6.
Extrayez une classe indexée ParameterValues (en tant que variable defaultParameterValues) de la propriété
DefaultValues de l'instance ParameterFieldDefinition.
Dim defaultParameterValues As ParameterValues =
myParameterFieldDefinition.DefaultValues
ParameterValues defaultParameterValues = parameterFieldDefinition.DefaultValues;
7.
Déclarez et instanciez une ArrayList.
Dim myArrayList As ArrayList = New ArrayList()
ArrayList arrayList = new ArrayList();
8.
Créez une boucle foreach pour extraire chaque instance ParameterValue de la variable
defaultParameterValues.
For Each myParameterValue As ParameterValue In defaultParameterValues
Next
foreach(ParameterValue parameterValue in defaultParameterValues)
{
}
Dans la boucle foreach, créez maintenant un bloc conditionnel imbriqué qui recherche des valeurs de
paramètre discret (par opposition aux valeurs de paramètre de plage). Il existe deux versions de ce bloc
conditionnel, car l'API a subi de légères modifications au cours de l'évolution des versions de
SAP Crystal Reports, version développeur pour Microsoft Visual Studio. Vérifiez votre API (à l'aide
d'IntelliSense) pour connaître la propriété disponible sous ParameterValue :
9.
Si la propriété disponible est IsRange, saisissez le code suivant dans la boucle foreach :
If (Not myParameterValue.IsRange) Then
End If
if(!parameterValue.IsRange)
{
}
10. Ou, si la propriété disponible est Kind (DiscreteOrRangeKind, une énumération comportant trois valeurs :
DiscreteValue, RangeValue, DiscreteAndRangeValue) saisissez le code suivant dans la boucle foreach :
If (myParameterValue.Kind = DiscreteOrRangeKind.DiscreteValue) Then
End If
if(parameterValue.Kind == DiscreteOrRangeKind.DiscreteValue)
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
405
{
}
11. Dans le bloc conditionnel imbriqué, effectuez un cast de l'instance ParameterValue en sa classe étendue,
DiscreteParameterValue.
Dim myParameterDiscreteValue As ParameterDiscreteValue = CType(myParameterValue,
ParameterDiscreteValue)
ParameterDiscreteValue parameterDiscreteValue =
(ParameterDiscreteValue)parameterValue;
12. Dans le bloc conditionnel imbriqué, ajoutez la propriété Value de l'instance ParameterDiscreteValue
(convertie en chaîne) dans l'instance ArrayList.
myArrayList.Add(myParameterDiscreteValue.Value.ToString())
arrayList.Add(parameterDiscreteValue.Value.ToString());
13. En dehors du bloc conditionnel et de la boucle foreach, en fin de méthode, renvoyez l'instance ArrayList
depuis la méthode.
Return myArrayList
return arrayList;
1.5.2.5.4.3
Pour lier l'ArrayList renvoyée de la méthode au
contrôle ListBox dans un projet Web
Contexte
Vous avez extrait les valeurs par défaut du champ de paramètre et les avez renvoyées de la méthode sous la
forme d'une ArrayList. Vous allez maintenant lier cette ArrayList au contrôle ListBox defaultParameterValuesList.
Le code varie légèrement selon que vous utilisez un projet Web ou un projet Windows ; en conséquence, vous ne
devez effectuer que l'une des procédures Web ou Windows ci-après.
Procédure
1.
Dans la méthode ConfigureCrystalReports(), créez plusieurs sauts de ligne dans le code
immédiatement après la ligne de code qui ajoute la valeur de chaîne Tokyo à l'instance ArrayList.
Dans ces sauts de ligne, vous pouvez à présent saisir un code supplémentaire définissant la source de
données du contrôle ListBox defaultParameterValuesList lors du premier chargement de la page.
406
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
2.
Dans les sauts de ligne, créez un bloc conditionnel Not IsPostBack.
If Not IsPostBack Then
End If
if(!IsPostBack)
{
}
Remarque
Le bloc conditionnel Not IsPostBack est utilisé pour encapsuler du code devant être exécuté
uniquement lors du premier chargement de la page. Les contrôles sont généralement liés aux valeurs de
données dans des blocs conditionnels Not IsPostBack afin que leurs valeurs de données (et tout
événement de contrôle suivant) ne soient pas redéfinies lorsque les pages sont rechargées.
3.
Dans le bloc conditionnel Not IsPostBack, attribuez à la propriété DataSource du contrôle ListBox
defaultParameterValuesList la méthode d'assistance GetDefaultValuesFromParameterField() en
transmettant l'instance de rapport CustomersByCity en tant que paramètre de méthode.
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(customersByCityReport)
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(customersByCityReport);
4.
Toujours dans le bloc conditionnel Not IsPostBack, appelez la méthode DataBind() du contrôle ListBox
defaultParameterValuesList.
defaultParameterValuesList.DataBind()
defaultParameterValuesList.DataBind();
1.5.2.5.4.4
Pour lier l'ArrayList renvoyée de la méthode au
contrôle ListBox dans un projet Windows
Procédure
1.
Dans la méthode ConfigureCrystalReports(), créez plusieurs sauts de ligne dans le code
immédiatement après la ligne de code qui ajoute la valeur de chaîne Tokyo à l'instance ArrayList.
Dans ces sauts de ligne, vous pouvez à présent saisir un code supplémentaire définissant la source de
données du contrôle ListBox defaultParameterValuesList lors du premier chargement de la page.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
407
2.
Dans les sauts de lignes, attribuez à la propriété DataSource du contrôle ListBox defaultParameterValuesList
la méthode d'assistance GetDefaultValuesFromParameterField() en transmettant l'instance du
rapport CustomersByCity en tant que paramètre de méthode.
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(customersByCityReport)
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(customersByCityReport);
1.5.2.5.4.5
Pour vérifier si le contrôle ListBox
defaultParameterValuesList est rempli
Contexte
Vous êtes maintenant prêt à générer et exécuter le projet pour vérifier si le contrôle ListBox
defaultParameterValuesList est rempli.
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Le contrôle ListBox defaultParameterValuesList affiche la liste complète des valeurs par défaut (dans ce
tutoriel, il s'agit de villes).
4.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
Résultats
Dans la section suivante, vous allez ajouter un bouton pour réafficher le rapport en fonction des sélections du
contrôle ListBox defaultParameterValuesList.
1.5.2.5.5
ListBox
Définition des paramètres à partir des sélections
Dans cette section, vous allez ajouter un bouton pour réafficher le rapport en fonction des sélections du contrôle
ListBox defaultParameterValuesList.
408
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Dans la méthode d'événement de ce bouton, vous appellerez la même méthode que celle appelée lors du premier
chargement de la page : SetCurrentValuesForParameterField(). Mais cette fois, au lieu de transmettre des
valeurs arbitraires (Paris et Tokyo), vous transmettrez les valeurs sélectionnées depuis le contrôle ListBox
defaultParameterValuesList.
1.5.2.5.5.1
Pour créer et configurer un contrôle Button de
réaffichage sur le formulaire
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Dans la boîte à outils, faites glisser un contrôle Button à droite du contrôle ListBox.
4.
Cliquez sur le contrôle Button pour le sélectionner.
5.
Dans la fenêtre Propriétés :
○
Attribuez à ID ou Name la valeur "redisplay".
○
Attribuez à Text la valeur "Réafficher le rapport".
Résultats
Vous êtes maintenant prêt à créer une méthode d'événement de clic qui recherche des éléments sélectionnés
dans le contrôle ListBox et les transmet à la méthode SetCurrentValuesForParameterField().
Le code varie légèrement pour un projet Web ou un projet Windows ; en conséquence, vous ne devez effectuer
que l'une des procédures Web ou Windows ci-après.
1.5.2.5.5.2
Pour créer la méthode d'événement de clic du
contrôle Button de réaffichage dans un projet Web
Procédure
1.
Cliquez deux fois sur le contrôle Button de réaffichage.
Cette opération affiche la classe code-behind dans laquelle une méthode d'événement redisplay_Click()
a été générée automatiquement.
2.
Au-dessus de la signature de classe, ajoutez une déclaration "Imports" [Visual Basic] ou "using"
[C#] au début de la classe de l'espace de noms System.Web.UI.WebControls (si cet espace de noms n'a pas
déjà été déclaré).
Imports System.Web.UI.WebControls
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
409
using System.Web.UI.WebControls;
Remarque
Cette déclaration est nécessaire pour accéder à la classe ListItem.
3.
Dans la méthode d'événement redisplay_Click() qui vient d'être automatiquement générée, déclarez et
instanciez une ArrayList.
Dim myArrayList As ArrayList = New ArrayList()
ArrayList arrayList = new ArrayList();
4.
Créez une boucle foreach pour extraire chaque instance ListItem de la propriété Items de
defaultParameterValuesList.
For Each item As ListItem In defaultParameterValuesList.Items
Next
foreach(ListItem item in defaultParameterValuesList.Items)
{
}
5.
Dans la boucle foreach, créez un bloc conditionnel imbriqué qui ajoute l'instance Item à l'instance Arraylist si
la propriété Selected de l'instance actuelle Item a pour valeur True.
If item.Selected Then
myArrayList.Add(item.Value)
End If
if(item.Selected)
{
arrayList.Add(item.Value);
}
6.
En dehors du bloc conditionnel et de la boucle foreach, appelez la méthode
SetCurrentValuesForParameterField() et transmettez l'instance de rapport CustomersByCity et
l'instance ArrayList.
SetCurrentValuesForParameterField(customersByCityReport, myArrayList)
SetCurrentValuesForParameterField(customersByCityReport, arrayList);
Les valeurs sélectionnées du contrôle ListBox ayant été appliquées comme valeurs actuelles du champ de
paramètre, vous êtes maintenant prêt à réafficher le rapport.
410
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
7.
Liez à nouveau l'instance de rapport CustomersByCity à la propriété ReportSource du contrôle
CrystalReportViewer.
myCrystalReportViewer.ReportSource = customersByCityReport
crystalReportViewer.ReportSource = customersByCityReport;
1.5.2.5.5.3
Pour créer la méthode d'événement de clic du
contrôle Button de réaffichage dans un projet Windows
Procédure
1.
Cliquez deux fois sur le contrôle Button de réaffichage.
Cette opération affiche la classe code-behind dans laquelle une méthode d'événement redisplay_Click()
a été générée automatiquement.
2.
Dans la méthode d'événement redisplay_Click() qui vient d'être automatiquement générée, déclarez et
instanciez une ArrayList.
Dim myArrayList As ArrayList = New ArrayList()
ArrayList arrayList = new ArrayList();
3.
Créez une boucle foreach pour extraire chaque élément (sous forme de chaîne) de la propriété SelectedItems
de defaultParameterValuesList.
For Each item As String In defaultParameterValuesList.SelectedItems
Next
foreach(string item in defaultParameterValuesList.SelectedItems)
{
}
4.
Dans le bloc conditionnel, ajoutez l'instance chaîne Item à l'instance ArrayList.
myArrayList.Add(item)
arrayList.Add(item);
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
411
5.
En dehors du bloc conditionnel et de la boucle foreach, appelez la méthode
SetCurrentValuesForParameterField() et transmettez l'instance de rapport CustomersByCity et
l'instance ArrayList.
SetCurrentValuesForParameterField(customersByCityReport, myArrayList)
SetCurrentValuesForParameterField(customersByCityReport, arrayList);
Les valeurs sélectionnées du contrôle ListBox ayant été appliquées comme valeurs actuelles du champ de
paramètre, vous êtes maintenant prêt à réafficher le rapport.
6.
Liez à nouveau l'instance de rapport CustomersByCity à la propriété ReportSource du contrôle
CrystalReportViewer.
myCrystalReportViewer.ReportSource = customersByCityReport
crystalReportViewer.ReportSource = customersByCityReport;
1.5.2.5.5.4
Pour vérifier si le contrôle ListBox
defaultParameterValuesList est rempli
Contexte
Vous êtes maintenant prêt à générer et exécuter le projet pour vérifier si le champ de paramètre a bien été
correctement redéfini.
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
4.
Dans le contrôle ListBox, cliquez sur au moins quatre villes différentes dans la liste en maintenant la touche
Ctrl enfoncée.
5.
Cliquez sur Réafficher le rapport.
La page est rechargée, affichant les enregistrements des clients qui vivent dans les villes sélectionnées dans
la liste.
6.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
412
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Résultats
Si vous développez une application Windows, vous avez à présent terminé. Si vous développez un site Web,
effectuez maintenant la procédure Configuration de la persistance des paramètres [page 413].
1.5.2.5.6
Configuration de la persistance des paramètres
Dans cette section, vous allez configurer la persistance (dans un tutoriel via le Web) des sélections des champs de
paramètre effectuées à partir du contrôle ListBox.
Comme le montre le tutoriel Tutoriel : Persistance du modèle d'objet ReportDocument à l'aide de Session [page
341], les modifications apportées au modèle d'objet ReportDocument sont perdues lorsque la page est rechargée,
chaque fois que des utilisateurs cliquent sur des boutons de la barre d'outils CrystalReportViewer (Page suivante
et Zoom par exemple).
1.5.2.5.6.1
Pour montrer le manque de persistance des
sélections de paramètre
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
4.
Dans le contrôle ListBox, utilisez la combinaison de touches MAJ-clic pour sélectionner toutes les villes dans
la liste.
5.
Cliquez sur Réafficher le rapport.
La page se recharge, puis affiche les enregistrements clients de tous les clients dans toutes les villes. Il s'agit
d'un rapport volumineux contenant de nombreuses pages.
6.
Dans la barre d'outils CrystalReportViewer, cliquez sur Page suivante.
La liste des villes sélectionnées n'est pas rendue persistante. La page 2 du rapport ne s'affiche pas. A la place,
les paramètres de lancement apparaissent de nouveau (Paris et Tokyo).
7.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
Résultats
Vous devez ajouter un code de persistance à votre application afin que les modifications apportées au modèle
d'objet ReportDocument soient rendues persistantes lorsque les pages Web sont rechargées.
Pour commencer, vous allez ajouter un code de persistance à la méthode ConfigureCrystalReports() en
ajoutant un bloc Else au bloc conditionnel Not IsPostBack. Vous allez ensuite définir des valeurs uniques pour
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
413
l'instance ArrayList pour l'une des deux conditions du bloc conditionnel. A l'ouverture de la page, vous allez définir
les valeurs par défaut ("Paris" et "Tokyo") dans l'instance ArrayList. Au rechargement de la page, vous allez
extraire l'instance ArrayList stockée dans Session.
1.5.2.5.6.2
Pour ajouter un code de persistance à la méthode
ConfigureCrystalReports()
Procédure
1.
Dans la méthode ConfigureCrystalReports(), coupez et collez au bas du bloc conditionnel If Not
IsPostBack les deux lignes de code permettant d'ajouter Paris et Tokyo à l'instance ArrayList.
Lorsque vous avez terminé, le bloc conditionnel doit ressembler à ceci :
If Not IsPostBack Then
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(customersByCityReport)
defaultParameterValuesList.DataBind()
myArrayList.Add("Paris")
myArrayList.Add("Tokyo")
End If
if (!IsPostBack)
{
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(customersByCityReport);
defaultParameterValuesList.DataBind();
arrayList.Add("Paris");
arrayList.Add("Tokyo");
}
2.
Ajoutez une ligne de code finale au bloc conditionnel qui affecte l'instance ArrayList à Session.
Remarque
Vous pouvez utiliser le nom de variable comme identificateur de chaîne pour la Session ajoutée.
Session("myArrayList") = myArrayList
Session["arrayList"] = arrayList;
3.
Ajoutez une condition Else au bloc conditionnel Not IsPostBack.
4.
Dans le bloc Else, extrayez l'instance ArrayList de Session, puis effectuez un cast de celle-ci en objet
ArrayList.
myArrayList = Ctype(Session("myArrayList"), ArrayList)
414
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
arrayList = (ArrayList)Session["arrayList"];
Résultats
Lorsque vous avez terminé, le bloc conditionnel doit ressembler à ceci :
Ces modifications apportées à la méthode ConfigureCrystalReports() permettent de garantir que l'instance
actuelle ArrayList est toujours disponible pour être transmise à la méthode
SetCurrentValuesForParameterField().
Dans la section suivante, vous allez apporter deux modifications au code dans l'événement de clic :
●
Sélectionner l'instance ArrayList créée et l'affecter à Session.
●
Remplacer les deux dernières lignes de code (qui configurent et affichent le rapport) par un appel à la
méthode ConfigureCrystalReports() afin d'exécuter cette fonctionnalité sur un bloc de code commun.
1.5.2.5.6.3
Pour modifier le code de la méthode d'événement
de clic selon la persistance Session
Procédure
1.
Supprimez les deux dernières lignes de code suivantes dans la méthode d'événement de clic.
La première ligne de code à supprimer représente l'appel à la méthode
SetCurrentValuesForParameterField(). La deuxième ligne de code à supprimer représente le code qui
lie l'instance customersByCityReport à la propriété ReportSource du contrôle CrystalReportViewer.
Dans l'étape suivante, vous allez ajouter deux nouvelles lignes de code pour remplacer le code supprimé.
2.
Dans la méthode d'événement de clic, immédiatement en dehors de la boucle foreach, ajoutez une ligne de
code qui affecte l'instance ArrayList à Session.
Remarque
Vous pouvez utiliser le nom de variable comme identificateur de chaîne pour la Session ajoutée.
Session("myArrayList") = myArrayList
Session["arrayList"] = arrayList;
3.
Appeler la méthode ConfigureCrystalReports().
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
415
Cette méthode extrait l'instance ArrayList, l'applique au rapport, puis lie le rapport au contrôle
CrystalReportViewer.
ConfigureCrystalReports()
ConfigureCrystalReports();
Résultats
Vous êtes maintenant prêt à générer et exécuter le projet pour vérifier si le champ de paramètre a bien été
correctement redéfini.
Remarque
Une autre méthode consiste à rendre persistante l'instance ReportDocument. Pour apprendre à rendre
persistante l'instance ReportDocument avec Session, voir le tutoriel Tutoriel : Persistance du modèle d'objet
ReportDocument à l'aide de Session [page 341].
1.5.2.5.6.4
Pour vérifier si le contrôle ListBox
defaultParameterValuesList est rempli
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
4.
Dans le contrôle ListBox, utilisez la combinaison de touches MAJ-clic pour sélectionner toutes les villes dans
la liste.
5.
Cliquez sur Réafficher le rapport.
La page se recharge et affiche les enregistrements clients de tous les clients dans toutes les villes. Il s'agit
d'un rapport volumineux contenant de nombreuses pages.
6.
Dans la barre d'outils CrystalReportViewer, cliquez sur Page suivante.
7.
La liste des villes sélectionnées est désormais rendue persistante. La page 2 du rapport s'affiche.
8.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
416
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.2.5.7
discrets
Addenda : Améliorations du code des paramètres
Vous avez réussi à créer un rapport avec une valeur de paramètre discret et une méthode d'assistance pouvant
accepter n'importe quel ensemble de valeurs dans un format commun (ArrayList). Vous avez aussi réussi à
appliquer ces valeurs à un rapport en fonction d'un nom de champ de paramètre spécifique (constante
PARAMETER_FIELD_NAME).
Si vous avez installé Visual Studio 2005 ou version ultérieure, ou SAP Crystal Reports Developer, vous avez accès
à la fonctionnalité API améliorée définissant les paramètres discrets dans le rapport Crystal. L'API de
SAP Crystal Reports Developer permet de réduire la quantité de code nécessaire à la définition des paramètres
discrets.
Dans les procédures précédentes, vous avez appris à créer la méthode d'assistance
SetCurrentValuesForParameterField().
Dans ce tutoriel, vous pouvez supprimer la méthode d'assistance et appeler à la place la méthode
SetParameterValue() de la classe ReportDocument.
La méthode SetParameterValue() propose les méthodes surchargées suivantes :
●
SetParameterValue(int index, object value)
●
SetParameterValue(string parameterFieldName, object value)
●
SetParameterValue(string parameterFieldName, object value, string subreport)
Vous pouvez transmettre n'importe quel type d'objet dont la valeur correspond aux valeurs par défaut du champ
du paramètre. L'objet peut être une instance Array qui stocke une liste de valeurs de paramètre.
Conditions prérequises :
●
Vous devez créer un projet en suivant les instructions de la section Tutoriel : Lecture et définition des
paramètres discrets [page 389].
Toutefois, la section Définition manuelle des paramètres dans le code [page 397] nécessite uniquement la
création de la constante PARAMETER_FIELD_NAME. Vous n'avez pas besoin de créer la méthode
d'assistance SetCurrentValuesForParameterField().
●
Si vous avez déjà créé un projet à l'aide des instructions de la section Tutoriel : Lecture et définition des
paramètres discrets [page 389], supprimez la méthode d'assistance SetCurrentValuesForParameterField() et
l'appel dans la méthode ConfigureCrystalReports().
1.5.2.5.7.1
Pour utiliser la méthode SetParameterValue()
avec des paramètres discrets
Procédure
1.
Ouvrez le projet terminé de ce tutoriel.
2.
Ouvrez le Web Form ou Windows Form.
3.
Dans le menu Affichage, cliquez sur Code.
4.
Dans la méthode ConfigureCrystalReports(), au-dessus de la ligne qui lie le rapport à la propriété
ReportSource du contrôle CrystalReportViewer, appelez la méthode SetParameterValue() à partir de la
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
417
classe CustomerByCity. Transmettez le nom de champ et les valeurs de paramètre d'une instance Array à la
méthode.
customersByCityReport.SetParameterValue(PARAMETER_FIELD_NAME,
arrayList.ToArray())
customersByCityReport.SetParameterValue(PARAMETER_FIELD_NAME,
arrayList.ToArray());
Résultats
Vous êtes maintenant prêt à générer et exécuter le projet pour lire et définir des paramètres discrets.
1.5.2.6
Tutoriel : Lecture et définition des paramètres avec
un sous-rapport
Dans ce tutoriel, vous allez traiter un problème supplémentaire : que faire si un rapport nécessitant des
paramètres contient un sous-rapport nécessitant des paramètres différents ?
Remarque
Pour suivre ce tutoriel, vous devez terminer le tutoriel précédent Tutoriel : Lecture et définition des paramètres
discrets [page 389].
Introduction
Dans le tutoriel précédent, Tutoriel : Lecture et définition des paramètres discrets [page 389], vous avez appris à
créer un rapport avec un paramètre et à créer un code permettant de définir ce paramètre au moment de
l'exécution, en utilisant chaque fois des valeurs de paramètres codées en dur et des valeurs de paramètres
transmises à partir d'un contrôle ListBox.
Dans ce tutoriel, vous allez apprendre à ajouter des paramètres à un sous-rapport.
Vous devez apporter quatre modifications au projet que vous avez créé lors de la procédure Tutoriel : Lecture et
définition des paramètres discrets [page 389] :
●
Vous ajoutez un sous-rapport au rapport d'origine.
Ce sous-rapport désigne la table Commandes de la base de données Xtreme. La table Commandes est liée à
la table Clients utilisée dans le tutoriel précédent par la clé externe ID client.
●
Vous ajoutez un paramètre de plage au sous-rapport qui effectue un filtrage selon une plage de dates de
commande.
●
Vous ajoutez deux contrôles Text au formulaire : orderStartDate et orderEndDate afin de définir la plage des
dates de commande au moment de l'exécution.
418
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
●
Vous ajoutez une nouvelle méthode.
Cette méthode crée une instance ParameterRangeValue contenant les valeurs startDate et endDate, puis
transmet cette instance ParameterRangeValue au paramètre de plage dans le sous-rapport.
Une fois le tutoriel terminé, vous pouvez filtrer les valeurs affichées dans le rapport au moment de l'exécution. Le
code que vous ajoutez limite le nombre de villes affichées dans le rapport principal ainsi que la plage de dates de
commande qui apparaîtront dans le sous-rapport.
Ce tutoriel peut également être effectué avec des classes du modèle d'objet CrystalReportViewer, bien qu'il soit
recommandé d'utiliser le modèle d'objet ReportDocument.
Exemple de code
Ce tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez les
instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir d'une
version terminée.
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les noms des
dossiers de chaque version d'exemple de code sont les suivants :
●
Site Web C# : CS_Web_RDObjMod_ParametersSubrpt
●
Projet Windows C# : CS_Win_RDObjMod_ParametersSubrpt
●
Site Web Visual Basic : VB_Web_RDObjMod_ParametersSubrpt
●
Projet Windows Visual Basic : VB_Win_RDObjMod_ParametersSubrpt
Base de données Xtreme
Ce tutoriel utilise un exemple de base de données appelée Xtreme. Le fichier de base de données xtreme.mdb est
fourni dans le package d'exemples de code du SDK de SAP Crystal Reports .NET. Pour utiliser la base de données
Xtreme, vous devez créer manuellement une connexion ODBC à cette base de données.
Informations associées
Choisir le modèle d'objet correct pour votre projet [page 32]
Tutoriel : Lecture et définition des paramètres de plage d'un sous-rapport [page 277]
Dans ce tutoriel, vous allez traiter un problème supplémentaire : que faire si un rapport contient un sousrapport nécessitant des paramètres différents ?
Répertoire d'exemples de rapports [page 15]
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
419
1.5.2.6.1
Ajout d'un sous-rapport au rapport d'origine
Pour commencer, vous ajoutez un sous-rapport au rapport d'origine.
1.5.2.6.1.1
Pour ajouter un sous-rapport
Procédure
1.
Ouvrez le projet que vous avez créé dans le tutoriel précédent Tutoriel : Lecture et définition des paramètres
discrets [page 389].
2.
Dans l'Explorateur de solutions, cliquez deux fois sur le rapport CustomersByCity pour l'ouvrir.
3.
Cliquez avec le bouton droit de la souris sur la barre grise Détails et sélectionnez Insérer une section en
dessous.
4.
Cliquez avec le bouton droit de la souris sur la nouvelle section Détails b que vous avez créée, sélectionnez
Insérer, puis cliquez sur Sous-rapport.
Un carré gris encadre le curseur de la souris.
5.
Faites glisser le rectangle gris sur la nouvelle section Détails b, puis relâchez le bouton de la souris.
6.
Dans l'onglet Sous-rapport de la boîte de dialogue Insérer un sous-rapport, sélectionnez Créer un sous-rapport
à l'aide de l'Assistant de création de rapports.
Remarque
La boîte de dialogue Insérer un sous-rapport inclut d'autres options permettant de sélectionner un rapport
existant et des sous-rapports à la demande. Pour en savoir plus sur ces fonctionnalités, voir Onglet Sousrapport (boîte de dialogue Insérer un sous-rapport) [page 939].
7.
Dans le champ Nom du nouveau rapport, saisissez CustomerOrders.
8.
Cliquez sur Assistant de création de rapports...
9.
Dans le panneau Sources de données disponibles de la fenêtre Assistant de création de rapports standard,
développez le dossier Créer une nouvelle connexion.
10. Dans le sous-dossier qui s'ouvre, développez le dossier ODBC (RDO).
Le dossier contient le serveur de base de données qui a été configuré pour le rapport lorsque ce dernier a été
créé.
Remarque
Si le serveur ne s'affiche pas, suivez les instructions du tutoriel précédent pour vous connecter à la base de
données Xtreme.
11. Sélectionnez la table Commandes et cliquez sur le bouton > pour la déplacer dans le panneau Tables
sélectionnées, puis cliquez sur Suivant.
12. Dans le panneau Champs disponibles, sélectionnez ID commande, Date de commande, Date d'expédition et
Transporteur.
13. Cliquez sur le bouton > pour déplacer ces champs dans le panneau Champs à afficher, puis cliquez sur
Terminer.
420
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
14. Dans la boîte de dialogue Insérer un sous-rapport, sélectionnez l'onglet Mise en relation.
15. Dans la liste Champs disponibles du panneau Champs du rapport principal à mettre en relation, développez la
table Clients, sélectionnez ID client, puis cliquez sur le bouton >.
16. Dans le panneau Mise en relation du champ Clients.ID client qui s'affiche, laissez les sélections par défaut.
Ces sélections de paramètres et de données génèrent automatiquement une relation entre le rapport
principal et le sous-rapport.
17. Cliquez sur OK.
Le nouveau sous-rapport, CustomerOrders, s'affiche dans la section Détails b du rapport principal.
Remarque
Lorsque vous ajoutez un sous-rapport à la section Détails, le sous-rapport s'affiche pour chaque ligne, ce
qui influe sur les performances du rapport. Si vous ne souhaitez pas obtenir des informations aussi
détaillées, placez le sous-rapport dans une section Groupe plutôt qu'une section Détails.
Résultats
Vous pouvez à présent vérifier les paramètres du sous-rapport.
1.5.2.6.1.2
Pour vérifier les paramètres du sous-rapport
Procédure
1.
Dans la section Détails du rapport, cliquez deux fois sur le sous-rapport CustomerOrders pour l'afficher.
Des boutons de navigation apparaissent au bas de la fenêtre du concepteur à la fois pour le rapport principal
et le sous-rapport CustomerOrders.
2.
Si l'Explorateur de champs n'est pas visible, cliquez sur Activer/Désactiver l'affichage du champ dans la barre
d'outils Crystal Reports.
Remarque
Vous pouvez également afficher l'Explorateur de champs en ouvrant le menu Crystal Reports, puis en
cliquant sur Explorateur de champs.
3.
Dans l'Explorateur de champs, développez Champs de paramètre.
4.
Vérifiez que le champ de paramètre Pm-Clients.ID Client a été automatiquement généré lorsque le sousrapport a été relié.
5.
Dans la barre d'outils, cliquez sur Expert Sélection.
6.
Dans la boîte de dialogue Expert Sélection, vérifiez que le critère Commandes.ID Client est égal à {PmClients.ID Client} est défini, puis cliquez sur OK.
7.
Dans le menu Fichier, sélectionnez Enregistrer tout.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
421
Résultats
Vous avez réussi à ajouter un sous-rapport CustomerOrders au rapport CustomersByCity. Dans la section
suivante, vous allez ajouter un paramètre OrderDateRange au sous-rapport.
1.5.2.6.1.3
Pour ajouter un paramètre OrderDateRange au
sous-rapport
Procédure
1.
Dans l'Explorateur de champs, cliquez avec le bouton droit de la souris sur Champs de paramètre, puis
sélectionnez Nouveau.
2.
Dans la boîte de dialogue Créer un champ de paramètre :
○
Attribuez à Nom la valeur OrderDateRange.
○
Attribuez à Type de valeur la valeur Date.
○
Attribuez à Texte de l'invite la valeur Spécifiez une plage de dates des commandes à afficher.
○
Attribuez au paramètre Options une seule sélection, la valeur Valeur(s) de plage.
3.
Cliquez sur OK.
4.
Dans la barre d'outils, cliquez sur Expert Sélection.
5.
Cliquez sur l'onglet Nouveau.
6.
Dans la boîte de dialogue Choisir un champ, développez la table Commandes, sélectionnez Date de
commande, puis cliquez sur OK.
7.
Dans le nouvel onglet Commandes.Date de commande sélectionnez formule dans la liste déroulante des
critères.
8.
Saisissez la formule suivante :{Commandes.Date de commande} in {?OrderDateRange}.
9.
Cliquez sur OK.
10. Dans le menu Fichier, sélectionnez Enregistrer tout.
Résultats
Vous avez réussi à ajouter un paramètre OrderDateRange au sous-rapport et à l'associer à la colonne
Commandes.Date de commande. Dans la section suivante, vous allez ajouter un code afin de désigner le
paramètre OrderDateRange dans le sous-rapport.
1.5.2.6.2
Ajout du code de paramètre au sous-rapport
Vous allez à présent ajouter le code de paramètre du sous-rapport à la classe code-behind. Vous commencez par
créer une méthode d'assistance privée SetDateRangeForOrders().
422
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.2.6.2.1
Pour créer et coder la méthode
SetDateRangeForOrders()
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Au début de la classe, ajoutez deux nouvelles constantes sous la constante PARAMETER_FIELD_NAME
existante définie dans le tutoriel précédent.
Private Const SUBREPORT_PARAMETER_FIELD_NAME As String = "OrderDateRange"
Private Const SUBREPORT_NAME As String = "CustomerOrders"
private const string SUBREPORT_PARAMETER_FIELD_NAME = "OrderDateRange";
private const string SUBREPORT_NAME = "CustomerOrders";
4.
Dans la partie inférieure de la classe, créez une méthode privée appelée SetDateRangeForOrders() avec
les trois paramètres suivants : ReportDocument, une chaîne startDate et une chaîne endDate.
Private Sub SetDateRangeForOrders(ByVal myReportDocument As ReportDocument,
ByVal startDate As String, ByVal endDate As String)
End Sub
private void SetDateRangeForOrders(ReportDocument reportDocument, string
startDate, string endDate)
{
}
5.
Dans cette méthode, déclarez et instanciez la classe ParameterRangeValue.
Dim myParameterRangeValue As ParameterRangeValue = New
ParameterRangeValue()
ParameterRangeValue parameterRangeValue = new
ParameterRangeValue();
Remarque
Pour que la classe ParameterRangeValue soit accessible, vous devez inclure une instruction "Imports"
[Visual Basic] ou "using" [C#] dans la partie supérieure de la classe code-behind pour l'espace de
noms CrystalDecisions.Shared. (Vous avez ajouté cette déclaration dans la procédure Configuration d'un
projet [page 15].)
6.
Attribuez à la propriété StartValue de l'instance ParameterRangeValue le paramètre de méthode startDate.
myParameterRangeValue.StartValue = startDate
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
423
parameterRangeValue.StartValue = startDate;
Remarque
Les propriétés StartValue et EndValue de la classe ParameterRangeValue acceptent les valeurs de type
Objet. Ce type générique permet de transmettre la valeur de plage sous plusieurs formes, y compris texte,
nombre, date, devise ou heure.
7.
Attribuez à la propriété EndValue de l'instance ParameterRangeValue le paramètre de méthode endDate.
myParameterRangeValue.EndValue = endDate
parameterRangeValue.EndValue = endDate;
8.
Définissez les limites inférieures et supérieures afin de les inclure.
myParameterRangeValue.LowerBoundType = RangeBoundType.BoundInclusive
myParameterRangeValue.UpperBoundType = RangeBoundType.BoundInclusive
parameterRangeValue.LowerBoundType = RangeBoundType.BoundInclusive;
parameterRangeValue.UpperBoundType = RangeBoundType.BoundInclusive;
Remarque
Pour le paramètre BoundInclusive, les valeurs de plage supérieures et inférieures sont incluses dans la
plage.
Vous allez à présent affecter l'instance ParameterRangeValue au paramètre du sous-rapport.
9.
Extrayez l'objet ParameterFieldDefinitions provenant de la propriété DataDefinition de l'instance
ReportDocument.
Remarque
ParameterFieldDefinitions est une classe indexée contenant des instances de la classe
ParameterFieldDefinition.
Dim myParameterFieldDefinitions As ParameterFieldDefinitions =
myReportDocument.DataDefinition.ParameterFields
ParameterFieldDefinitions parameterFieldDefinitions =
reportDocument.DataDefinition.ParameterFields;
10. Extrayez l'instance ParameterFieldDefinition de la classe indexée ParameterFieldDefinitions
basée sur les deux valeurs indexées suivantes : le nom du champ de paramètre du sous-rapport et le nom du
sous-rapport. Transmettez les deux valeurs de constante que vous avez déclarées au début de la classe.
Dim myParameterFieldDefinition As ParameterFieldDefinition =
424
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
myParameterFieldDefinitions(SUBREPORT_PARAMETER_FIELD_NAME,
SUBREPORT_NAME)
ParameterFieldDefinition parameterFieldDefinition =
parameterFieldDefinitions[SUBREPORT_PARAMETER_FIELD_NAME,
SUBREPORT_NAME];
11. Appelez la méthode Clear() de la propriété CurrentValues de l'instance ParameterFieldDefinition
afin de supprimer les éventuelles valeurs existantes de la propriété CurrentValues.
myParameterFieldDefinition.CurrentValues.Clear()
parameterFieldDefinition.CurrentValues.Clear();
12. Ajoutez l'instance ParameterRangeValue que vous venez de créer à la propriété CurrentValues de
l'instance ParameterFieldDefinition.
myParameterFieldDefinition.CurrentValues.Add(myParameterRangeValue)
parameterFieldDefinition.CurrentValues.Add(parameterRangeValue);
13. Appelez la méthode ApplyCurrentValues() en lui transmettant la propriété CurrentValues de l'instance
ParameterFieldDefinition.
myParameterFieldDefinition.ApplyCurrentValues(myParameterFieldDefinition.CurrentV
alues)
parameterFieldDefinition.ApplyCurrentValues(parameterFieldDefinition.CurrentValue
s);
Résultats
Cette procédure a défini des valeurs de date de début et de fin dans une instance ParameterRangeValue et les a
transmises au paramètre OrderDateRange du sous-rapport CustomerOrders.
1.5.2.6.3
Ajout de contrôles TextBox pour contenir les
valeurs de paramètres de plage
Dans cette section, vous allez ajouter deux contrôles TextBox pour transmettre au paramètre de plage
OrderDateRange des valeurs de date de début et de date de fin au moment de l'exécution dans le sous-rapport
CustomerOrders.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
425
Remarque
Si vous implémentez ce tutoriel dans un site Web, la persistance des valeurs de date que les utilisateurs
saisissent dans les zones de texte est conservée par ViewState.
1.5.2.6.3.1
Pour créer et configurer un contrôle Button de
réaffichage sur le formulaire
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Si vous développez un site Web, procédez comme suit :
a) Cliquez entre le contrôle ListBox et le contrôle Button.
b) Appuyez trois fois sur ENTREE pour insérer deux lignes entre le contrôle ListBox et le contrôle Button.
c) Sur la première ligne créée sous le contrôle ListBox, saisissez "Date de début de la commande".
d) Sur la seconde ligne créée sous le contrôle ListBox, saisissez "Date de fin de la commande".
4.
Si vous développez un projet Windows, procédez comme suit :
a) Dans la boîte à outils, faites glisser deux contrôles Label à droite du contrôle ListBox. Placez une étiquette
sur l'autre, en positionnant les deux étiquettes au-dessus du contrôle Button.
b) Sélectionnez le premier contrôle Label. Dans la fenêtre Propriétés, attribuez à la propriété Text la valeur
"Date de début de la commande".
c) Sélectionnez le second contrôle Label. Dans la fenêtre Propriétés, attribuez à la propriété Text la valeur
"Date de fin de la commande".
5.
Dans la boîte à outils, faites glisser un contrôle TextBox à droite de "Date de début de la commande".
6.
Cliquez sur le contrôle TextBox pour le sélectionner.
7.
Dans la fenêtre Propriétés, attribuez à ID (ou Name) la valeur "orderStartDate."
8.
Dans la boîte à outils, faites glisser un contrôle TextBox à droite de "Date de fin de la commande."
9.
Cliquez sur le contrôle TextBox pour le sélectionner.
10. Dans la fenêtre Propriétés, attribuez à ID (ou Name) la valeur "orderEndDate".
11. Dans le menu Fichier, sélectionnez Enregistrer tout.
1.5.2.6.4
Modification des méthodes d'appel du sous-rapport
Vous devez à présent modifier la méthode ConfigureCrystalReports() et la méthode d'événement
redisplay_Click() pour recevoir des informations de ces contrôles TextBox, les appliquer à la méthode
SetDateRangeForOrders() et traiter les informations de paramètre pour les sous-rapports.
Dans le tutoriel précédent, Tutoriel : Lecture et définition des paramètres discrets [page 389], vous avez conçu ces
méthodes de deux façons différentes si vous avez inclus la persistance Session.
426
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Remarque
Les projets Windows ne nécessitent aucune persistance Session. Les sites Web nécessitent généralement la
persistance Session.
Choisissez l'une des deux (mais pas les deux) procédures ci-dessous. Modifiez les méthodes qui excluent la
persistance Session ou les méthodes qui incluent la persistance Session :
1.5.2.6.4.1
Modification des méthodes qui excluent la
persistance Session
Si vous avez créé le tutoriel précédent Tutoriel : Lecture et définition des paramètres discrets [page 389] et exclu
la persistance Session, effectuez les procédures suivantes. Si vous souhaitez inclure la persistance de Session,
voir Modification des méthodes qui incluent la persistance Session [page 428].
1.5.2.6.4.1.1
Pour modifier la méthode
ConfigureCrystalReports() excluant la persistance Session
Procédure
1.
Dans la méthode ConfigureCrystalReports(), créez plusieurs sauts de ligne dans le code après les lignes
qui affectent "Paris" et "Tokyo" comme variables ArrayList.
2.
Dans les sauts de ligne, déclarez et définissez des valeurs en code dur pour les deux variables chaîne,
startDate et endDate.
Dim startDate As String = "8/1/1997"
Dim endDate As String = "8/31/1997"
string startDate = "8/1/1997";
string endDate = "8/31/1997";
3.
Créez plusieurs sauts de ligne dans le code au-dessus de la ligne qui lie le rapport au contrôle
CrystalReportViewer.
4.
Dans les sauts de ligne, saisissez un appel à la méthode SetDateRangeForOrders(), puis transmettez le
rapport CustomersByCity et les variables startDate et endDate.
SetDateRangeForOrders(customersByCityReport, startDate, endDate)
SetDateRangeForOrders(customersByCityReport, startDate, endDate);
Cette procédure est suivie du code d'origine qui lie le rapport au contrôle CrystalReportViewer.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
427
5.
Dans le menu Fichier, sélectionnez Enregistrer tout.
Résultats
Modifiez ensuite la méthode d'événement redisplay_Click.
1.5.2.6.4.1.2
Pour modifier la méthode redisplay_Click()
excluant la persistance Session
Procédure
1.
Dans la méthode d'événement redisplay_Click(), créez plusieurs sauts de ligne dans le code au-dessus
de la ligne qui lie le rapport au contrôle CrystalReportViewer.
2.
Dans les sauts de ligne, déclarez et définissez les valeurs des deux variables chaîne startDate et endDate à
partir des contrôles TextBox que vous avez ajoutés au Web Form ou Windows Form.
Dim startDate As String = orderStartDate.Text
Dim endDate As String = orderEndDate.Text
string startDate = orderStartDate.Text;
string endDate = orderEndDate.Text;
3.
Saisissez un appel à la méthode SetDateRangeForOrders(), puis transmettez le rapport CustomersByCity
et les variables startDate et endDate.
SetDateRangeForOrders(customersByCityReport, startDate, endDate)
SetDateRangeForOrders(customersByCityReport, startDate, endDate);
4.
Dans le menu Fichier, sélectionnez Enregistrer tout.
1.5.2.6.4.2
Modification des méthodes qui incluent la
persistance Session
Si vous avez créé le tutoriel précédent Tutoriel : Lecture et définition des paramètres discrets [page 389] et inclus
la persistance Session, effectuez les procédures suivantes. Sinon, effectuez la procédure Modification des
méthodes qui excluent la persistance Session [page 427].
428
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.2.6.4.2.1
Pour modifier la méthode
ConfigureCrystalReports() incluant la persistance Session
Procédure
1.
Dans la méthode ConfigureCrystalReports(), créez plusieurs sauts de ligne dans le code après la ligne
qui déclare et instancie ArrayList.
2.
Dans les sauts de ligne, déclarez deux variables chaîne, startDate et endDate.
Dim startDate As String
Dim endDate As String
string startDate;
string endDate;
3.
Dans le bloc conditionnel Not IsPostBack, saisissez des valeurs par défaut pour les variables startDate et
endDate.
startDate = "8/1/1997"
endDate = "8/31/1997"
startDate = "8/1/1997";
endDate = "8/31/1997";
4.
Dans le bloc conditionnel Not IsPostBack, affectez les variables startDate et endDate à Session.
Session("startDate") = startDate
Session("endDate") = endDate
Session["startDate"] = startDate;
Session["endDate"] = endDate;
5.
Dans le bloc Else, après l'extraction de l'instance ArrayList de Session, extrayez les variables startDate et
endDate de Session.
startDate = Session("startDate").ToString()
endDate = Session("endDate").ToString()
startDate = Session["startDate"].ToString();
endDate = Session["endDate"].ToString();
Cette approche permet d'atteindre la fin du bloc avec les variables de date affectées dans les deux cas. Cette
méthode suit la logique parallèle de l'affectation de la variable ArrayList que vous avez configurée dans le
tutoriel précédent.
6.
Créez plusieurs sauts de ligne dans le code au-dessus de la ligne qui lie le rapport au contrôle
CrystalReportViewer.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
429
7.
Dans ces nouveaux sauts de ligne, saisissez un appel à la méthode SetDateRangeForOrders(), puis
transmettez le rapport CustomersByCity et les variables startDate et endDate.
SetDateRangeForOrders(customersByCityReport, startDate, endDate)
SetDateRangeForOrders(customersByCityReport, startDate, endDate);
Cette procédure est suivie du code d'origine qui lie le rapport au contrôle CrystalReportViewer.
8.
Dans le menu Fichier, sélectionnez Enregistrer tout.
Résultats
Modifiez ensuite la méthode d'événement redisplay_Click.
1.5.2.6.4.2.2
Pour modifier la méthode redisplay_Click()
incluant la persistance Session
Procédure
1.
Dans la méthode d'événement redisplay_Click(), créez plusieurs sauts de ligne dans le code après la
ligne qui affecte l'instance ArrayList à Session.
2.
Dans les sauts de ligne, affectez la propriété Text des contrôles TextBox orderStartDate et orderEndDate aux
variables Session.
Session("startDate") = orderStartDate.Text
Session("endDate") = orderEndDate.Text
Session["startDate"] = orderStartDate.Text;
Session["endDate"] = orderEndDate.Text;
3.
Dans le menu Fichier, sélectionnez Enregistrer tout.
Ces valeurs Session startDate et endDate sont à présent extraites et appliquées lors de l'appel de la méthode
ConfigureCrystalReports().
Résultats
Vous êtes maintenant prêt à générer et exécuter le projet pour vérifier que les valeurs TextBox redéfinissent le
paramètre de plage dans le sous-rapport. w
430
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.2.6.5
Vérification du paramètre du sous-rapport
Vous allez à présent vérifier le paramètre du sous-rapport à partir des valeurs TextBox.
1.5.2.6.5.1
Pour vérifier le paramètre du sous-rapport
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
4.
Dans le contrôle ListBox, cliquez sur au moins quatre villes différentes dans la liste en maintenant la touche
Ctrl enfoncée.
5.
Dans le contrôle TextBox startDate, saisissez "1/1/1997".
6.
Dans le contrôle TextBox endDate , saisissez "31/12/1997".
7.
Cliquez sur le bouton Réafficher le rapport.
La page se recharge et affiche les enregistrements des clients qui vivent dans les villes que vous venez de
sélectionner dans la liste, ainsi qu'un sous-rapport indiquant les commandes correspondant à la plage de
dates spécifiées ci-dessus.
8.
Dans le contrôle CrystalReportViewer, augmentez le facteur de zoom à 125 %.
La page se recharge avec un facteur de zoom de 125 %. Les valeurs sélectionnées à la fois pour les villes et la
plage des dates de commande sont rendues persistantes.
9.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.2.6.6
Addenda : Améliorations du code des paramètres
de plage pour des sous-rapports
Vous avez réussi à modifier votre projet de tutoriel pour utiliser un rapport contenant un sous-rapport, ainsi qu'à
définir une plage de dates de commande selon le paramètre de plage créé dans le sous-rapport. Dans cet
addenda, vous allez apprendre à lire et à définir des paramètres d'un sous-rapport avec des fonctionnalités API
améliorées.
Dans les étapes précédentes, vous avez appris à créer la méthode d'assistance SetDateRangeForOrders() qui
utilise les classes ParameterFieldDefinitions et ParameterFieldDefinition.
Dans ce tutoriel, vous devez supprimer les lignes de code utilisant les classes ParameterFieldDefinitions et
ParameterFieldDefinition. Vous apprendrez ensuite à utiliser les classes ParameterFields et
ParameterField des fonctionnalités API améliorées de SAP Crystal Reports pour coder la méthode
SetDateRangeForOrders().
Remarque
Les fonctionnalités API améliorées incluent la méthode SetParameterValue(string
parameterFieldName, object value, string subreport) pour les sous-rapports avec des champs de
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
431
paramètre discret. La méthode SetParameterValue() ne peut donc pas être utilisée dans ce tutoriel, car le
sous-rapport comporte un paramètre de plage.
1.5.2.6.6.1
Pour utiliser les fonctionnalités API améliorées
de SAP Crystal Reports pour les sous-rapports avec des
paramètres de plage
Prérequis
Vous devez créer un projet basé sur les instructions de la section Tutoriel : Lecture et définition des paramètres
avec un sous-rapport [page 418].
Procédure
1.
Ouvrez le projet terminé de ce tutoriel.
2.
Ouvrez le Web Form ou Windows Form.
3.
Dans le menu Affichage, cliquez sur Code.
4.
Dans la méthode SetDateRangeForOrders(), supprimez les lignes de code qui utilisent les classes
ParameterFieldDefinitions ou ParameterFieldDefinition. Supprimez les lignes de code suivantes :
Dim myParameterFieldDefinitions As ParameterFieldDefinitions =
myReportDocument.DataDefinition.ParameterFields
Dim myParameterFieldDefinition As ParameterFieldDefinition =
myParameterFieldDefinitions(SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME)
myParameterFieldDefinition.CurrentValues.Clear()
myParameterFieldDefinition.CurrentValues.Add(myParameterRangeValue)
myParameterFieldDefinition.ApplyCurrentValues(myParameterFieldDefinition.CurrentV
alues)
ParameterFieldDefinitions parameterFieldDefinitions =
reportDocument.DataDefinition.ParameterFields;
ParameterFieldDefinition parameterFieldDefinition =
parameterFieldDefinitions[SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME];
parameterFieldDefinition.CurrentValues.Clear();
parameterFieldDefinition.CurrentValues.Add(parameterRangeValue);
parameterFieldDefinition.ApplyCurrentValues(parameterFieldDefinition.CurrentValue
s);
Dans l'étape suivante, vous allez ajouter les nouvelles méthodes API de SAP Crystal Reports à la méthode
SetDateRangeForOrders(), après le code définissant le type de limite de plage.
5.
Dans la méthode SetDateRangeForOrders(), extrayez l'instance ParameterFields à partir de la propriété
ParameterFields de l'instance ReportDocument.
Dim myParameterFields As ParameterFields = reportDocument.ParameterFields
432
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
ParameterFields parameterFields = reportDocument.ParameterFields;
6.
Extrayez l'instance ParameterField de la classe indexée ParameterFields, basée sur les deux valeurs indexées
suivantes : le nom du champ de paramètre du sous-rapport et le nom du sous-rapport. Transmettez les deux
valeurs de constante que vous avez déclarées au début de la classe.
Dim myParameterField As ParameterField =
myParameterFields(SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME)
ParameterField parameterField = parameterFields[SUBREPORT_PARAMETER_FIELD_NAME,
SUBREPORT_NAME];
7.
Appelez la méthode Clear() de la propriété CurrentValues de l'instance ParameterField afin de supprimer
les éventuelles valeurs existantes de la propriété CurrentValues.
myParameterField.CurrentValues.Clear()
parameterField.CurrentValues.Clear();
8.
Ajoutez l'instance ParameterRangeValue que vous venez de créer à la propriété CurrentValues de l'instance
ParameterField.
myParameterField.CurrentValues.Add(myParameterRangeValue)
parameterField.CurrentValues.Add(parameterRangeValue);
Résultats
Vous êtes maintenant prêt à générer et exécuter le projet pour lire et définir des paramètres de plage pour un
sous-rapport.
1.5.2.7
Tutoriel : Exportation dans plusieurs formats
Dans ce tutoriel, vous allez apprendre à exporter le rapport par programmation.
Introduction
Dans ce tutoriel, vous allez apprendre à exporter le rapport par programmation. SAP Crystal Reports permet
d'exporter vers un grand nombre de formats. Les options disponibles dépendent de la version de
SAP Crystal Reports installée.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
433
Toutes les versions de SAP Crystal Reports, version développeur pour Microsoft Visual Studio prennent en charge
les options d'exportation suivantes :
●
SAP Crystal Reports (RPT)
●
SAP Crystal Reports Read-Only (RPTR)
●
PDF
●
Rich Text Format (RTF)
●
Microsoft Word (97-2003)
●
Microsoft Excel (97-2003)
●
Microsoft Excel (97-2003) Données uniquement
●
Microsoft Excel (2007) Données uniquement
●
HTML 4.0
SAP Crystal Reports Developer prend en charge les formats supplémentaires suivants :
●
Valeurs séparées par des virgules (CSV)
●
Microsoft Word modifiable (RTF)
●
Texte séparé par des tabulations (TTX)
●
Texte
Vous pouvez sélectionner n'importe lequel de ces formats ; cliquez sur le bouton Exporter du contrôle
CrystalReportViewer, puis exportez un rapport au format sélectionné vers votre ordinateur local qui exécute
SAP Crystal Reports dans une application Web ou Windows.
Vous pouvez également exporter des rapports par programmation vers des répertoires spécifiques sur un
serveur Web local ou un ordinateur utilisant Windows.
Pour commencer ce tutoriel, vous allez ajouter un contrôle DropDownList à votre Web Form ou Windows Form,
puis le remplir avec les valeurs de l'énumération ExportFormatType dans l'espace de noms
CrystalDecisions.Shared.
Vous allez ensuite créer trois méthodes d'assistance privées contenant la fonctionnalité d'exportation et
effectuant la configuration spécifique de chaque format d'exportation.
Enfin, vous allez créer une méthode d'événement de clic à partir d'un contrôle Button sur le Web Form ou le
Windows Form et appeler les trois méthodes d'assistance privées exécutant l'exportation.
Exemple de code
Ce tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez les
instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir d'une
version terminée.
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les noms des
dossiers de chaque version d'exemple de code sont les suivants :
●
Site Web C# : CS_Web_RDObjMod_Export
●
Projets Windows C# : CS_Win_RDObjMod_Export
●
Site Web Visual Basic : VB_Web_RDObjMod_Export
●
Projet Windows Visual Basic : VB_Win_RDObjMod_Export
434
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Informations associées
Répertoire d'exemples de rapports [page 15]
1.5.2.7.1
Ajout de contrôles au Web Form ou Windows Form
Dans cette section, vous allez ajouter des contrôles DropDownList, Button et Label au-dessus du contrôle
CrystalReportViewer sur le Web Form ou le Windows Form.
1.5.2.7.1.1
Pour ajouter des contrôles au Web Form ou
Windows Form
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Si vous développez un site Web, procédez comme suit :
a) Cliquez sur le contrôle CrystalReportViewer pour le sélectionner.
b) Appuyez sur la FLECHE GAUCHE du clavier afin de faire apparaître un curseur clignotant, puis appuyez
sur ENTREE.
Le contrôle CrystalReportViewer descend d'une ligne.
4.
Si vous développez un projet Windows, procédez comme suit :
a) Cliquez sur le contrôle CrystalReportViewer pour le sélectionner.
b) Redimensionnez le contrôle CrystalReportViewer pour laisser assez d'espace au-dessus afin d'ajouter un
contrôle ComboBox.
c) Dans la fenêtre Propriétés, attribuez à la propriété Anchor la valeur "Top, Bottom, Left, Right".
5.
Dans la Boîte à outils, faites glisser un contrôle DropDownList (dans les sites Web) ou un contrôle ComboBox
(dans les projets Windows) au-dessus du contrôle CrystalReportViewer.
Remarque
Si une tâche guidée apparaît dans le contrôle DropDownList (ComboBox) lorsque vous utilisez
Visual Studio 2005 ou version ultérieure, appuyez sur Echap pour la fermer.
6.
Cliquez sur le contrôle DropDownList (ComboBox) pour le sélectionner.
7.
Dans la fenêtre Propriétés, attribuez à la propriété ID la valeur "exportTypesList".
8.
Dans la Boîte à outils, faites glisser un contrôle Button à droite du contrôle DropDownList (ComboBox).
9.
Cliquez sur le contrôle Button pour le sélectionner.
10. Dans la fenêtre Propriétés, procédez comme suit :
○
Attribuez à la propriété ID la valeur "exportByType".
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
435
○
Attribuez à la propriété Text la valeur "Exporter au type sélectionné".
11. Dans la Boîte à outils, faites glisser un contrôle Label à droite du contrôle Button.
12. Cliquez sur le contrôle Label pour le sélectionner.
13. Dans la fenêtre Propriétés, procédez comme suit :
○
Attribuez à la propriété ID la valeur "message".
○
Laissez la propriété Text vide.
○
Attribuez à la propriété Visible la valeur "False".
14. Dans le menu Fichier, sélectionnez Enregistrer tout.
Résultats
Vous devez à présent remplir le contrôle DropDownList à l'aide de l'énumération ExportFormatType de l'espace
de noms CrystalDecisions.Shared.
1.5.2.7.1.2
Pour remplir le contrôle DropDownList à l'aide de
l'énumération ExportFormatType pour un site Web
Procédure
1.
Ouvrez le Web Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Ajoutez un bloc conditionnel Not IsPostBack à la fin de la méthode ConfigureCrystalReports().
If Not IsPostBack Then
End If
if (!IsPostBack)
{
}
4.
Dans le bloc conditionnel, attribuez à la propriété DataSource du contrôle ComboBox exportTypesList les
valeurs de l'énumération ExportFormatType.
exportTypesList.DataSource = System.Enum.GetValues(GetType(ExportFormatType))
exportTypesList.DataSource = System.Enum.GetValues(typeof(ExportFormatType));
5.
Appelez la méthode DataBind() du contrôle DropDownList exportTypesList pour lier les valeurs au contrôle.
exportTypesList.DataBind()
436
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
exportTypesList.DataBind();
1.5.2.7.1.3
Pour remplir le contrôle DropDownList à l'aide de
l'énumération ExportFormatType pour un projet Windows
Procédure
1.
Ouvrez le Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
A la fin de la méthode ConfigureCrystalReports(), attribuez à la propriété DataSource du contrôle
ComboBox exportTypesList les valeurs de l'énumération ExportFormatType.
exportTypesList.DataSource = System.Enum.GetValues(GetType(ExportFormatType))
exportTypesList.DataSource = System.Enum.GetValues(typeof(ExportFormatType));
1.5.2.7.2
Création de méthodes exécutant l'exportation
Dans cette section, vous allez créer les méthodes d'assistance privées exécutant l'exportation suivantes.
●
ExportSetup()
●
ExportSelection()
●
ExportCompletion()
Ces méthodes sont appelées plus loin dans ce tutoriel à partir d'une méthode d'événement de clic. Vous
commencez par créer la méthode d'assistance ExportSetup().
1.5.2.7.2.1
Pour créer la méthode ExportSetup()
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
En haut de la classe, ajoutez trois déclarations de classe.
Private exportPath As String
Private myDiskFileDestinationOptions As DiskFileDestinationOptions
Private myExportOptions As ExportOptions
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
437
private string exportPath;
private DiskFileDestinationOptions diskFileDestinationOptions;
private ExportOptions exportOptions;
Vous instancierez ultérieurement ces classes d'assistance dans la méthode ExportSetup().
4.
A la fin de la classe, créez une méthode d'assistance privée appelée ExportSetup(), sans valeur renvoyée.
Public Sub ExportSetup()
End Sub
private void ExportSetup()
{
}
5.
Dans la méthode, définissez pour la variable de type chaîne exportPath le répertoire racine du disque dur.
exportPath = "C:\Exported\"
exportPath = "C:\\Exported\\";
Remarque
Si vous souhaitez placer le dossier Exported dans le répertoire Web de votre serveur Web, ajoutez la
propriété Request.PhysicalApplicationPath comme préfixe au nom de dossier.
6.
Créez un bloc conditionnel qui vérifie si le répertoire dans la chaîne exportPath existe déjà.
If Not System.IO.Directory.Exists(exportPath) Then
End If
if (!System.IO.Directory.Exists(exportPath))
{
}
7.
Dans le bloc conditionnel, appelez la méthode CreateDirectory() de System.IO.Directory pour créer le
répertoire dans la chaîne exportPath.
System.IO.Directory.CreateDirectory(exportPath)
System.IO.Directory.CreateDirectory(exportPath);
8.
En dehors du bloc conditionnel, instanciez la classe DiskFileDesintationOptions.
myDiskFileDestinationOptions = New DiskFileDestinationOptions()
438
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
diskFileDestinationOptions = new DiskFileDestinationOptions();
9.
Remplissez l'instance ExportOptions avec la propriété ExportOptions de l'instance
hierarchicalGroupingReport.
myExportOptions = hierarchicalGroupingReport.ExportOptions
exportOptions = hierarchicalGroupingReport.ExportOptions;
10. Attribuez à la propriété ExportDestinationType de l'instance ExportOptions l'énumération
ExportDestinationType.DiskFile.
myExportOptions.ExportDestinationType = ExportDestinationType.DiskFile
exportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
11. Pour un projet Windows, effacez les valeurs de la propriété ExportFormatOptions de l'instance ExportOptions.
(Cette ligne de code est inutile pour un site Web car la variable est automatiquement effacée à chaque
événement de clic.)
myExportOptions.ExportFormatOptions = Nothing
exportOptions.ExportFormatOptions = null;
Résultats
Vous allez créer à présent la méthode d'assistance ExportSelection().
1.5.2.7.2.2
Pour créer la méthode ExportSelection()
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Au début de la classe, ajoutez une déclaration booléenne utilisée pour vérifier qu'aucun format d'exportation
n'est sélectionné.
Private selectedNoFormat As Boolean = True
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
439
private bool selectedNoFormat = true;
4.
A la fin de la classe, créez une méthode d'assistance privée appelée ExportSelection(), sans valeur
renvoyée.
Public Sub ExportSelection()
End Sub
private void ExportSelection()
{
}
5.
Dans la méthode, créez une instruction "Select Case" [Visual Basic] ou "switch" [C#] qui
référence les membres de l'énumération ExportFormatType. L'énumération repose sur l'objet SelectedIndex
du contrôle DropDownList exportTypesList que vous avez créé dans la procédure précédente.
Select Case exportTypesList.SelectedIndex
Case ExportFormatType.NoFormat
Case ExportFormatType.CrystalReport
Case ExportFormatType.RichText
Case ExportFormatType.WordForWindows
Case ExportFormatType.Excel
Case ExportFormatType.PortableDocFormat
Case ExportFormatType.HTML32
Case ExportFormatType.HTML40
Case Else
End Select
switch ((ExportFormatType)exportTypesList.SelectedIndex)
{
case ExportFormatType.NoFormat:
break;
case ExportFormatType.CrystalReport:
break;
case ExportFormatType.RichText:
break;
case ExportFormatType.WordForWindows:
break;
case ExportFormatType.Excel:
break;
case ExportFormatType.PortableDocFormat:
break;
case ExportFormatType.HTML32:
break;
case ExportFormatType.HTML40:
break;
default:
440
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
}
break;
Résultats
Vous avez terminé la méthode ExportSelection(). Vous allez créer à présent la méthode d'assistance
ExportCompletion().
1.5.2.7.2.3
Pour créer la méthode ExportCompletion()
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
A la fin de la classe, créez une méthode d'assistance privée appelée ExportCompletion(), sans valeur
renvoyée.
Public Sub ExportCompletion()
End Sub
private void ExportCompletion()
{
}
4.
Dans la méthode, créez un bloc try/catch avec la classe Exception référencée en tant que variable intitulée
"ex".
Try
Catch ex As Exception
End Try
try
{
}
catch (Exception ex)
{
}
5.
Dans le bloc d'essai, créez un bloc conditionnel pour vérifier la variable booléenne selectedNoFormat.
If selectedNoFormat Then
Else
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
441
End If
if (selectedNoFormat)
{
}
else
{
}
6.
Dans le bloc If, attribuez à la propriété Text du contrôle Label message la constante
FORMAT_NOT_SUPPORTED de la classe MessageConstants.
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED;
7.
Dans le bloc Else, appelez la méthode Export() de l'instance hierarchicalGroupingReport.
hierarchicalGroupingReport.Export()
hierarchicalGroupingReport.Export();
8.
Toujours dans le bloc Else, attribuez à la propriété Text du contrôle Label message la constante SUCCESS de
la classe MessageConstants.
message.Text = MessageConstants.SUCCESS
message.Text = MessageConstants.SUCCESS;
9.
Dans le bloc catch, attribuez à la propriété Text du contrôle Label message la constante FAILURE de la classe
MessagesConstants, puis ajoutez-lui la propriété Message du paramètre Exception.
message.Text = MessageConstants.FAILURE & ex.Message
message.Text = MessageConstants.FAILURE + ex.Message;
10. En dehors du bloc try/catch, attribuez à la propriété Visible du contrôle Label message la valeur "True".
message.Visible = True
message.Visible = true;
442
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Résultats
Vous venez de créer les trois méthodes d'assistance privées exécutant l'exportation.
1.5.2.7.3
Création de méthodes configurant plusieurs
formats d'exportation
Dans cette section, vous allez créer les méthodes d'assistance privées configurant plusieurs formats
d'exportation. Toutes ces méthodes sont utilisées de la même façon, à l'exception des méthodes
ConfigureExportToHtml32() et ConfigureExportToHtml40() qui offrent différents modes d'exportation au format
HTML.
●
ConfigureExportToRpt()
●
ConfigureExportToRtf()
●
ConfigureExportToDoc()
●
ConfigureExportToXls()
●
ConfigureExportToPdf()
●
ConfigureExportToHtml32()
●
ConfigureExportToHtml40()
1.5.2.7.3.1
Pour créer la méthode d'assistance
ConfigureExportToRpt()
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
A la fin de la classe, créez une méthode d'assistance privée appelée ConfigureExportToRpt(), sans valeur
renvoyée.
Public Sub ConfigureExportToRpt()
End Sub
private void ConfigureExportToRpt()
{
}
4.
Dans la méthode, attribuez à la propriété ExportFormatType de l'instance ExportOptions l'énumération
ExportFormatType CrystalReport.
myExportOptions.ExportFormatType = ExportFormatType.CrystalReport
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
443
exportOptions.ExportFormatType = ExportFormatType.CrystalReport;
5.
Attribuez à la propriété DiskFileName de l'instance DiskFileDestinationOptions la chaîne exportPath,
puis ajoutez-lui le nom d'un document avec une extension de fichier .rpt.
myDiskFileDestinationOptions.DiskFileName = exportPath &
"Report.rpt"
diskFileDestinationOptions.DiskFileName = exportPath +
"Report.rpt";
6.
Enfin, attribuez à la propriété ExportDestinationOptions de l'instance ExportOptions, l'instance
DiskFileDestinationOptions que vous avez configurée à l'étape précédente.
myExportOptions.ExportDestinationOptions = myDiskFileDestinationOptions
exportOptions.ExportDestinationOptions = diskFileDestinationOptions;
1.5.2.7.3.2
Pour créer la méthode d'assistance
ConfigureExportToRtf
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
A la fin de la classe, créez une méthode d'assistance privée appelée ConfigureExportToRtf(), sans valeur
renvoyée.
Public Sub ConfigureExportToRtf()
End Sub
private void
ConfigureExportToRtf()
{
}
4.
Dans la méthode, attribuez à la propriété ExportFormatType de l'instance ExportOptions l'énumération
ExportFormatType RichText.
myExportOptions.ExportFormatType = ExportFormatType.RichText
exportOptions.ExportFormatType = ExportFormatType.RichText;
444
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
5.
Attribuez à la propriété DiskFileName de l'instance DiskFileDestinationOptions la chaîne exportPath, puis
ajoutez-lui le nom d'un document avec une extension de fichier .rtf.
myDiskFileDestinationOptions.DiskFileName = exportPath & "RichTextFormat.rtf"
diskFileDestinationOptions.DiskFileName = exportPath + "RichTextFormat.rtf";
6.
Enfin, attribuez à la propriété ExportDestinationOptions de l'instance ExportOptions, l'instance
DiskFileDestinationOptions que vous avez configurée à l'étape précédente.
myExportOptions.ExportDestinationOptions = myDiskFileDestinationOptions
exportOptions.ExportDestinationOptions = diskFileDestinationOptions;
1.5.2.7.3.3
Pour créer la méthode d'assistance
ConfigureExportToDoc
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
A la fin de la classe, créez une méthode d'assistance privée appelée ConfigureExportToDoc(), sans valeur
renvoyée.
Public Sub ConfigureExportToDoc()
End Sub
private void
ConfigureExportToDoc()
{
}
4.
Dans la méthode, attribuez à la propriété ExportFormatType de l'instance ExportOptions l'énumération
ExportFormatType WordForWindows.
myExportOptions.ExportFormatType = ExportFormatType.WordForWindows
exportOptions.ExportFormatType = ExportFormatType.WordForWindows;
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
445
5.
Attribuez à la propriété DiskFileName de l'instance DiskFileDestinationOptions la chaîne exportPath, puis
ajoutez-lui le nom d'un document avec une extension de fichier .doc.
myDiskFileDestinationOptions.DiskFileName = exportPath &
"Word.doc"
diskFileDestinationOptions.DiskFileName = exportPath + "Word.doc";
6.
Enfin, attribuez à la propriété ExportDestinationOptions de l'instance ExportOptions, l'instance
DiskFileDestinationOptions que vous avez configurée à l'étape précédente.
myExportOptions.ExportDestinationOptions = myDiskFileDestinationOptions
exportOptions.ExportDestinationOptions = diskFileDestinationOptions;
1.5.2.7.3.4
Pour créer la méthode d'assistance
ConfigureExportToXls
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
A la fin de la classe, créez une méthode d'assistance privée appelée ConfigureExportToXls(), sans valeur
renvoyée.
Public Sub ConfigureExportToXls()
End Sub
private void
ConfigureExportToXls()
{
}
4.
Dans la méthode, attribuez à la propriété ExportFormatType de l'instance ExportOptions l'énumération
ExportFormatType Excel.
myExportOptions.ExportFormatType = ExportFormatType.Excel
exportOptions.ExportFormatType = ExportFormatType.Excel;
446
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
5.
Attribuez à la propriété DiskFileName de l'instance DiskFileDestinationOptions la chaîne exportPath, puis
ajoutez-lui le nom d'un document avec une extension de fichier .xls.
myDiskFileDestinationOptions.DiskFileName = exportPath & "Excel.xls"
diskFileDestinationOptions.DiskFileName = exportPath + "Excel.xls";
6.
Enfin, attribuez à la propriété ExportDestinationOptions de l'instance ExportOptions, l'instance
DiskFileDestinationOptions que vous avez configurée à l'étape précédente.
myExportOptions.ExportDestinationOptions = myDiskFileDestinationOptions
exportOptions.ExportDestinationOptions = diskFileDestinationOptions;
1.5.2.7.3.5
Pour créer la méthode d'assistance
ConfigureExportToPdf
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
A la fin de la classe, créez une méthode d'assistance privée appelée ConfigureExportToPdf(), sans valeur
renvoyée.
Public Sub ConfigureExportToPdf()
End Sub
private void
ConfigureExportToPdf()
{
}
4.
Dans la méthode, attribuez à la propriété ExportFormatType de l'instance ExportOptions l'énumération
ExportFormatType PortableDocFormat.
myExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat
exportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
447
5.
Attribuez à la propriété DiskFileName de l'instance DiskFileDestinationOptions la chaîne exportPath, puis
ajoutez-lui le nom d'un document avec une extension de fichier .pdf.
myDiskFileDestinationOptions.DiskFileName = exportPath & "PortableDoc.pdf"
diskFileDestinationOptions.DiskFileName = exportPath + "PortableDoc.pdf";
6.
Enfin, attribuez à la propriété ExportDestinationOptions de l'instance ExportOptions, l'instance
DiskFileDestinationOptions que vous avez configurée à l'étape précédente.
myExportOptions.ExportDestinationOptions = myDiskFileDestinationOptions
exportOptions.ExportDestinationOptions = diskFileDestinationOptions;
1.5.2.7.3.6
Pour créer la méthode d'assistance
ConfigureExportToHtml32
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
A la fin de la classe, créez une méthode d'assistance privée appelée ConfigureExportToHtml32(), sans
valeur renvoyée.
Public Sub ConfigureExportToHtml32()
End Sub
private void
ConfigureExportToHtml32()
{
}
4.
Dans la méthode, attribuez à la propriété ExportFormatType de l'instance ExportOptions l'énumération
ExportFormatType HTML32.
myExportOptions.ExportFormatType = ExportFormatType.HTML32
exportOptions.ExportFormatType = ExportFormatType.HTML32;
5.
Déclarez et instanciez la classe HTMLFormatOptions avec le nom de variable "html32FormatOptions".
Dim html32FormatOptions As HTMLFormatOptions = New
HTMLFormatOptions()
448
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
HTMLFormatOptions html32FormatOptions = new HTMLFormatOptions();
6.
Attribuez à la propriété HTMLBaseFolderName de l'instance html32FormatOptions la chaîne exportPath et le
nom "Html32Folder".
html32FormatOptions.HTMLBaseFolderName = exportPath &
"Html32Folder"
html32FormatOptions.HTMLBaseFolderName = exportPath +
"Html32Folder";
7.
Attribuez à la propriété HTMLFileName de l'instance html32FormatOptions le nom "html32.html".
html32FormatOptions.HTMLFileName = "html32.html"
html32FormatOptions.HTMLFileName = "html32.html";
8.
Attribuez à la propriété HTMLEnableSeparatedPages de l'instance html32FormatOptions la valeur "False".
html32FormatOptions.HTMLEnableSeparatedPages = False
html32FormatOptions.HTMLEnableSeparatedPages = false;
9.
Attribuez à la propriété HTMLHasPageNavigator de l'instance html32FormatOptions la valeur "False".
html32FormatOptions.HTMLHasPageNavigator = False
html32FormatOptions.HTMLHasPageNavigator = false;
10. Enfin, affectez l'instance html32FormatOptions à la propriété FormatOptions de l'instance ExportOptions.
myExportOptions.ExportFormatOptions = html32FormatOptions
exportOptions.ExportFormatOptions = html32FormatOptions;
1.5.2.7.3.7
Pour créer la méthode d'assistance
ConfigureExportToHtml40
Procédure
1.
Ouvrez le Web Form ou Windows Form.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
449
2.
Dans le menu Affichage, cliquez sur Code.
3.
A la fin de la classe, créez une méthode d'assistance privée appelée ConfigureExportToHtml40(), sans
valeur renvoyée.
Public Sub ConfigureExportToHtml40()
End Sub
private void
ConfigureExportToHtml40()
{
}
4.
Dans la méthode, attribuez à la propriété ExportFormatType de l'instance ExportOptions l'énumération
ExportFormatType HTML40.
myExportOptions.ExportFormatType = ExportFormatType.HTML40
exportOptions.ExportFormatType = ExportFormatType.HTML40;
5.
Déclarez et instanciez la classe HTMLFormatOptions avec le nom de variable "html40FormatOptions".
Dim html40FormatOptions As HTMLFormatOptions = New
HTMLFormatOptions()
HTMLFormatOptions html40FormatOptions = new HTMLFormatOptions();
6.
Attribuez à la propriété HTMLBaseFolderName de l'instance html40FormatOptions la chaîne exportPath et le
nom "Html40Folder".
html40FormatOptions.HTMLBaseFolderName = exportPath &
"Html40Folder"
html40FormatOptions.HTMLBaseFolderName = exportPath +
"Html40Folder";
7.
Attribuez à la propriété HTMLFileName de l'instance html40FormatOptions le nom "html40.html".
html40FormatOptions.HTMLFileName = "html40.html"
html40FormatOptions.HTMLFileName = "html40.html";
8.
Attribuez à la propriété HTMLEnableSeparatedPages de l'instance html40FormatOptions la valeur "True".
html40FormatOptions.HTMLEnableSeparatedPages = True
450
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
html40FormatOptions.HTMLEnableSeparatedPages = true;
9.
Attribuez à la propriété HTMLHasPageNavigator de l'instance html40FormatOptions la valeur "True".
html40FormatOptions.HTMLHasPageNavigator = True
html40FormatOptions.HTMLHasPageNavigator = true;
10. Attribuez à la propriété FirstPageNumber de l'instance html40FormatOptions la valeur 1.
html40FormatOptions.FirstPageNumber = 1
html40FormatOptions.FirstPageNumber = 1;
11. Attribuez à la propriété LastPageNumber de l'instance html40FormatOptions la valeur 3.
html40FormatOptions.LastPageNumber = 3
html40FormatOptions.LastPageNumber = 3;
12. Enfin, affectez l'instance html40FormatOptions à la propriété FormatOptions de l'instance ExportOptions.
myExportOptions.FormatOptions = html40FormatOptions
exportOptions.FormatOptions = html40FormatOptions;
Résultats
Vous avez créé les méthodes d'assistance privées configurant plusieurs formats d'exportation.
1.5.2.7.4
Appel des méthodes à partir de l'instruction Case
Précédemment, vous avez créé une instruction Case dans la méthode ExportSelection() avec plusieurs cas
de figure. Chaque cas est lié à une sélection de l'énumération ExportFormatType. Vous pouvez désormais
appeler chaque méthode de configuration selon les cas correspondants, ainsi que définir la valeur de la valeur
booléenne selectedNoFormat.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
451
1.5.2.7.4.1
Pour appeler les méthodes à partir de
l'instruction Case
Procédure
1.
2.
Localisez la méthode ExportSelection() que vous avez créée dans le cours précédent.
Dans l'instruction Select Case [Visual Basic] ou switch [C#], dans le cas correspondant à
ExportFormatType.NoFormat, attribuez à la variable booléenne selectedNoFormat la valeur True.
selectedNoFormat = True
selectedNoFormat = true;
3.
Dans l'instruction Select Case [Visual Basic] ou switch [C#], dans le cas correspondant à
ExportFormatType.CrystalReport, appelez la méthode ConfigureExportToRpt().
selectedNoFormat = False
ConfigureExportToRpt()
selectedNoFormat = false;
ConfigureExportToRpt();
4.
Dans l'instruction Select Case [Visual Basic] ou switch [C#], dans le cas correspondant à
ExportFormatType.RichText, appelez la méthode ConfigureExportToRtf().
selectedNoFormat = False
ConfigureExportToRtf()
selectedNoFormat = false;
ConfigureExportToRtf();
5.
Dans l'instruction Select Case [Visual Basic] ou switch [C#], dans le cas correspondant à
ExportFormatType.WordForWindows, appelez la méthode ConfigureExportToDoc().
selectedNoFormat = False
ConfigureExportToDoc()
selectedNoFormat = false;
ConfigureExportToDoc();
6.
Dans l'instruction Select Case [Visual Basic] ou switch [C#], dans le cas correspondant à
ExportFormatType.Excel, appelez la méthode ConfigureExportToXls().
selectedNoFormat = False
ConfigureExportToXls()
452
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
selectedNoFormat = false;
ConfigureExportToXls();
7.
Dans l'instruction Select Case [Visual Basic] ou switch [C#], dans le cas correspondant à
ExportFormatType.PortableDocFormat, appelez la méthode ConfigureExportToPdf().
selectedNoFormat = False
ConfigureExportToPdf()
selectedNoFormat = false;
ConfigureExportToPdf();
8.
Dans l'instruction Select Case [Visual Basic] ou switch [C#], dans le cas correspondant à
ExportFormatType.HTML32, appelez la méthode ConfigureExportToHtml32().
selectedNoFormat = False
ConfigureExportToHtml32()
selectedNoFormat = false;
ConfigureExportToHtml32();
9.
Dans l'instruction Select Case [Visual Basic] ou switch [C#], dans le cas correspondant à
ExportFormatType.HTML40, appelez la méthode ConfigureExportToHtml40().
selectedNoFormat = False
ConfigureExportToHtml40()
selectedNoFormat = false;
ConfigureExportToHtml40();
10. Dans le instructions conditionnelles Select Case [Visual Basic] ou switch [C#], dans le cas de
Switch Else [Visual Basic] ou default: [C#], attribuez à la variable booléenne selectedNoFormat
la valeur True.
selectedNoFormat = True
selectedNoFormat = true;
Résultats
Si vous créez un projet dans Visual Studio 2005 ou une version ultérieure, vous devez suivre les procédures de la
section Création de méthodes pour les nouveaux formats d'exportation [page 455] avant de consulter la section
Appel des méthodes pour exécuter l'exportation [page 454].
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
453
1.5.2.7.5
Appel des méthodes pour exécuter l'exportation
Vous pouvez à présent créer la méthode d'événement de clic du contrôle Button exportByType, puis appeler les
méthodes afin d'effectuer l'exportation à partir de cette méthode d'événement.
1.5.2.7.5.1
Pour créer la méthode d'événement
exportByType_Click
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Cliquez deux fois sur le contrôle Button exportByType.
La méthode d'événement exportByType_Click() est créée et s'affiche en mode code.
4.
Dans la méthode d'événement exportByType_Click(), saisissez les appels aux trois méthodes
d'événement que vous avez créées précédemment afin d'effectuer l'exportation.
ExportSetup()
ExportSelection()
ExportCompletion()
ExportSetup();
ExportSelection();
ExportCompletion();
Résultats
Vous êtes maintenant prêt à générer et exécuter votre projet, puis exporter votre rapport dans plusieurs formats.
1.5.2.7.5.2
Pour vérifier le projet
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
454
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
L'application Web ou Windows compile et affiche le rapport Hierarchical Grouping. Un contrôle DropDownList
affiche plusieurs formats d'exportation et un bouton Exporter au type sélectionné apparaît permettant
d'exécuter l'exportation.
4.
Sélectionnez un des formats d'exportation dans le contrôle DropDownList, puis cliquez sur le bouton Exporter
au type sélectionné.
Un message s'affiche en regard du bouton et indique si l'exportation a réussi. Dans le cas contraire, un
message d'erreur apparaît.
5.
Essayez d'effectuer des exportations avec différents formats.
6.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
7.
Vérifiez le répertoire de fichiers Exported sur votre serveur Web ou votre ordinateur utilisant Windows pour
confirmer que les fichiers exportés ont été placés dans le répertoire.
1.5.2.7.6
Addenda : Améliorations apportées au code
d'exportation
Si vous avez installé Visual Studio 2005 ou version ultérieure, ou SAP Crystal Reports, vous avez accès aux
fonctionnalités API améliorées pour l'exportation de votre rapport Crystal dans différents formats.
Dans les fonctionnalités API améliorées de SAP Crystal Reports, l'énumération ExportFormatTypes comporte
deux nouveaux formats d'exportation : des enregistrements Microsoft Excel (fichier .xls contenant uniquement
les données) et des fichiers texte.
En outre, vous disposez à présent des méthodes d'exportation améliorées suivantes dans la classe
ReportDocument :
●
ExportToDisk(CrystalDecisions.Shared.ExportFormatType formatType, string fileName) :
exporte un rapport vers le disque local du serveur Web ou de l'ordinateur utilisant Windows.
●
ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType formatType,
System.Web.HttpResponse response, bool asAttachment, string attachmentName) : exporte
un rapport au type de format spécifié vers une fenêtre de navigateur, ou exporte le rapport sous la forme
d'une pièce jointe.
●
ExportToHttpResponse(CrystalDecisions.Shared.ExportOptions options,
System.Web.HttpResponse response, bool asAttachment, string attachmentName) : exporte
un rapport au type de format spécifié vers une fenêtre de navigateur, ou exporte le rapport sous la forme
d'une pièce jointe.
●
ExportToStream(CrystalDecisions.Shared.ExportFormatType formatType) : exporte les
données d'un rapport avec un type de format spécifié vers un flux d'entrée/sortie.
1.5.2.7.6.1
Création de méthodes pour les nouveaux formats
d'exportation
Dans cette section, vous allez apprendre à modifier votre projet (que vous avez précédemment créé dans ce
tutoriel) afin d'inclure les nouveaux formats d'exportation.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
455
Avant de modifier le code pour inclure les nouveaux formats d'exportation, effectuez toutes les procédures de la
section Tutoriel : Exportation dans plusieurs formats [page 433].
1.5.2.7.6.1.1
Pour modifier le code afin d'inclure les
nouveaux formats d'exportation
Procédure
1.
Ouvrez le projet terminé de ce tutoriel.
2.
Ouvrez le Web Form ou Windows Form.
3.
Dans le menu Affichage, cliquez sur Code.
4.
Dans l'instruction "Select Case" [Visual Basic] ou "switch" [C#] de la méthode
ExportSelection(), ajoutez une instruction Case pour le format ExcelRecord.
Case ExportFormatType.ExcelRecord
case ExportFormatType.ExcelRecord:
break;
Créez les méthodes d'assistance privées configurant plusieurs formats d'exportation. Vous créez d'abord la
méthode ConfigureExportToXlsRec() afin de définir les options d'exportation ExcelRecord.
5.
A la fin de la classe, créez une méthode d'assistance privée appelée ConfigureExportToXlsRec(), sans
valeur renvoyée.
Public Sub ConfigureExportToXlsRec()
End Sub
private void ConfigureExportToXlsRec()
{
}
6.
Dans la méthode, attribuez à la propriété ExportFormatType de l'instance ExportOptions l'énumération
ExportFormatType ExcelRecord.
myExportOptions.ExportFormatType = ExportFormatType.ExcelRecord
exportOptions.ExportFormatType = ExportFormatType.ExcelRecord;
7.
Attribuez à la propriété DiskFileName de l'instance DiskFileDestinationOptions la chaîne exportPath, puis
ajoutez-lui le nom d'un document avec une extension de fichier .xls.
myDiskFileDestinationOptions.DiskFileName = exportPath & "ExcelRecord.xls"
456
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
diskFileDestinationOptions.DiskFileName = exportPath + "ExcelRecord.xls";
8.
Attribuez à la propriété ExportDestinationOptions de l'instance ExportOptions, l'instance
DiskFileDestinationOptions que vous avez configurée à l'étape précédente.
myExportOptions.ExportDestinationOptions = myDiskFileDestinationOptions
exportOptions.ExportDestinationOptions = diskFileDestinationOptions;
Résultats
Vous avez réussi à ajouter deux nouveaux formats d'exportation à votre projet.
Pour continuer l'exploration des fonctionnalités API améliorées, choisissez l'une des méthodes d'exportation
améliorées suivantes :
●
Si vous souhaitez réduire la quantité de code et n'avez pas besoin de définir l'instance ExportOptions,
effectuez la procédure Utilisation de la méthode ExportToDisk() [page 457].
●
Pour un site Web, si vous souhaitez exporter votre rapport dans une fenêtre de navigateur ou sous forme de
pièce jointe dans une fenêtre de navigateur, effectuez la procédure Utilisation de la méthode
ExportToHttpResponse() [page 467].
●
Si vous souhaitez transmettre les données de votre rapport vers un flux d'entrée/sortie, effectuez la
procédure Utilisation de la méthode ExportToStream() [page 473].
1.5.2.7.6.2
Utilisation de la méthode ExportToDisk()
La méthode ExportToDisk() fait appel à une instance d'ExportFormatType et à un paramètre de nom de fichier.
Cette méthode simplifie l'utilisation des méthodes de configuration d'exportation que vous avez créées dans la
section Création de méthodes configurant plusieurs formats d'exportation [page 443].
Dans cette section, vous allez apprendre à créer un projet, à modifier un projet existant et à ajouter un code au
projet pour utiliser la méthode ExportToDisk().
Conditions prérequises :
●
Vous devez créer un projet en suivant les instructions de la section Configuration d'un projet pour la méthode
ExportToDisk() [page 458].
●
Ou vous devez créer un projet en suivant les instructions de la section Création de méthodes pour les
nouveaux formats d'exportation [page 455].
Vous devez ensuite modifier le projet comme indiqué dans la section Préparation du projet pour la méthode
ExportToDisk() [page 460].
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
457
1.5.2.7.6.2.1
Configuration d'un projet pour la méthode
ExportToDisk()
Dans cette section, vous allez apprendre à créer un projet pour la méthode ExportToDisk().
1.5.2.7.6.2.1.1
Pour configurer un nouveau projet pour la
méthode ExportToDisk()
Procédure
1.
2.
Suivez les instructions de la section Ajout de contrôles au Web Form ou Windows Form [page 435].
Créez la méthode ExportSetup() et la méthode ExportSelection() indiquées dans la section Création
de méthodes exécutant l'exportation [page 437].
3.
Dans l'instruction "Select Case" [Visual Basic] ou "switch" [C#] de la méthode
ExportSelection(), ajoutez une instruction Case pour le format ExcelRecord.
Case ExportFormatType.ExcelRecord
case ExportFormatType.ExcelRecord:
break;
4.
Créez un bloc conditionnel pour vérifier la variable booléenne selectedNoFormat.
If selectedNoFormat Then
Else
End If
if (selectedNoFormat)
{
}
else
{
}
5.
Dans le bloc If, attribuez à la propriété Text du contrôle Label message la constante
FORMAT_NOT_SUPPORTED de la classe MessageConstants.
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED;
458
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
6.
Dans le bloc Else, attribuez à la propriété Text du contrôle Label message la constante SUCCESS de la classe
MessageConstants.
message.Text = MessageConstants.SUCCESS
message.Text = MessageConstants.SUCCESS;
7.
Créez un bloc try/catch avec la classe Exception référencée en tant que variable intitulée "ex". Le bloc try
inclut l'instruction "Select Case" [Visual Basic] ou "switch" [C#] et le bloc conditionnel.
Try
Catch ex As Exception
End Try
try
{
}
catch (Exception ex)
{
}
8.
Dans le bloc catch, attribuez à la propriété Text du contrôle Label message la constante FAILURE de la classe
MessagesConstants, puis ajoutez-lui la propriété Message du paramètre Exception.
message.Text = MessageConstants.FAILURE & ex.Message
message.Text = MessageConstants.FAILURE + ex.Message;
9.
En dehors du bloc try/catch, attribuez à la propriété Visible du contrôle Label message la valeur "True".
message.Visible = True
message.Visible = true;
10. Dans le menu Affichage, cliquez sur Concepteur.
11. Cliquez deux fois sur le contrôle Button exportByType.
La méthode d'événement exportByType_Click() est créée et vous passez en mode code.
12. Dans la méthode d'événement exportByType_Click(), saisissez les appels aux méthodes ExportSetup()
et ExportSelection().
ExportSetup()
ExportSelection()
ExportSetup();
ExportSelection();
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
459
1.5.2.7.6.2.2
Préparation du projet pour la méthode
ExportToDisk()
Dans cette section, vous allez apprendre à modifier un projet résultant de la procédure de la section Création de
méthodes pour les nouveaux formats d'exportation [page 455].
Vous devez à présent supprimer certaines lignes de code inutiles pour la méthode ExportToDisk().
1.5.2.7.6.2.2.1
Pour modifier le projet afin d'utiliser la
méthode ExportToDisk()
Procédure
1.
Ouvrez le projet.
2.
Ouvrez le Web Form ou Windows Form.
3.
Dans le menu Affichage, cliquez sur Code.
4.
En haut de la classe, supprimez les déclarations de classe suivantes :
Private myDiskFileDestinationOptions As DiskFileDestinationOptions
Private myExportOptions As ExportOptions
private DiskFileDestinationOptions diskFileDestinationOptions;
private ExportOptions exportOptions;
5.
Dans la méthode ExportSetup(), supprimez toutes les lignes de code situées après le bloc conditionnel. (La
dernière ligne de code qui appelle la propriété ExportFormatOptions s'applique uniquement à un projet
Windows.)
myDiskFileDestinationOptions = New DiskFileDestinationOptions()
myExportOptions = hierarchicalGroupingReport.ExportOptions
myExportOptions.ExportDestinationType = ExportDestinationType.DiskFile
myExportOptions.ExportFormatOptions = Nothing
diskFileDestinationOptions = new DiskFileDestinationOptions();
exportOptions = hierarchicalGroupingReport.ExportOptions;
exportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
exportOptions.ExportFormatOptions = null;
6.
460
Supprimez les méthodes de configuration d'exportation suivantes :
○
ConfigureExportToRpt()
○
ConfigureExportToRtf()
○
ConfigureExportToDoc()
○
ConfigureExportToXls()
○
ConfigureExportToPdf()
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
7.
○
ConfigureExportToHtml32()
○
ConfigureExportToHtml40()
○
ConfigureExportToXlsRec()
○
ConfigureExportToTxt()
Dans les instructions Case Select Case [Visual Basic] ou switch [C#] de ExportSelection(),
supprimez les appels aux méthodes de configuration d'exportation.
8.
Dans la méthode ExportCompletion(), supprimez l'appel à la méthode Export().
9.
Copiez et collez la totalité du code de la méthode ExportCompletion() au début de la méthode
ExportSelection().
10. Supprimez la méthode ExportCompletion() et l'appel à la méthode ExportCompletion() dans
l'événement de clic exportByType.
11. Dans la méthode ExportSelection(), coupez et collez les instructions Case Select Case [Visual
Basic] ou switch [C#] au-dessus du bloc If dans le bloc try.
Le bloc try/catch ressemble maintenant à ceci :
Try
Select Case exportTypesList.SelectedIndex
Case ExportFormatType.NoFormat
selectedNoFormat = True
Case ExportFormatType.CrystalReport
Case ExportFormatType.RichText
Case ExportFormatType.WordForWindows
Case ExportFormatType.Excel
Case ExportFormatType.PortableDocFormat
Case ExportFormatType.HTML32
Case ExportFormatType.HTML40
End Select
If selectedNoFormat Then
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED
Else
message.Text = MessageConstants.SUCCESS
End If
Catch ex As Exception
message.Text = MessageConstants.FAILURE & ex.Message
End Try
try
{
switch ((ExportFormatType)exportTypesList.SelectedIndex)
{
case ExportFormatType.NoFormat:
selectedNoFormat = true;
break;
case ExportFormatType.CrystalReport:
break;
case ExportFormatType.RichText:
break;
case ExportFormatType.WordForWindows:
break;
case ExportFormatType.Excel:
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
461
break;
case ExportFormatType.PortableDocFormat:
break;
case ExportFormatType.HTML32:
break;
case ExportFormatType.HTML40:
break;
case ExportFormatType.ExcelRecord:
break;
}
if (selectedNoFormat)
{
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED;
}
else
{
message.Text = MessageConstants.SUCCESS;
}
}
catch (Exception ex)
{
message.Text = MessageConstants.FAILURE + ex.Message;
}
1.5.2.7.6.2.3
Modification de la méthode ExportSetup()
Dans cette section, vous allez apprendre à modifier la méthode ExportSetup() pour créer des dossiers destinés
aux formats d'exportation HTML32 et HTML40.
1.5.2.7.6.2.3.1
Pour modifier la méthode ExportSetup()
Procédure
1.
Au début de la classe, ajoutez les déclarations de classe suivantes :
Private exportPathHTML32 As String
Private exportPathHTML40 As String
private string exportPathHTML32;
private string exportPathHTML40;
2.
Dans la méthode ExportSetup(), instanciez les variables de type chaîne exportPathHTML32 et
exportPathHTML40 sur le répertoire racine du disque dur.
exportPathHTML32 = "C:\Exported\HTML32\"
exportPathHTML40 = "C:\Exported\HTML40\"
exportPathHTML32 = "C:\\Exported\\HTML32\\";
exportPathHTML40 = "C:\\Exported\\HTML40\\";
462
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Remarque
Si vous souhaitez placer les dossiers dans le répertoire Web de votre serveur Web, ajoutez la propriété
Request.PhysicalApplicationPath comme préfixe au nom de dossier.
3.
Créez un bloc conditionnel qui vérifie si le répertoire dans la chaîne exportPathHTML32 existe déjà.
If Not System.IO.Directory.Exists(exportPathHTML32) Then
End If
if (!System.IO.Directory.Exists(exportPathHTML32))
{
}
4.
Dans le bloc conditionnel, appelez la méthode CreateDirectory() de System.IO.Directory pour créer le
répertoire dans la chaîne exportPathHTML32.
System.IO.Directory.CreateDirectory(exportPathHTML32)
System.IO.Directory.CreateDirectory(exportPathHTML32);
5.
Créez un bloc conditionnel qui vérifie si le répertoire dans la chaîne exportPathHTML40 existe déjà.
If Not System.IO.Directory.Exists(exportPathHTML40) Then
End If
if (!System.IO.Directory.Exists(exportPathHTML40))
{
}
6.
Dans le bloc conditionnel, appelez la méthode CreateDirectory() de System.IO.Directory pour créer le
répertoire dans la chaîne exportPathHTML40.
System.IO.Directory.CreateDirectory(exportPathHTML40)
System.IO.Directory.CreateDirectory(exportPathHTML40);
1.5.2.7.6.2.4
Appel de la méthode ExportToDisk()
Dans cette section, vous allez apprendre à appeler la méthode ExportToDisk() dans chaque instruction Case
de la méthode ExportSelection().
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
463
1.5.2.7.6.2.4.1
Pour appeler la méthode ExportToDisk() dans
la méthode ExportSelection()
Procédure
1.
Dans la méthode ExportSelection(), déclarez une variable de type chaîne et instanciez la variable sur une
chaîne vide.
Dim myFileName As String = ""
string fileName = "";
2.
Dans l'instruction Case ExportFormatType.CrystalReport, procédez comme suit :
a) Attribuez à la chaîne de nom de fichier la chaîne exportPath, puis ajoutez-lui le nom d'un document avec
une extension de fichier .rpt.
myFileName = exportPath & "Report.rpt"
fileName = exportPath + "Report.rpt";
b) Appelez la méthode ExportToDisk() à partir de l'instance hierarchicalGroupingReport, puis
transmettez ExportFormatType.CrystalReport et la chaîne de nom de fichier.
hierarchicalGroupingReport.ExportToDisk(ExportFormatType.CrystalReport,
myFileName)
hierarchicalGroupingReport.ExportToDisk(ExportFormatType.CrystalReport,
fileName);
3.
Dans l'instruction Case ExportFormatType.RichText, procédez comme suit :
a) Attribuez à la chaîne de nom de fichier la chaîne exportPath, puis ajoutez-lui le nom d'un document avec
une extension de fichier .rtf.
myFileName = exportPath & "RichTextFormat.rtf"
fileName = exportPath + "RichTextFormat.rtf";
b) Appelez la méthode ExportToDisk() à partir de l'instance hierarchicalGroupingReport, puis
transmettez ExportFormatType.RichText et la chaîne de nom de fichier.
hierarchicalGroupingReport.ExportToDisk(ExportFormatType.RichText,
myFileName)
hierarchicalGroupingReport.ExportToDisk(ExportFormatType.RichText,
fileName);
464
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
4.
Dans l'instruction Case ExportFormatType.WordForWindows, procédez comme suit :
a) Attribuez à la chaîne de nom de fichier la chaîne exportPath, puis ajoutez-lui le nom d'un document avec
une extension de fichier .doc.
myFileName = exportPath & "Word.doc"
fileName = exportPath + "Word.doc";
b) Appelez la méthode ExportToDisk() à partir de l'instance hierarchicalGroupingReport, puis
transmettez ExportFormatType.WordForWindows et la chaîne de nom de fichier.
hierarchicalGroupingReport.ExportToDisk(ExportFormatType.WordForWindows,
myFileName)
hierarchicalGroupingReport.ExportToDisk(ExportFormatType.WordForWindows,
fileName);
5.
Dans l'instruction Case ExportFormatType.Excel, procédez comme suit :
a) Attribuez à la chaîne de nom de fichier la chaîne exportPath, puis ajoutez-lui le nom d'un document avec
une extension de fichier .xls.
myFileName = exportPath & "Excel.xls"
fileName = exportPath + "Excel.xls";
b) Appelez la méthode ExportToDisk() à partir de l'instance hierarchicalGroupingReport, puis
transmettez ExportFormatType.Excel et la chaîne de nom de fichier.
hierarchicalGroupingReport.ExportToDisk(ExportFormatType.Excel,
myFileName)
hierarchicalGroupingReport.ExportToDisk(ExportFormatType.Excel,
fileName);
6.
Dans l'instruction Case ExportFormatType.PortableDocFormat, procédez comme suit :
a) Attribuez à la chaîne de nom de fichier la chaîne exportPath, puis ajoutez-lui le nom d'un document avec
une extension de fichier .pdf.
myFileName = exportPath & "PortableDoc.pdf"
fileName = exportPath + "PortableDoc.pdf";
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
465
b) Appelez la méthode ExportToDisk() à partir de l'instance hierarchicalGroupingReport, puis
transmettez ExportFormatType.PortableDocFormat et la chaîne de nom de fichier.
hierarchicalGroupingReport.ExportToDisk(ExportFormatType.PortableDocFormat,
myFileName)
hierarchicalGroupingReport.ExportToDisk(ExportFormatType.PortableDocFormat,
fileName);
7.
Dans l'instruction Case ExportFormatType.HTML32 procédez comme suit :
a) Attribuez à la chaîne de nom de fichier la chaîne exportPathHTML32, puis ajoutez-lui le nom d'un
document avec une extension de fichier .html.
myFileName = exportPathHTML32 & "HTML32.html"
fileName = exportPathHTML32 + "HTML32.html";
b) Appelez la méthode ExportToDisk() à partir de l'instance hierarchicalGroupingReport, puis
transmettez ExportFormatType.HTML32 et la chaîne de nom de fichier.
hierarchicalGroupingReport.ExportToDisk(ExportFormatType.HTML32, myFileName)
hierarchicalGroupingReport.ExportToDisk(ExportFormatType.HTML32, fileName);
8.
Dans l'instruction Case ExportFormatType.HTML40 procédez comme suit :
a) Attribuez à la chaîne de nom de fichier la chaîne exportPathHTML40, puis ajoutez-lui le nom d'un
document avec une extension de fichier .html.
myFileName = exportPathHTML40 & "HTML40.html"
fileName = exportPathHTML40 + "HTML40.html";
b) Appelez la méthode ExportToDisk() à partir de l'instance hierarchicalGroupingReport, puis
transmettez ExportFormatType.HTML40 et la chaîne de nom de fichier.
hierarchicalGroupingReport.ExportToDisk(ExportFormatType.HTML40,
myFileName)
hierarchicalGroupingReport.ExportToDisk(ExportFormatType.HTML40,
fileName);
9.
466
Dans l'instruction Case ExportFormatType.ExcelRecord procédez comme suit :
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
a) Attribuez à la chaîne de nom de fichier la chaîne exportPath, puis ajoutez-lui le nom d'un document avec
une extension de fichier .xls.
myFileName = exportPath & "ExcelRecord.xls"
fileName = exportPath + "ExcelRecord.xls";
b) Appelez la méthode ExportToDisk() à partir de l'instance hierarchicalGroupingReport, puis
transmettez ExportFormatType.ExcelRecord et la chaîne de nom de fichier.
hierarchicalGroupingReport.ExportToDisk(ExportFormatType.ExcelRecord,
myFileName)
hierarchicalGroupingReport.ExportToDisk(ExportFormatType.ExcelRecord,
fileName);
Résultats
Vous êtes maintenant prêt à générer et exécuter le projet pour exporter votre rapport Crystal dans différents
formats.
Si vous souhaitez utiliser d'autres méthodes API améliorées, cliquez sur un des liens ci-dessous pour atteindre la
section qui vous intéresse :
●
Utilisation de la méthode ExportToHttpResponse() [page 467]
●
Utilisation de la méthode ExportToStream() [page 473]
1.5.2.7.6.3
Utilisation de la méthode
ExportToHttpResponse()
La méthode ExportToHttpResponse() permet d'exporter votre rapport Crystal vers une fenêtre de navigateur
ou sous forme de pièce jointe. Cette méthode s'applique uniquement aux sites Web.
Les méthodes surchargées disponibles pour la méthode ExportToHttpResponse() sont notamment les
suivantes :
●
ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType formatType,
System.Web.HttpResponse response, bool asAttachment, string attachmentName)
●
ExportToHttpResponse(CrystalDecisions.Shared.ExportOptions options,
System.Web.HttpResponse response, bool asAttachment, string attachmentName)
La méthode ExportToHttpResponse() ne prend pas en charge les exportations vers HTTP Response pour les
formats HTML32 et HTML40. Par conséquent, lorsque vous essayez d'effectuer une exportation au format
HTML32 ou HTML40, un message d'erreur s'affiche.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
467
Si la variable booléenne asAttachment a la valeur True, une boîte de dialogue Téléchargement de fichier apparaît.
Si la variable booléenne asAttachment a la valeur False, le rapport exporté s'ouvre dans la fenêtre du navigateur.
Lorsque vous choisissez d'enregistrer le fichier, le nom de fichier a pour valeur la variable de type chaîne
attachmentName. Si vous ne spécifiez pas la variable attachmentName, le nom de fichier par défaut est "Sans
titre" avec l'extension de fichier spécifiée. Le nom de fichier peut être modifié dans la boîte de dialogue Enregistrer
sous.
1.5.2.7.6.3.1
Utilisation de la méthode
ExportToHttpResponse() avec l'énumération
ExportFormatType
Pour utiliser la méthode ExportToHttpResponse()avec le paramètre ExportFormatType, vous devez effectuer la
procédure Ajout de contrôles au Web Form ou Windows Form [page 435] pour un site Web. Vous n'avez pas
besoin des méthodes ExportSetup(), ExportSelection() et ExportCompletion(). Le code nécessaire est placé dans
la méthode d'événement de clic exportByType.
1.5.2.7.6.3.1.1
Pour utiliser la méthode
ExportToHttpResponse() avec le paramètre ExportFormatType
Procédure
1.
Ouvrez le Web Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Cliquez deux fois sur le contrôle Button exportByType.
La méthode d'événement exportByType_Click() est créée et vous passez en mode code.
4.
Au début de la classe, ajoutez une déclaration de classe ExportOptions.
Private myExportOptions As ExportOptions
private ExportOptions exportOptions;
5.
Dans la méthode d'événement exportByType_Click(), instanciez l'instance ExportOptions.
myExportOptions = New ExportOptions()
exportOptions = new ExportOptions();
6.
Créez un bloc try/catch avec la classe Exception référencée en tant que variable intitulée "ex".
Try
468
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Catch ex As Exception
End Try
try
{
}
catch (Exception ex)
{
}
7.
Dans le bloc try, créez un bloc conditionnel pour vérifier si l'élément sélectionné à partir de l'instance
exportTypesList est égal à l'instance ExportFormatType.NoFormat.
If (exportTypesList.SelectedIndex = ExportFormatType.NoFormat) Then
Else
End If
if ((ExportFormatType)exportTypesList.SelectedIndex == ExportFormatType.NoFormat)
{
}
else
{
}
8.
Dans le bloc If, attribuez à la propriété Text du contrôle Label message la constante
FORMAT_NOT_SUPPORTED de la classe MessageConstants.
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED;
9.
Dans le bloc Else, affectez l'instance ExportFormatType sélectionnée dans exportTypesList à la propriété
ExportFormatType de l'instance ExportOptions.
myExportOptions.ExportFormatType = exportTypesList.SelectedIndex
exportOptions.ExportFormatType =
(ExportFormatType)exportTypesList.SelectedIndex;
10. Dans le bloc Else, appelez la méthode ExportToHttpResponse() de l'instance hierarchicalGroupingReport.
Transmettez l'instance ExportOptions, l'objet de réponse ASP.NET, une valeur booléenne True et une chaîne
de nom de fichier comme paramètres de la méthode.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
469
Remarque
La chaîne de nom de fichier de la pièce jointe ne nécessite aucune extension, car celle-ci est
automatiquement ajoutée au fichier exporté.
hierarchicalGroupingReport.ExportToHttpResponse(myExportOptions,
Response, True, "ExportedReport")
hierarchicalGroupingReport.ExportToHttpResponse(exportOptions,
Response, True, "ExportedReport");
11. Dans le bloc catch, attribuez à la propriété Text du contrôle Label message la constante FAILURE de la classe
MessagesConstants, puis ajoutez-lui la propriété Message du paramètre Exception.
message.Text = MessageConstants.FAILURE & ex.Message
message.Text = MessageConstants.FAILURE + ex.Message;
12. En dehors du bloc try/catch, attribuez à la propriété Visible du contrôle Label message la valeur "True".
message.Visible = True
message.Visible = true;
Résultats
Vous êtes maintenant prêt à générer et exécuter le projet pour exporter votre rapport Crystal dans différents
formats.
Si vous souhaitez utiliser la méthode ExportToHttpResponse() avec la classe ExportOptions, voir Utilisation de la
méthode ExportToHttpResponse() avec la classe ExportOptions [page 470].
Pour utiliser d'autres méthodes API améliorées, cliquez sur un des liens ci-dessous pour atteindre la section qui
vous intéresse :
●
Utilisation de la méthode ExportToDisk() [page 457]
●
Utilisation de la méthode ExportToStream() [page 473]
1.5.2.7.6.3.2
Utilisation de la méthode
ExportToHttpResponse() avec la classe ExportOptions
Pour utiliser la méthode ExportToHttpResponse() avec le paramètre ExportOptions, vous devez effectuer la
procédure Ajout de contrôles au Web Form ou Windows Form [page 435] pour un site Web. Vous n'avez pas
470
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
besoin des méthodes ExportSetup(), ExportSelection() et ExportCompletion(). Le code nécessaire est placé dans
la méthode d'événement de clic exportByType.
1.5.2.7.6.3.2.1
Pour utiliser la méthode
ExportToHttpResponse() avec le paramètre ExportOptions
Procédure
1.
Ouvrez le Web Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Cliquez deux fois sur le contrôle Button exportByType.
La méthode d'événement exportByType_Click() est créée et vous passez en mode code.
4.
Dans la méthode d'événement exportByType_Click(), créez un bloc try/catch avec la classe Exception
référencée en tant que variable intitulée "ex".
Try
Catch ex As Exception
End Try
try
{
}
catch (Exception ex)
{
}
5.
Dans le bloc try, créez un bloc conditionnel pour vérifier si l'élément sélectionné à partir de l'instance
exportTypesList est égal à l'instance ExportFormatType.NoFormat.
If (exportTypesList.SelectedIndex = ExportFormatType.NoFormat) Then
Else
End If
if ((ExportFormatType)exportTypesList.SelectedIndex ==
ExportFormatType.NoFormat)
{
}
else
{
}
6.
Dans le bloc If, attribuez à la propriété Text du contrôle Label message la constante
FORMAT_NOT_SUPPORTED de la classe MessageConstants.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
471
Remarque
La condition If est remplie lorsque la valeur NoFormat du contrôle DropDownList est sélectionnée.
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED;
7.
Dans le bloc Else, appelez la méthode ExportToHttpResponse() de l'instance hierarchicalGroupingReport.
Transmettez l'instance ExportFormatType sélectionnée, l'objet de réponse ASP.NET, une valeur booléenne
True et une chaîne de nom de fichier comme paramètres de la méthode.
Remarque
La chaîne de nom de fichier de la pièce jointe ne nécessite aucune extension, car celle-ci est
automatiquement ajoutée au fichier exporté.
hierarchicalGroupingReport.ExportToHttpResponse(exportTypesList.SelectedIndex,
Response, True, "ExportedReport")
hierarchicalGroupingReport.ExportToHttpResponse((ExportFormatType)exportTypesList
.SelectedIndex,
Response, True, "ExportedReport");
8.
Dans le bloc catch, attribuez à la propriété Text du contrôle Label message la constante FAILURE de la classe
MessagesConstants, puis ajoutez-lui la propriété Message du paramètre Exception.
message.Text = MessageConstants.FAILURE & ex.Message
message.Text = MessageConstants.FAILURE + ex.Message;
9.
En dehors du bloc try/catch, attribuez à la propriété Visible du contrôle Label message la valeur "True".
message.Visible = True
message.Visible = true;
Résultats
Vous êtes maintenant prêt à générer et exécuter le projet pour exporter votre rapport Crystal dans différents
formats.
Pour utiliser d'autres méthodes API améliorées, cliquez sur un des liens ci-dessous pour atteindre la section qui
vous intéresse :
472
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
●
Utilisation de la méthode ExportToDisk() [page 457]
●
Utilisation de la méthode ExportToStream() [page 473]
1.5.2.7.6.4
Utilisation de la méthode ExportToStream()
Dans cette section, vous allez apprendre à utiliser la méthode ExportToStream() pour exporter le rapport vers le
flux d'entrée/sortie sous la forme d'une séquence d'octets. Vous allez ensuite apprendre à écrire la séquence
d'octets dans un fichier au format que vous avez spécifié.
Lorsque vous exportez le rapport au format HTML, les images ne sont pas exportées. Il est recommandé d'utiliser
les méthodes ExportToHttpResponse() pour exporter des rapports au format HTML.
Conditions prérequises :
●
Vous devez créer un projet en suivant les instructions de la section Configuration d'un projet pour la méthode
ExportToStream() [page 473].
●
Ou vous devez créer un projet en suivant les instructions de la section Création de méthodes pour les
nouveaux formats d'exportation [page 455].
Vous devez ensuite modifier le projet comme indiqué dans la section Préparation du projet pour la méthode
ExportToStream() [page 475].
1.5.2.7.6.4.1
Configuration d'un projet pour la méthode
ExportToStream()
Dans cette section, vous allez apprendre à créer un projet pour la méthode ExportToStream().
1.5.2.7.6.4.1.1
Pour configurer un nouveau projet pour la
méthode ExportToStream()
Procédure
1.
Suivez les instructions de la section Ajout de contrôles au Web Form ou Windows Form [page 435].
2.
Créez la méthode ExportSetup() et la méthode ExportSelection() indiquées dans la section Création
de méthodes exécutant l'exportation [page 437].
3.
Dans l'instruction "Select Case" [Visual Basic] ou "switch" [C#] de la méthode
ExportSelection(), ajoutez une instruction Case pour le format ExcelRecord.
Case ExportFormatType.ExcelRecord
case ExportFormatType.ExcelRecord:
break;
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
473
4.
Créez un bloc conditionnel pour vérifier la variable booléenne selectedNoFormat.
If selectedNoFormat Then
Else
End If
if (selectedNoFormat)
{
}
else
{
}
5.
Dans le bloc If, attribuez à la propriété Text du contrôle Label message la constante
FORMAT_NOT_SUPPORTED de la classe MessageConstants.
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED;
6.
Dans le bloc Else, attribuez à la propriété Text du contrôle Label message la constante SUCCESS de la classe
MessageConstants.
message.Text = MessageConstants.SUCCESS
message.Text = MessageConstants.SUCCESS;
7.
Créez un bloc try/catch avec la classe Exception référencée en tant que variable intitulée "ex". Le bloc try
inclut l'instruction "Select Case" [Visual Basic] ou "switch" [C#] et le bloc conditionnel.
Try
Catch ex As Exception
End Try
try
{
}
catch (Exception ex)
{
}
8.
Dans le bloc catch, attribuez à la propriété Text du contrôle Label message la constante FAILURE de la classe
MessagesConstants, puis ajoutez-lui la propriété Message du paramètre Exception.
message.Text = MessageConstants.FAILURE & ex.Message
474
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
message.Text = MessageConstants.FAILURE + ex.Message;
9.
En dehors du bloc try/catch, attribuez à la propriété Visible du contrôle Label message la valeur "True".
message.Visible = True
message.Visible = true;
10. Dans le menu Affichage, cliquez sur Concepteur.
11. Cliquez deux fois sur le contrôle Button exportByType.
La méthode d'événement exportByType_Click() est créée et vous passez en mode code.
12. Dans la méthode d'événement exportByType_Click(), saisissez les appels aux méthodes ExportSetup()
et ExportSelection().
ExportSetup()
ExportSelection()
ExportSetup();
ExportSelection();
1.5.2.7.6.4.2
Préparation du projet pour la méthode
ExportToStream()
Dans cette section, vous allez apprendre à modifier un projet résultant de la procédure de la section Création de
méthodes pour les nouveaux formats d'exportation [page 455].
Vous devez à présent supprimer certaines lignes de code inutiles pour la méthode ExportToStream().
1.5.2.7.6.4.2.1
Pour modifier le projet afin d'utiliser la
méthode ExportToStream()
Procédure
1.
Ouvrez le projet.
2.
Ouvrez le Web Form ou Windows Form.
3.
Dans le menu Affichage, cliquez sur Code.
4.
En haut de la classe, supprimez les déclarations de classe suivantes :
Private myDiskFileDestinationOptions As DiskFileDestinationOptions
Private myExportOptions As ExportOptions
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
475
private DiskFileDestinationOptions diskFileDestinationOptions;
private ExportOptions exportOptions;
5.
Dans la méthode ExportSetup(), supprimez toutes les lignes de code situées après le bloc conditionnel. (La
dernière ligne de code qui appelle la propriété ExportFormatOptions s'applique uniquement à un projet
Windows.)
myDiskFileDestinationOptions = New DiskFileDestinationOptions()
myExportOptions = hierarchicalGroupingReport.ExportOptions
myExportOptions.ExportDestinationType = ExportDestinationType.DiskFile
myExportOptions.ExportFormatOptions = Nothing
diskFileDestinationOptions = new DiskFileDestinationOptions();
exportOptions = hierarchicalGroupingReport.ExportOptions;
exportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
exportOptions.ExportFormatOptions = null;
6.
7.
Supprimez les méthodes de configuration d'exportation suivantes :
○
ConfigureExportToRpt()
○
ConfigureExportToRtf()
○
ConfigureExportToDoc()
○
ConfigureExportToXls()
○
ConfigureExportToPdf()
○
ConfigureExportToHtml32()
○
ConfigureExportToHtml40()
○
ConfigureExportToXlsRec()
Dans les instructions Case Select Case [Visual Basic] ou switch [C#] de ExportSelection(),
supprimez les appels aux méthodes de configuration d'exportation.
8.
Dans la méthode ExportCompletion(), supprimez l'appel à la méthode Export().
9.
Copiez et collez la totalité du code de la méthode ExportCompletion() au début de la méthode
ExportSelection().
10. Supprimez la méthode ExportCompletion() et l'appel à la méthode ExportCompletion() dans
l'événement de clic exportByType.
11. Dans la méthode ExportSelection(), coupez et collez les instructions Case Select Case [Visual
Basic] ou switch [C#] au-dessus du bloc If dans le bloc try.
Le bloc try/catch ressemble maintenant à ceci :
Try
Select Case exportTypesList.SelectedIndex
Case ExportFormatType.NoFormat
selectedNoFormat = True
Case ExportFormatType.CrystalReport
Case ExportFormatType.RichText
Case ExportFormatType.WordForWindows
Case ExportFormatType.Excel
Case ExportFormatType.PortableDocFormat
476
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Case ExportFormatType.HTML32
Case ExportFormatType.HTML40
End Select
If selectedNoFormat Then
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED
Else
message.Text = MessageConstants.SUCCESS
End If
Catch ex As Exception
message.Text = MessageConstants.FAILURE & ex.Message
End Try
try
{
switch ((ExportFormatType)exportTypesList.SelectedIndex)
{
case ExportFormatType.NoFormat:
selectedNoFormat = true;
break;
case ExportFormatType.CrystalReport:
break;
case ExportFormatType.RichText:
break;
case ExportFormatType.WordForWindows:
break;
case ExportFormatType.Excel:
break;
case ExportFormatType.PortableDocFormat:
break;
case ExportFormatType.HTML32:
break;
case ExportFormatType.HTML40:
break;
case ExportFormatType.ExcelRecord:
break;
}
if (selectedNoFormat)
{
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED;
}
else
{
message.Text = MessageConstants.SUCCESS;
}
}
catch (Exception ex)
{
message.Text = MessageConstants.FAILURE + ex.Message;
}
1.5.2.7.6.4.3
Modification des instructions Case dans la
méthode ExportSelection()
Dans cette section, vous allez apprendre à définir une chaîne de nom de fichier pour chaque instruction Case
ExportFormatType.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
477
1.5.2.7.6.4.3.1
Pour modifier les instructions Case dans la
méthode ExportSelection()
Procédure
1.
Dans la méthode ExportSelection(), déclarez une variable de type chaîne et instanciez la variable sur une
chaîne vide.
Dim myFileName As String = ""
string fileName = "";
2.
Dans l'instruction Case ExportFormatType.CrystalReport, attribuez à la chaîne de nom de fichier la chaîne
exportPath, suivie d'un nom de document avec une extension de fichier .rpt.
myFileName = exportPath & "Report.rpt"
myFileName = exportPath + "Report.rpt";
3.
Dans l'instruction Case ExportFormatType.RichText, attribuez à la chaîne de nom de fichier la chaîne
exportPath suivie d'un nom de document avec une extension de fichier .rtf.
myFileName = exportPath & "RichTextFormat.rtf"
myFileName = exportPath + "RichTextFormat.rtf";
4.
Dans l'instruction Case ExportFormatType.WordForWindows, attribuez à la chaîne de nom de fichier la chaîne
exportPath suivie d'un nom de document avec une extension de fichier .doc.
myFileName = exportPath & "Word.doc"
fileName = exportPath + "Word.doc";
5.
Dans l'instruction Case ExportFormatType.Excel, attribuez à la chaîne de nom de fichier la chaîne exportPath
suivie d'un nom de document avec une extension de fichier .xls.
myFileName = exportPath & "Excel.xls"
fileName = exportPath + "Excel.xls";
6.
Dans l'instruction Case ExportFormatType.PortableDocFormat, attribuez à la chaîne de nom de fichier la
chaîne exportPath suivie d'un nom de document avec une extension de fichier .pdf.
myFileName = exportPath & "PortableDoc.pdf"
478
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
fileName = exportPath + "PortableDoc.pdf";
7.
Dans l'instruction Case ExportFormatType.HTML32, attribuez à la chaîne de nom de fichier la chaîne
exportPath suivie d'un nom de document avec une extension de fichier .html.
myFileName = exportPath & "HTML32.html"
fileName = exportPath + "HTML32.html";
8.
Dans l'instruction Case ExportFormatType.HTML40, attribuez à la chaîne de nom de fichier la chaîne
exportPath suivie d'un nom de document avec une extension de fichier .html.
myFileName = exportPath & "HTML40.html"
fileName = exportPath + "HTML40.html";
9.
Dans l'instruction Case ExportFormatType.ExcelRecord, attribuez à la chaîne de nom de fichier la chaîne
exportPath suivie d'un nom de document avec une extension de fichier .xls.
myFileName = exportPath & "ExcelRecord.xls"
fileName = exportPath + "ExcelRecord.xls";
1.5.2.7.6.4.4
Appel de la méthode ExportToStream()
Dans cette section, vous allez apprendre à appeler la méthode ExportToStream() et à écrire les données du
rapport exporté dans un fichier au format que vous avez spécifié.
1.5.2.7.6.4.4.1
Pour appeler la méthode ExportToStream()
dans la méthode ExportSelection()
Procédure
1.
Au-dessus de la signature de classe, ajoutez une déclaration "Imports" [Visual Basic] ou "using"
[C#] au début de la classe pour l'espace de noms System.IO.
Imports System.IO
using System.IO;
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
479
2.
Dans le bloc Else de la méthode ExportSelection(), appelez la méthode ExportToStream() de l'instance
hierarchicalGroupingReport, transmettez l'instance ExportFormatType sélectionnée dans le contrôle
dropdownlist exportTypesList et affectez l'instance à la classe Stream.
Stream myStream =
hierarchicalGroupingReport.ExportToStream(exportTypesList.SelectedIndex)
Stream stream =
hierarchicalGroupingReport.ExportToStream((ExportFormatType)exportTypesList.Selec
tedIndex);
3.
Créez un tableau d'octets de même longueur que l'instance Stream.
Dim myDataArray As byte() = New byte(myStream.Length)
byte[] dataArray = new byte[stream.Length];
4.
Envoyez les données de l'instance Stream au tableau d'octets d'un décalage de zéro jusqu'à la longueur de
l'instance Stream.
myStream.Read(myDataArray, 0, Convert.ToInt32(myStream.Length));
stream.Read(dataArray, 0, Convert.ToInt32(stream.Length));
5.
Créez une instance FileStream qui crée le fichier spécifié par la variable chaîne de nom de fichier.
Dim myFileStream As FileStream = New FileStream(myFileName,
System.IO.FileMode.Create)
FileStream fileStream = new FileStream(fileName, System.IO.FileMode.Create);
6.
Transférez les données stockées dans le tableau d'octets vers le fichier d'un décalage de zéro jusqu'à la
longueur du tableau d'octets.
myFileStream.Write(myDataArray, 0, myDataArray.Length)
fileStream.Write(dataArray, 0, dataArray.Length);
7.
Fermez l'instance FileStream et l'instance Stream.
myFileStream.Close()
myStream.Close()
fileStream.Close();
stream.Close();
480
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
8.
Attribuez à la propriété Text du contrôle Label message la constante SUCCESS de la classe
MessageConstants.
message.Text = MessageConstants.SUCCESS
message.Text = MessageConstants.SUCCESS;
Résultats
Vous êtes maintenant prêt à générer et exécuter le projet pour exporter votre rapport Crystal dans différents
formats.
Si vous souhaitez utiliser d'autres méthodes API améliorées, cliquez sur un des liens ci-dessous pour atteindre la
section qui vous intéresse :
●
Utilisation de la méthode ExportToDisk() [page 457]
●
Utilisation de la méthode ExportToHttpResponse() [page 467]
1.5.2.8
Tutoriel : Filtrage des données à l'aide des formules
de sélection
Dans ce tutoriel, vous allez apprendre à filtrer les données dans le modèle d'objet ReportDocument en définissant
la propriété RecordSelectionFormula de la classe DataDefinition.
Introduction
Les formules de sélection servent à filtrer les enregistrements à afficher dans un rapport Crystal. Pour écrire des
formules de sélection, vous pouvez utiliser la syntaxe Basic ou la syntaxe Crystal.
Dans ce tutoriel, vous allez créer une formule de sélection afin de filtrer les enregistrements clients dans lesquels
le champ Ventes de l'année dernière est supérieur à une valeur spécifique et le champ Nom du client est comparé
à une autre chaîne. Un contrôle DropDownList (Web) ou ComboBox (Windows) sélectionne un opérateur de
comparaison pour le champ Nom du client. Vous pouvez choisir d'afficher les noms de client qui sont égaux,
inférieurs, supérieurs, inférieurs ou égaux, supérieurs ou égaux, ou pas égaux à la valeur de chaîne que vous avez
spécifiée.
La formule est transmise sous forme de variable chaîne à la propriété SelectionFormula de la classe
CrystalReportViewer. Une fois la propriété définie, le rapport Crystal lié au contrôle CrystalReportViewer est filtré
avant d'être affiché.
Ce tutoriel peut également être effectué avec des classes du modèle d'objet CrystalReportViewer, bien qu'il soit
recommandé d'utiliser le modèle d'objet ReportDocument.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
481
Exemple de code
Ce tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez les
instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir d'une
version terminée.
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les fichiers de
chaque version d'exemple de code sont stockés dans les dossiers suivants :
●
Site Web C# : CS_Web_RDObjMod_SavedDataSelectionFormula
●
Projet Windows C# : CS_Win_RDObjMod_SavedDataSelectionFormula
●
Site Web Visual Basic : VB_Web_RDObjMod_SavedDataSelectionFormula
●
Projet Windows Visual Basic : VB_Win_RDObjMod_SavedDataSelectionFormula
Base de données Xtreme
Ce tutoriel utilise un exemple de base de données appelée Xtreme. Le fichier de base de données xtreme.mdb est
fourni dans le package d'exemples de code du SDK de SAP Crystal Reports .NET. Pour utiliser la base de données
Xtreme, vous devez créer manuellement une connexion ODBC à cette base de données.
Informations associées
Choisir le modèle d'objet correct pour votre projet [page 32]
Répertoire d'exemples de rapports [page 15]
1.5.2.8.1
Création d'un rapport
Pour commencer, vous allez créer un rapport Crystal dans lequel vous allez filtrer les données.
1.5.2.8.1.1
Pour créer un rapport Crystal
Contexte
Remarque
Cette procédure fonctionne uniquement avec un projet créé à partir de la procédure Configuration d'un projet
[page 15]. La section Configuration d'un projet contient une configuration de références d'espaces de noms et
de code spécifique nécessaire à cette procédure. Il est impossible de suivre cette procédure sans cette
configuration.
482
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Procédure
1.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du projet affiché en gras,
pointez sur Ajouter, puis cliquez sur Nouvel élément.
2.
Dans la boîte de dialogue Ajouter un nouvel élément, dans la vue Modèles, sélectionnez le modèle Rapport
Crystal.
3.
Dans le champ Nom, saisissez le nom "CustomerBySalesName.rpt", puis cliquez sur Ajouter.
4.
Dans le panneau Créer un document de rapport Crystal de la boîte de dialogue Galerie de rapports Crystal,
sélectionnez en utilisant l' Assistant de création de rapports.
5.
Dans le panneau Choisir un expert, sélectionnez Standard, puis cliquez sur OK.
6.
Dans le panneau Sources de données disponibles de la fenêtre Assistant de création de rapports standard,
développez le dossier Créer une nouvelle connexion.
7.
Dans le sous-dossier qui s'ouvre, développez le dossier ODBC (RDO).
8.
Dans la fenêtre ODBC (RDO), sélectionnez l'entrée DSN ODBC correspondant à l'exemple de base de données
Xtreme, puis cliquez sur Terminer.
Le dossier ODBC (RDO) se développe pour afficher la base de données Xtreme.
9.
Développez le nœud Tables et sélectionnez la table Clients.
10. Cliquez deux fois sur la table Clients pour l'ajouter au panneau Tables sélectionnées, puis cliquez sur Suivant.
11. Utilisez la combinaison de touches CTRL-clic pour sélectionner Nom du client, Ventes de l'année dernière et
Ville.
12. Cliquez sur le bouton > pour déplacer ces champs dans le panneau Champs à afficher, puis cliquez sur le
bouton Terminer.
Le rapport CustomerBySalesName est créé et chargé dans la fenêtre principale de Visual Studio.
13. Cliquez sur Aperçu Rapport principal.
Un aperçu du rapport s'affiche contenant toutes les données disponibles. Vous filtrerez ensuite ces données
par programmation.
14. Cliquez sur Rapport principal pour quitter le mode Aperçu.
1.5.2.8.2
Liaison du rapport
Durant la procédure Configuration d'un projet [page 15], vous avez placé un contrôle CrystalReportViewer dans un
Web Form ou Windows Form. Lors de l'étape précédente, vous avez ajouté un rapport CustomerBySalesName au
projet.
Dans cette section, vous allez instancier le rapport CustomerBySalesName et le lier au contrôle
CrystalReportViewer.
Vous pouvez instancier et lier le rapport de deux façons :
●
En tant que rapport incorporé.
●
En tant que rapport non incorporé.
Choisissez l'une des deux (mais pas les deux) procédures ci-dessous.
●
Si vous utilisez des rapports incorporés, effectuez la procédure suivante afin d'instancier le rapport sous
forme de rapport incorporé.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
483
●
Si vous utilisez des rapports non incorporés, effectuez la seconde procédure afin d'instancier le rapport sous
forme de rapport non incorporé.
1.5.2.8.2.1
Pour instancier le rapport CustomerBySalesName
sous forme de rapport incorporé et le lier au contrôle
CrystalReportViewer
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Ajoutez une nouvelle déclaration de niveau classe pour la classe wrapper du rapport CustomerBySalesName,
en utilisant la variable customerBySalesNameReport. Définissez le modificateur d'accès à private.
Private customerBySalesNameReport As CustomerBySalesName
private CustomerBySalesName customerBySalesNameReport;
4.
Dans la méthode ConfigureCrystalReports(), instanciez la classe wrapper du rapport.
Remarque
Vous avez créé la méthode ConfigureCrystalReports() dans Configuration d'un projet [page 15].
customerBySalesNameReport = New CustomerBySalesName()
customerBySalesNameReport = new CustomerBySalesName();
5.
Sur la ligne suivante, au-dessous de l'instanciation du rapport, liez la propriété ReportSource du contrôle
CrystalReportViewer à la classe de rapport instanciée (nom de la variable : customerBySalesNameReport).
myCrystalReportViewer.ReportSource = customerBySalesNameReport
crystalReportViewer.ReportSource = customerBySalesNameReport;
Résultats
Vous êtes maintenant prêt à générer et exécuter votre projet. Passez à la section suivante ci-dessous.
484
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.2.8.2.2
Pour instancier le rapport CustomerBySalesName
sous forme de rapport non incorporé et le lier au contrôle
CrystalReportViewer
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Ajoutez une nouvelle déclaration de niveau classe pour la classe wrapper du rapport ReportDocument, avec la
variable customerBySalesNameReport. Définissez le modificateur d'accès à private.
Private customerBySalesNameReport As ReportDocument
private ReportDocument customerBySalesNameReport;
Remarque
La classe ReportDocument est un membre de l'espace de noms
CrystalDecisions.CrystalReports.Engine. Vous avez ajouté une déclaration "Imports" [Visual
Basic] ou "using" [C#] pour cet espace de noms dans la section Configuration d'un projet [page 15].
Lorsque vous instanciez ReportDocument et chargez un rapport dans l'espace de noms, vous accédez au
rapport via le SDK sans l'incorporer.
4.
Dans la méthode ConfigureCrystalReports() (que vous avez créée dans la section Configuration d'un
projet [page 15]), instanciez la classe ReportDocument.
customerBySalesNameReport = New ReportDocument()
customerBySalesNameReport = new ReportDocument();
5.
Déclarez une variable chaîne, nommez-la reportPath et affectez-lui un chemin d'accès au rapport local au
moment de l'exécution. Ce chemin est déterminé différemment selon qu'il s'agit d'un site Web ou d'un projet
Windows :
○
Pour un site Web, transmettez le nom du fichier de rapport local sous forme de paramètre de type chaîne
dans la méthode Server.MapPath(). Ceci permet d'associer le rapport local au chemin d'accès du
répertoire de fichiers du disque dur au moment de l'exécution.
Dim reportPath As String = Server.MapPath("CustomerBySalesName.rpt")
string reportPath = Server.MapPath("CustomerBySalesName.rpt");
○
Pour un projet Windows, concaténez la propriété Application.StartupPath avec une barre oblique
inverse et le nom du fichier de rapport local. Ceci permet d'associer le rapport au même répertoire que
celui du fichier exécutable Windows.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
485
Remarque
Au moment de la compilation, vous copierez le rapport dans le répertoire contenant le fichier
exécutable.
Dim reportPath As String = Application.StartupPath & "\" &
"CustomerBySalesName.rpt"
string reportPath = Application.StartupPath + "\\" +
"CustomerBySalesName.rpt";
6.
Appelez la méthode Load() de l'instance ReportDocument et transmettez-lui la variable chaîne reportPath.
customerBySalesNameReport.Load(reportPath)
customerBySalesNameReport.Load(reportPath);
7.
Sur la ligne suivante, sous le chargement du rapport, liez la propriété ReportSource du contrôle
CrystalReportViewer à l'instance ReportDocument.
myCrystalReportViewer.ReportSource = customerBySalesNameReport
crystalReportViewer.ReportSource = customerBySalesNameReport;
Résultats
Que vous ayez choisi d'instancier une classe de rapport incorporé ou une classe de rapport non incorporé via la
classe ReportDocument, le nom de la variable utilisée est identique : customerBySalesNameReport. Vous pouvez
ainsi utiliser un bloc de code commun dans les procédures suivantes.
Vous êtes maintenant prêt à générer et exécuter votre projet.
1.5.2.8.2.3
Pour tester le chargement du rapport
CustomerBySalesName
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
486
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
3.
Si vous utilisez un rapport non incorporé dans un projet Windows, recherchez l'exécutable Windows compilé
dans le sous-répertoire \bin\ [Visual Basic] ou \bin\debug\ [C#], puis copiez le rapport dans ce
sous-répertoire.
Remarque
Pour que le rapport non incorporé soit chargé par l'exécutable Windows au moment de l'exécution, le
rapport doit être stocké dans le même répertoire que l'exécutable Windows.
4.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport apparaît et affiche toutes les lignes de données disponibles. Dans la section suivante, vous allez
commencer à filtrer les données à l'aide de la propriété RecordSelectionFormula.
5.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.2.8.3
Application d'un filtre aux données du rapport
Dans cette section, vous allez apprendre à appliquer un filtre aux données du rapport.
1.5.2.8.3.1
Pour appliquer un filtre aux données du rapport
Procédure
1.
Ouvrez le Web Form ou le Windows Form en mode Design.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Au début de la classe, ajoutez trois nouvelles déclarations de variables de niveau classe qui représenteront les
valeurs selon lesquelles les données seront filtrées.
Private salesAmount As String
Private operatorValue As String
Private customerName As String
private string salesAmount;
private string operatorValue;
private string customerName;
4.
Si vous créez un projet Windows, ajoutez une déclaration de variable de niveau classe supplémentaire, une
variable booléenne appelée useDefaultValues, puis affectez-lui la valeur True.
Private useDefaultValues As Boolean = True
private bool useDefaultValues = true;
5.
Dans la méthode ConfigureCrystalReports(), créez un bloc conditionnel.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
487
○
Si vous créez un site Web, créez un bloc conditionnel Not IsPostBack. Placez ce bloc au-dessus du code
existant dans la méthode.
If Not IsPostBack Then
End If
if (!IsPostBack)
{
}
○
Si vous créez un projet Windows, créez un bloc conditionnel useDefaultValues. Placez ce bloc au-dessus
du code existant dans la méthode.
If useDefaultValues Then
End If
if (useDefaultValues)
{
}
6.
Dans le bloc conditionnel, affectez les valeurs 4000, < et K aux trois variables de niveau classe.
Ces valeurs sont affectées dans un bloc conditionnel, car plus tard vous les remplacerez par un événement de
clic.
salesAmount = "4000"
operatorValue = "<"
customerName = "K"
salesAmount = "4000";
operatorValue = "<";
customerName = "K";
7.
Immédiatement en dessous et en dehors du bloc conditionnel, créez une chaîne selectionFormula dans
laquelle vous ajoutez des littéraux aux variables de niveau classe que vous venez de créer.
Dim selectionFormula As String = "{Customer.Last Year's Sales} >
" _
& salesAmount _
& " AND Mid({Customer.Customer Name}, 1, 1) " _
& operatorValue _
& "'" _
& customerName _
& "'"
string selectionFormula = "{Customer.Last Year's Sales} > "
+ salesAmount
+ " AND Mid({Customer.Customer Name}, 1, 1) "
+ operatorValue
+ "'"
+ customerName
+ "'";
488
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
8.
Dans le code de liaison de rapport que vous avez créé précédemment, créez un saut de ligne juste au-dessus
de la ligne de code dans laquelle customerBySalesName est affecté à la propriété ReportSource du contrôle
CrystalReportViewer.
9.
Dans ce saut de ligne, affectez la variable chaîne selectionFormula à l'instance ReportDocument.
customerBySalesNameReport.DataDefinition.RecordSelectionFormula =
selectionFormula
customerBySalesNameReport.DataDefinition.RecordSelectionFormula =
selectionFormula;
10. Compilez et affichez votre application.
Les données devraient maintenant être filtrées.
11. Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
Résultats
Dans la section suivante, vous allez créer des contrôles sur le formulaire qui permettront d'ajuster de façon
dynamique la formule de sélection.
1.5.2.8.4
Ajout de contrôles pour le filtrage dynamique
Dans cette section, vous allez ajouter des contrôles que vous utiliserez dans la formule de sélection. Ces contrôles
permettront de filtrer les données de façon dynamique.
1.5.2.8.4.1
sélection
Pour ajouter des contrôles dans la formule de
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Si vous développez un site Web, procédez comme suit :
a) Cliquez sur le contrôle CrystalReportViewer pour le sélectionner.
b) Appuyez sur la FLECHE GAUCHE du clavier afin de faire apparaître un curseur clignotant, puis appuyez
cinq fois sur ENTREE.
Le contrôle CrystalReportViewer descend de cinq lignes.
4.
Si vous développez un projet Windows, procédez comme suit :
a) Cliquez sur le contrôle CrystalReportViewer pour le sélectionner.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
489
b) Dans la fenêtre Propriétés, attribuez à la propriété Dock la valeur "Bottom".
c) Redimensionnez le contrôle CrystalReportViewer afin d'afficher environ trois lignes au-dessus.
d) Dans la fenêtre Propriétés, attribuez à la propriété Anchor la valeur "Top, Bottom, Left, Right".
5.
Dans la boîte à outils, faites glisser un contrôle Label en haut à gauche du formulaire.
6.
Dans la fenêtre Propriétés, attribuez à la propriété Text la valeur "Afficher les clients suivants :".
7.
Dans la boîte à outils, faites glisser un second contrôle Label sur le formulaire en dessous du premier.
8.
Dans la fenêtre Propriétés, attribuez à la propriété Text la valeur "- ventes de l'année dernière > $".
9.
Dans la boîte à outils, faites glisser un troisième contrôle Label sur le formulaire en dessous du second.
10. Dans la fenêtre Propriétés, attribuez à la propriété Text la valeur "- première lettre du nom".
11. Dans la boîte à outils, faites glisser un contrôle TextBox à droite du second contrôle Label.
12. Dans la fenêtre Propriétés, attribuez à ID la valeur "lastYearsSales".
13. Dans la boîte à outils, faites glisser un contrôle DropDownList (Web) ou ComboBox (Windows) à droite du
troisième contrôle Label.
14. Dans la fenêtre Propriétés, attribuez à ID la valeur "operatorValueList".
15. Dans la boîte à outils, faites glisser un contrôle TextBox à droite du contrôle DropDownList (Web) ou du
contrôle ComboBox (Windows).
16. Dans la fenêtre Propriétés, attribuez à ID la valeur "letterOfName".
17. Dans la boîte à outils, faites glisser un contrôle Button en dessous du troisième contrôle Label.
18. Dans la fenêtre Propriétés, attribuez à ID la valeur "redisplay" et à Text la valeur "Réafficher le rapport".
19. Dans la boîte à outils, faites glisser un contrôle Label en dessous du contrôle Button.
20. Dans la fenêtre Propriétés, attribuez à ID la valeur "formula" et laissez la propriété Text vide.
Vérifiez que le contrôle CrystalReportViewer se trouve bien juste en dessous de ces contrôles.
21. Dans le menu Fichier, cliquez sur Enregistrer tout.
Résultats
Dans la section suivante, vous allez remplir le contrôle DropDownList (Web) ou ComboBox (Windows).
1.5.2.8.5
Définition du contenu du contrôle DropDownList ou
ComboBox
Le contrôle DropDownList (Web) ou le contrôle ComboBox (Windows) requiert une liste de valeurs d'opérateurs
(égal à, supérieur à, etc.). Le moyen le plus courant de remplir ce contrôle consiste à fournir cette liste de valeurs
sous la forme d'un énumérateur.
490
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.2.8.5.1
ComboBox
Pour remplir le contrôle DropDownList ou
Procédure
1.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du projet affiché en gras,
pointez sur Ajouter, puis cliquez sur Nouvel élément.
2.
Dans la boîte de dialogue Ajouter un nouvel élément, sélectionnez Classe.
3.
Saisissez le nom "CeComparisonOperator", puis cliquez sur OK.
4.
Dans le fichier de classe, remplacez le mot class par enum.
Remarque
Dans Visual Basic, n'oubliez pas de remplacer à la fois la signature d'ouverture et de fermeture. Dans C#,
supprimez le constructeur.
5.
Saisissez les valeurs d'énumération suivantes.
EqualTo
GreaterThan
GreaterThanOrEqualTo
LessThan
LessThanOrEqualTo
NotEqualTo
EqualTo,
GreaterThan,
GreaterThanOrEqualTo,
LessThan,
LessThanOrEqualTo,
NotEqualTo
6.
Ouvrez le Web Form ou le Windows Form en mode Design.
7.
Dans le menu Affichage, cliquez sur Code.
8.
Dans la méthode ConfigureCrystalReports(), vous remplissez maintenant l'instance operatorValueList
avec des valeurs de l'énumération CeComparisonOperator. Ce code est placé dans un emplacement différent
selon que vous créez un site Web ou un projet Windows.
○
Dans un site Web, insérez l'affectation et la liaison de la propriété DataSource au sein du bloc conditionnel
Not IsPostBack.
operatorValueList.DataSource =
System.Enum.GetValues(GetType(CeComparisonOperator))
operatorValueList.DataBind()
operatorValueList.DataSource =
System.Enum.GetValues(typeof(CeComparisonOperator));
operatorValueList.DataBind();
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
491
○
Dans un projet Windows, insérez uniquement l'affectation de la propriété DataSource au sein du bloc
conditionnel useDefaultValues.
operatorValueList.DataSource =
System.Enum.GetValues(GetType(CeComparisonOperator))
operatorValueList.DataSource =
System.Enum.GetValues(typeof(CeComparisonOperator));
Remarque
Dans un projet Windows, il est inutile d'appeler une méthode DataBind().
9.
Au bas de la méthode ConfigureCrystalReports(), affectez la chaîne selectionFormula à la propriété
Text du contrôle Label formula.
formula.Text = selectionFormula
formula.Text = selectionFormula;
10. Compilez et affichez l'application.
La liste d'opérateurs et tous les autres contrôles devraient s'afficher correctement.
11. Fermez votre navigateur.
Résultats
Dans la section suivante, vous allez créer une méthode qui extrait des sélections à partir de ce contrôle lorsqu'un
utilisateur clique sur le bouton Réafficher le rapport.
1.5.2.8.6
Extraction des sélections à partir du contrôle
Dans cette section, vous allez extraire des sélections à partir du contrôle DropDownList (Web) ou ComboBox
(Windows).
1.5.2.8.6.1
Pour extraire des sélections à partir du contrôle
Procédure
1.
Ouvrez le Web Form ou le Windows Form en mode Design.
2.
Dans le menu Affichage, cliquez sur Code.
492
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
3.
A la fin de la classe, créez une méthode d'assistance privée GetSelectedOperator() qui renvoie une valeur de
chaîne.
Private Function GetSelectedOperator() As String
End Function
private string GetSelectedOperator()
{
}
4.
Dans la méthode, déclarez une chaîne selectedOperator et affectez-lui une valeur de chaîne vide.
Dim selectedOperator As String = ""
string selectedOperator = "";
5.
Toujours dans la méthode, créez une instruction Select Case/switch case qui vérifie l'index sélectionné dans
le contrôle de liste et renvoie la valeur d'énumération correspondante.
Remarque
Dans C#, vous devez effectuer explicitement un cast de l'index sélectionné en énumération dans la
signature switch.
Select Case operatorValueList.SelectedIndex
Case CeComparisonOperator.EqualTo
selectedOperator = "="
Case CeComparisonOperator.GreaterThan
selectedOperator = ">"
Case CeComparisonOperator.GreaterThanOrEqualTo
selectedOperator = ">="
Case CeComparisonOperator.LessThan
selectedOperator = "<"
Case CeComparisonOperator.LessThanOrEqualTo
selectedOperator = "<="
Case CeComparisonOperator.NotEqualTo
selectedOperator = "<>"
End Select
switch ((CeComparisonOperator)operatorValueList.SelectedIndex)
{
case CeComparisonOperator.EqualTo:
selectedOperator = "=";
break;
case CeComparisonOperator.GreaterThan:
selectedOperator = ">";
break;
case CeComparisonOperator.GreaterThanOrEqualTo:
selectedOperator = ">=";
break;
case CeComparisonOperator.LessThan:
selectedOperator = "<";
break;
case CeComparisonOperator.LessThanOrEqualTo:
selectedOperator = "<=";
break;
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
493
}
6.
case CeComparisonOperator.NotEqualTo:
selectedOperator = "<>";
break;
Renvoyez la chaîne selectedOperator à partir de la méthode.
Return selectedOperator
return selectedOperator;
7.
Dans le menu Fichier, cliquez sur Enregistrer tout.
Résultats
Dans la dernière section, vous allez ajouter un événement de clic pour que les nouvelles valeurs de formule de
sélection soient appliquées au rapport lorsqu'un utilisateur clique sur le bouton.
1.5.2.8.7
Ajout d'un événement de clic
La dernière étape de configuration du filtrage dynamique consiste à ajouter l'événement de clic et à écrire le code
permettant d'appliquer les nouvelles valeurs de formule de sélection au rapport.
1.5.2.8.7.1
Pour ajouter l'événement de clic
Procédure
1.
Ouvrez le Web Form ou le Windows Form en mode Design.
2.
Cliquez deux fois sur le contrôle Button.
3.
La classe code-behind est chargée et un événement de clic est créé.
4.
Dans la méthode, attribuez à la variable de niveau classe "salesAmount" la propriété Text de l'instance du
contrôle lastYearsSales.
salesAmount = lastYearsSales.Text
salesAmount = lastYearsSales.Text;
5.
Attribuez à la variable de niveau classe "operatorValue" la valeur renvoyée par la méthode d'assistance
GetSelectedOperator.
operatorValue = GetSelectedOperator()
494
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
operatorValue = GetSelectedOperator();
6.
Attribuez à la variable de niveau classe "customerName" la propriété Text de l'instance du contrôle
letterOfName.
customerName = letterOfName.Text
customerName = letterOfName.Text;
7.
Si vous générez un projet Windows, attribuez à la variable de niveau classe "useDefaultValues" la valeur False.
Remarque
Ceci permet d'ignorer le bloc conditionnel de la méthode ConfigureCrystalReports() qui définit les valeurs
par défaut des variables de niveau classe.
useDefaultValues = False
useDefaultValues = false;
8.
Toujours dans la méthode, appelez la méthode ConfigureCrystalReports() pour procéder au filtrage et à
la liaison du rapport.
ConfigureCrystalReports()
ConfigureCrystalReports();
Résultats
Vous pouvez maintenant tester l'application.
1.5.2.8.8
Test du filtrage des données
Dans la section finale, vous testez le filtrage des données.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
495
1.5.2.8.8.1
Pour tester le filtrage des données
Procédure
1.
Compilez et affichez votre application.
2.
Vérifiez que le rapport s'affiche avec les valeurs de filtrage par défaut.
3.
Saisissez "200000" dans Ventes de l'année dernière.
4.
Sélectionnez GreaterThan dans le contrôle DropDownList (Web) ou ComboBox (Windows).
5.
Saisissez "M" dans le contrôle TextBox, puis cliquez sur Réafficher le rapport.
Les données du rapport qui s'affiche sont filtrées de la manière spécifiée ci-dessus.
6.
Fermez votre navigateur.
1.5.2.8.9
Addenda : Améliorations apportées au code des
formules de sélection
Si vous avez installé SAP Crystal Reports 2008, vous avez accès aux fonctionnalités API améliorées qui filtrent les
données dans le modèle d'objet ReportDocument en définissant la formule SavedDataSelection de la classe
DataDefinition.
Dans les procédures précédentes, vous avez appris à utiliser la formule RecordSelection pour filtrer les
données après un événement de clic.
Dans ce tutoriel, vous allez modifier la méthode redisplay_Click afin d'utiliser la formule SavedDataSelection
pour filtrer les données après un événement de clic. La formule SavedDataSelection permet de d'appliquer le
filtrage sur les données enregistrées sans qu'il soit nécessaire d'accéder une nouvelle fois à la base de données.
1.5.2.8.9.1
Modification du projet pour la formule
SavedDataSelection
Si vous avez effectué toutes les procédures de la section Tutoriel : Filtrage des données à l'aide des formules de
sélection [page 481], vous devez d'abord supprimer certaines lignes de code indiquées dans la procédure
suivante.
496
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.2.8.9.1.1
Pour modifier le projet afin d'utiliser la formule
SavedDataSelection
Procédure
1.
Ouvrez le projet terminé de ce tutoriel.
2.
Ouvrez le Web Form ou Windows Form.
3.
Dans le menu Affichage, cliquez sur Code.
4.
Si vous développez un projet Windows, supprimez la variable de niveau classe nommée
"useDefaultValues".
5.
Si vous développez un projet Web, dans la méthode ConfigureCrystalReports(), supprimez le bloc
conditionnel sans supprimer le code qu'il contient.
La méthode ConfigureCrystalReports() modifiée doit ressembler à ceci :
Private Sub ConfigureCrystalReports()
salesAmount = "4000"
operatorValue = "<"
customerName = "K"
Dim selectionFormula As String = "{Customer.Last Year's Sales} > " &
salesAmount _
& " AND Mid({Customer.Customer Name}, 1, 1) " & operatorValue & "'" &
customerName & "'"
operatorValueList.DataSource =
System.Enum.GetValues(GetType(CeComparisonOperator))
operatorValueList.DataBind()
customerBySalesNameReport = New ReportDocument()
Dim reportPath As String = Server.MapPath("CustomerSalesByReport.rpt")
customerBySalesNameReport.Load(reportPath)
customerBySalesNameReport.DataDefinition.RecordSelectionFormula =
selectionFormula
myCrystalReportViewer.ReportSource = customerBySalesNameReport
formula.Text = selectionFormula
End Sub
private void ConfigureCrystalReports()
{
salesAmount = "4000";
operatorValue = "<";
customerName = "K";
string selectionFormula = "{Customer.Last Year's Sales} > " + salesAmount
+ " AND Mid({Customer.Customer Name}, 1, 1) " + operatorValue + "'" +
customerName + "'";
operatorValueList.DataSource =
System.Enum.GetValues(typeof(CeComparisonOperator));
operatorValueList.DataBind();
customerBySalesNameReport = new ReportDocument();
string reportPath = Server.MapPath("CustomerBySalesName.rpt");
customerBySalesNameReport.Load(reportPath);
customerBySalesNameReport.DataDefinition.RecordSelectionFormula =
selectionFormula;
crystalReportViewer.ReportSource = customerBySalesNameReport;
formula.Text = selectionFormula;
}
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
497
1.5.2.8.9.2
Ajout d'un événement qui applique la formule
SavedDataSelection
Dans cette section, vous allez modifier la méthode redisplay_Click en appliquant la formule
SavedDataSelection aux valeurs selectionFormula du rapport.
1.5.2.8.9.2.1
Pour ajouter l'événement de clic
Procédure
1.
Ouvrez le Web Form ou Windows Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Dans la méthode redisplay_Click, supprimez la ligne qui appelle la méthode
ConfigureCrystalReports().
4.
Créez une chaîne selectionFormula dans laquelle vous ajoutez des littéraux aux variables de niveau classe.
Dim selectionFormula As String = "{Customer.Last Year's Sales} > " _
& salesAmount _
& " AND Mid({Customer.Customer Name}, 1, 1) " _
& operatorValue _
& "'" _
& customerName _
& "'"
string selectionFormula = "{Customer.Last Year's Sales} > "
+ salesAmount
+ " AND Mid({Customer.Customer Name}, 1, 1) "
+ operatorValue
+ "'"
+ customerName
+ "'";
5.
Affectez la variable chaîne selectionFormula à l'instance ReportDocument.
customerBySalesNameReport.DataDefinition.SavedDataSelectionFormula =
selectionFormula
customerBySalesNameReport.DataDefinition.SavedDataSelectionFormula =
selectionFormula;
6.
Sur la ligne suivante, liez la propriété ReportSource du contrôle CrystalReportViewer à l'instance
ReportDocument.
myCrystalReportViewer.ReportSource = customerBySalesNameReport
crystalReportViewer.ReportSource = customerBySalesNameReport;
7.
Au bas de la méthode , affectez la chaîne selectionFormula à la propriété Text du contrôle Label de la
formule.
formula.Text = selectionFormula
498
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
formula.Text = selectionFormula;
Résultats
Vous pouvez maintenant tester l'application.
1.5.2.8.9.3
Test du filtrage des données
Dans cette section, vous testez le filtrage des données.
1.5.2.8.9.3.1
Pour tester le filtrage des données
Procédure
1.
Compilez et affichez votre application.
2.
Vérifiez que le rapport s'affiche avec les valeurs de filtrage par défaut.
3.
Saisissez "30000" dans Ventes de l'année dernière.
4.
Sélectionnez GreaterThan dans le contrôle DropDownList (Web) ou ComboBox (Windows).
5.
Saisissez "H" dans le contrôle TextBox, puis cliquez sur Réafficher le rapport.
Le rapport est réaffiché, avec tous les clients dont le nom commence par les lettres H à K et dont les ventes
sont supérieures à 30 000 $.
6.
Remplacez "H" par "S" dans le contrôle TextBox, puis cliquez sur Réafficher le rapport.
Le rapport est réaffiché sans aucune donnée. Cela est dû au fait que la lettre "S" est en dehors des
paramètres initiaux définis dans la méthode ConfigureCrystalReports().
7.
Fermez votre navigateur.
1.5.2.9
Tutoriel : Affichage de parties de rapport à l'aide du
contrôle CrystalReportPartsViewer
Dans ce tutoriel, vous allez apprendre à diviser le rapport en plusieurs parties et à afficher chaque partie en
cliquant sur une série de liens hypertexte successifs.
Introduction
Dans ce tutoriel, vous allez apprendre à diviser le rapport en plusieurs parties et à afficher chaque partie en
cliquant sur une série de liens hypertexte successifs. Les liens hypertexte vont du groupe de résumé de rapport
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
499
de base aux informations les plus détaillées sur le rapport. Vous allez définir le point de départ, puis chaque lien
hypertexte successif du rapport. Pour afficher le rapport en plusieurs parties, vous allez affecter le rapport à un
autre contrôle appelé CrystalReportPartsViewer.
Remarque
Les parties de rapport sont utilisées uniquement dans les sites Web ; elles ne sont pas disponibles pour les
projets Windows.
Il existe deux principaux moyens de visualiser un rapport :
●
Vous pouvez visualiser la totalité du rapport.
●
Vous pouvez visualiser le rapport sous forme de série de parties de rapport liées.
Visualisation de la totalité du rapport
Les rapports s'affichent généralement sous la forme d'un document unique (composé d'une ou de plusieurs
pages) dans lequel des informations détaillées sont regroupées par catégories, sous-catégories et lignes de
détails individuelles.
Par exemple, la base de données Xtreme Access fournie avec SAP Crystal Reports contient des données client
sur les magasins de bicyclettes dans de nombreux endroits du monde. L'un des moyens classiques de visualiser
les données dans un rapport consiste à regrouper les magasins de bicyclettes en fonction des régions, puis des
villes et à faire apparaître des lignes d'informations sur chaque magasin au niveau des détails.
Le contrôle CrystalReportViewer permet d'afficher la totalité d'un rapport.
Visualisation d'un rapport sous la forme d'une série de parties liées
Avec l'avènement des portails Web et de la navigation Web sur les téléphones cellulaires, lesquels offrent tous
deux une surface de visualisation très limitée pour consulter les informations, une nouvelle méthode d'affichage
des rapports a été mise au point.
Pour ce faire, le rapport complet qui se compose de catégories de groupes, de sous-catégories et de lignes de
détails est redéfini sous la forme d'une série de parties de rapport. Ces parties s'affichent ensuite à travers une
série de pages liées. Dans ce scénario, le groupe d'informations de la catégorie la plus élevée s'affiche en premier.
Lorsqu'un élément de ce groupe de niveau supérieur est sélectionné, le groupe d'informations d'une souscatégorie s'affiche. Cette exploration continue jusqu'à ce que les lignes de détails individuelles d'une souscatégorie donnée soient atteintes.
Par exemple, les données client sur les magasins de bicyclettes de la base de données Xtreme s'affichent au
départ sous la forme d'une liste de régions. Lorsque vous sélectionnez une région, les villes de cette région
apparaissent. Lorsque vous sélectionnez une ville, les lignes de détails sur les magasins de bicyclettes de la ville
en question apparaissent.
Cette division en plusieurs parties d'un rapport permet d'accéder facilement à un rapport long et complexe sur
une surface de visualisation très limitée.
500
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Le contrôle CrystalReportPartsViewer permet d'afficher des rapports sous la forme d'une série de parties
liées.
Exemple de code
Ce tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez les
instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir d'une
version terminée.
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les noms des
dossiers de chaque version d'exemple de code sont les suivants :
●
Site Web C# : CS_Web_RDObjMod_ReportParts
●
Site Web Visual Basic : VB_Web_RDObjMod_ReportParts
Base de données Xtreme
Ce tutoriel utilise un exemple de base de données appelée Xtreme. Le fichier de base de données xtreme.mdb est
fourni dans le package d'exemples de code du SDK de SAP Crystal Reports .NET. Pour utiliser la base de données
Xtreme, vous devez créer manuellement une connexion ODBC à cette base de données.
Informations associées
Répertoire d'exemples de rapports [page 15]
1.5.2.9.1
Création d'un rapport
Commencez par créer un rapport à partir des informations de la base de données Xtreme.
1.5.2.9.1.1
Pour créer un rapport avec des paramètres
Procédure
1.
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nom du projet affiché en gras,
pointez sur Ajouter, puis cliquez sur Nouvel élément.
2.
Dans la boîte de dialogue Ajouter un nouvel élément, dans la vue Modèles, sélectionnez le modèle "Rapport
Crystal".
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
501
3.
Dans le champ Nom, saisissez le nom "Customers.rpt", puis cliquez sur Ajouter.
4.
Dans le panneau Créer un document de rapport Crystal de la boîte de dialogue Galerie de rapports Crystal,
sélectionnez en utilisant l' Assistant de création de rapports.
5.
Dans le panneau Choisir un expert, sélectionnez Standard, puis cliquez sur OK.
6.
Dans le panneau Sources de données disponibles de la fenêtre Assistant de création de rapports standard,
développez le dossier Créer une nouvelle connexion.
7.
Dans le sous-dossier qui s'ouvre, développez le dossier ODBC (RDO).
8.
Dans la fenêtre ODBC (RDO), sélectionnez l'entrée DSN ODBC correspondant à la base de données Xtreme,
puis cliquez sur Terminer.
Le dossier ODBC (RDO) se développe pour afficher la base de données Xtreme.
9.
Développez le nœud Tables et sélectionnez la table Clients.
10. Cliquez deux fois sur la table Clients pour l'ajouter au panneau Tables sélectionnées, puis cliquez sur Suivant.
11. Utilisez la combinaison de touches CTRL-clic pour sélectionner Pays, Nom du client, Ventes de l'année
dernière, Région et Ville.
12. Cliquez sur le bouton > pour déplacer ces champs dans le panneau Champs à afficher, puis cliquez sur le
bouton Suivant.
13. Dans le panneau Champs disponibles, sous Champs du rapport, suivez les instructions suivantes :
a) Sélectionnez Pays et cliquez sur le bouton > pour déplacer le champ dans le panneau Regrouper par.
b) Sélectionnez Région et cliquez sur le bouton > pour déplacer le champ dans le panneau Regrouper par.
c) Cliquez sur Suivant.
Des champs résumés sont créés pour le champ Ventes de l'année dernière dans les groupes Pays et
Région.
14. Cliquez sur Terminer.
Le rapport Customers est créé et chargé dans la fenêtre principale de Visual Studio.
15. En bas de la fenêtre, cliquez sur Aperçu Rapport principal.
Le rapport s'affiche selon des niveaux hiérarchiques triés d'abord par pays, puis par région. Si vous changez
l'affichage du rapport pour afficher des parties de rapport, chaque niveau s'affiche séparément.
Résultats
Vous pouvez maintenant convertir le rapport pour afficher des parties de rapport.
1.5.2.9.2
rapport
Conversion du rapport afin d'afficher des parties de
Dans cette section, vous allez apprendre à définir des liens hypertexte dans le rapport pour lier les informations
générales aux informations plus détaillées.
502
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.2.9.2.1
Pour convertir le rapport afin d'afficher des
parties de rapport
Procédure
1.
En bas de la fenêtre, cliquez sur Rapport principal.
Remarque
Le groupe de plus haut niveau, Nom du groupe n° 1, s'affiche en deux endroits, au début et en bas du
rapport.
Au bas du rapport dans la section Pied de page de groupe n° 1, Nom du groupe n° 1 est une étiquette suivie
d'un champ résumé de Clients.Ventes de l'année dernière. Cette étiquette est à utiliser de préférence
comme point d'entrée des parties de rapport.
2.
Cliquez avec le bouton droit de la souris sur Nom du groupe n° 1 situé dans la section Pied de page de groupe n
° 1, puis cliquez sur Copier.
3.
Cliquez avec le bouton droit de la souris sur une zone vide du rapport, pointez sur Rapport, puis cliquez sur
Options du rapport.
4.
Dans la boîte de dialogue Options du rapport, cliquez sur Coller le lien.
L'ID de l'étiquette du groupe 1 "GroupNamePays2" est collée dans le champ Nom de l'objet.
Le champ Contexte des données accepte une valeur de chaîne qui filtre les données du rapport. Pour le
moment, ce champ doit rester vide.
5.
Cliquez sur OK.
6.
Cliquez avec le bouton droit de la souris sur Nom du groupe n° 1 qui se trouve dans la section Pied de page de
groupe n° 1, puis cliquez sur Mettre en forme l'objet.
7.
Dans l'Editeur de mise en forme, cliquez sur l'onglet Lien hypertexte, puis sélectionnez Exploration des parties
du rapport.
8.
Dans le panneau Champs disponibles, développez Pied de page de groupe n° 2, cliquez deux fois sur
GroupNameRégion2, puis cliquez sur OK.
Vous avez configuré Groupe n° 1 pour le lier à Groupe n° 2 lorsqu'un utilisateur clique sur Groupe n° 1 au
moment de l'exécution.
9.
Cliquez avec le bouton droit de la souris sur Nom du groupe n° 2 qui se trouve dans la section Pied de page de
groupe n° 2, puis cliquez sur Mettre en forme l'objet.
10. Dans l'Editeur de mise en forme, cliquez sur l'onglet Lien hypertexte, puis sélectionnez Exploration des parties
du rapport.
11. Dans le panneau Champs disponibles, procédez de la manière suivante :
a) Développez Détails.
b) Utilisez la combinaison de touches CTRL-clic pour sélectionner Nomduclient1, Ventesdelannéedernière1
et Ville1.
c) Cliquez sur le bouton > pour déplacer ces champs dans le panneau Champs à afficher.
d) Cliquez sur OK.
Vous avez défini Groupe n° 2 pour le lier aux informations détaillées sur le client lorsqu'un utilisateur
clique sur Groupe n° 2 au moment de l'exécution.
12. Dans le menu Fichier, sélectionnez Enregistrer tout.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
503
1.5.2.9.3
Liaison du rapport
Lorsque vous avez suivi les instructions de la procédure Configuration d'un projet [page 15] en préparation de ce
tutoriel, vous avez placé un contrôle CrystalReportViewer sur le Web Form. Or, pour afficher des parties de
rapport, vous devez utiliser le contrôle CrystalReportPartsViewer.
Dans cette section, vous allez instancier le rapport Customers et le lier au contrôle
CrystalReportPartsViewer. Vous vérifierez ensuite si le rapport affiche les parties de rapport que vous avez
créées dans les procédures précédentes.
Vous pouvez instancier et lier le rapport de deux façons :
●
En tant que rapport incorporé.
●
En tant que rapport non incorporé.
Choisissez l'une des deux (mais pas les deux) procédures ci-dessous.
●
Si vous utilisez des rapports incorporés, effectuez la procédure suivante afin d'instancier le rapport sous
forme de rapport incorporé.
●
Si vous utilisez des rapports non incorporés, effectuez la seconde procédure afin d'instancier le rapport sous
forme de rapport non incorporé.
Effectuez maintenant la procédure Filtrage des données du rapport [page 507].
1.5.2.9.3.1
Pour instancier le rapport Customers sous forme
de rapport incorporé et le lier au contrôle
CrystalPartsReportViewer
Procédure
1.
Ouvrez le Web Form.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
Supprimez le contrôle CrystalReportViewer.
4.
Dans la boîte à outils, ouvrez le nœud Crystal Reports afin de localiser le contrôle CrystalReportPartsViewer.
5.
Faites glisser le contrôle CrystalReportPartsViewer sur le Web Form.
6.
Dans la fenêtre Propriétés, définissez la propriété ID de la manière suivante :
○
Pour les sites Web Visual Basic, attribuez à la propriété ID la valeur "myCrystalReportPartsViewer".
○
Pour les sites Web C#, attribuez à la propriété ID la valeur "crystalReportPartsViewer".
7.
Dans le menu Affichage, cliquez sur Code pour afficher la classe code-behind de ce Web Form.
8.
Ajoutez une nouvelle déclaration de niveau classe pour la classe wrapper du rapport Customers, avec la
variable customerReport. Définissez le modificateur d'accès à private.
Private customersReport As Customers
private Customers customersReport;
504
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
9.
Dans la méthode ConfigureCrystalReports(), instanciez la classe wrapper du rapport.
Remarque
Vous avez créé la méthode ConfigureCrystalReports() dans Configuration d'un projet [page 15].
customersReport = New Customers()
customersReport = new Customers();
10. Sur la ligne suivante, au-dessous de l'instanciation du rapport, liez la propriété ReportSource du contrôle
CrystalReportPartsViewer à la classe de rapport instanciée (nom de la variable : customersReport).
myCrystalReportPartsViewer.ReportSource = customersReport
crystalReportPartsViewer.ReportSource = customersReport;
Remarque
L'instance du contrôle CrystalReportPartsViewer est accessible dans le code, car vous avez ajouté le
contrôle à votre Web Form ou Windows Form. Si IntelliSense ne reconnaît pas l'instance du contrôle
CrystalReportPartsViewer, vérifiez que le contrôle CrystalReportPartsViewer a été ajouté sous la forme
d'une déclaration de niveau classe à cette classe code-behind.
1.5.2.9.3.2
Pour instancier le rapport Customers sous forme
de rapport non incorporé et le lier au contrôle
CrystalReportPartsViewer
Contexte
Vous êtes maintenant prêt à générer et exécuter votre projet.
Procédure
1.
Ouvrez le Web Form.
2.
Dans le menu Affichage, cliquez sur Code.
3.
Ajoutez une nouvelle déclaration de niveau classe pour la classe wrapper du rapport ReportDocument, avec la
variable customersReport. Définissez le modificateur d'accès à private.
Private customersReport As ReportDocument
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
505
private ReportDocument customersReport;
Remarque
La classe ReportDocument est un membre de l'espace de noms CrystalDecisions.CrystalReports.Engine.
Vous avez ajouté une déclaration "Imports" [Visual Basic] ou "using" [C#] pour cet espace de
noms dans la section Configuration d'un projet [page 15]. Lorsque vous instanciez ReportDocument et
chargez un rapport dans l'espace de noms, vous accédez au rapport via le SDK sans l'incorporer.
4.
Dans la méthode ConfigureCrystalReports() (que vous avez créée dans l'une des procédures de la
section Configuration d'un projet [page 15]), instanciez la classe ReportDocument.
customersReport = New ReportDocument()
customersReport = new ReportDocument();
5.
Déclarez une variable chaîne, nommez-la reportPath et affectez-lui un chemin d'accès au rapport local au
moment de l'exécution. Ce chemin est déterminé différemment selon qu'il s'agit d'un site Web ou d'un projet
Windows :
○
Pour un site Web, transmettez le nom du fichier de rapport local sous forme de paramètre de type chaîne
dans la méthode Server.MapPath(). Ceci permet d'associer le rapport local au chemin d'accès du
répertoire de fichiers du disque dur au moment de l'exécution.
Dim reportPath As String = Server.MapPath("Customers.rpt")
string reportPath = Server.MapPath("Customers.rpt");
○
Pour un projet Windows, concaténez la propriété Application.StartupPath avec une barre oblique
inverse et le nom du fichier de rapport local. Ceci permet d'associer le rapport au même répertoire que
celui du fichier exécutable Windows.
Remarque
Au moment de la compilation, vous copierez le rapport dans le répertoire contenant le fichier
exécutable.
Dim reportPath As String = Application.StartupPath & "\" & "Customers.rpt"
string reportPath = Application.StartupPath + "\\" + "Customers.rpt";
6.
Appelez la méthode Load() de l'instance ReportDocument et transmettez-lui la variable chaîne reportPath.
customersReport.Load(reportPath)
customersReport.Load(reportPath);
506
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
7.
Sur la ligne suivante, sous le chargement du rapport, liez la propriété ReportSource du contrôle
CrystalReportPartsViewer à l'instance ReportDocument.
myCrystalReportPartsViewer.ReportSource = customersReport
crystalReportPartsViewer.ReportSource = customersReport;
1.5.2.9.3.3
Pour tester le chargement du rapport Customers
Contexte
Que vous ayez choisi d'instancier une classe de rapport incorporé ou une classe de rapport non incorporé via la
classe ReportDocument, le nom de la variable utilisée est identique : customersReport. Vous pouvez ainsi utiliser
un bloc de code commun dans les procédures suivantes.
Vous êtes maintenant prêt à générer et exécuter votre projet. Le chargement du rapport doit échouer, car le code
permettant de définir une valeur pour le champ de paramètre Ville n'a pas encore été écrit. Vous ajouterez une
valeur au paramètre Ville plus loin dans ce tutoriel.
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport Customers s'affiche dans le navigateur Web.
4.
Cliquez sur un pays pour afficher une liste des régions.
5.
Cliquez sur une région pour afficher les champs Nom du client, Ventes de l'année dernière et Ville.
6.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.2.9.4
Filtrage des données du rapport
Dans cette section, vous allez apprendre à définir le champ Contexte des données pour filtrer les données qui
s'affichent dans le rapport. Pour en savoir plus sur les paramètres de Contexte des données, voir Implémentation
de l'exploration de parties de rapport [page 747].
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
507
1.5.2.9.4.1
Pour filtrer les données du rapport
Procédure
1.
Ouvrez le rapport Crystal.
2.
Cliquez avec le bouton droit de la souris sur une zone vide du rapport. Sélectionnez Rapport, puis cliquez sur
Options du rapport.
3.
Dans le champ Contexte des données, saisissez "/Pays[Etats-Unis]".
4.
Cliquez sur OK pour fermer la boîte de dialogue Options du rapport.
5.
Dans le menu Générer, sélectionnez Générer la solution.
6.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
7.
Dans le menu Déboguer, cliquez sur Démarrer.
Le rapport affiche uniquement les enregistrements des Etats-Unis.
8.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.3
Tutoriels de programmation allégée dans Visual Studio
Cette section présente divers tutoriels consacrés au modèle de développement de programmation allégée.
Remarque
Pour les tutoriels qui font appel au modèle de programmation classique, voir Tutoriels du modèle d'objet
ReportDocument [page 340].
1.5.3.1
Tutoriel : Configuration par programmation allégée
d'un site Web avec SAP Crystal Reports à l'aide du panneau
des tâches guidées
Dans ce tutoriel, vous allez apprendre à utiliser le nouveau modèle de développement d'applications avec balises
dans Visual Studio. Vous allez suivre un modèle de développement par programmation allégée pour configurer un
site Web avec SAP Crystal Reports, à l'aide des tâches guidées.
Introduction
Dans ce tutoriel, vous allez créer un site Web ASP.NET dans Visual Studio. Vous allez ensuite ajouter un contrôle
CrystalReportViewer au Web Form, afin de lancer le nouveau panneau des tâches guidées. Dans le panneau
des tâches guidées, vous allez créer un contrôle CrystalReportSource, puis créer un rapport Crystal. Le
rapport est référencé dans le contrôle CrystalReportSource.
508
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Ce tutoriel permet d'afficher un aperçu du rapport de trois façons :
●
Dans le concepteur SAP Crystal Reports incorporé, à l'aide du nouveau bouton Aperçu de
SAP Crystal Reports, version développeur pour Microsoft Visual Studio.
●
Dans le Web Form, à l'aide de données factices.
Remarque
C'est grâce à une nouvelle fonctionnalité nommée Aperçu au moment de la conception qu'il est désormais
possible d'obtenir un aperçu du Web Form.
●
Au moment de l'exécution, lorsque vous créez et compilez l'application.
A la fin de ce tutoriel, vous allez passer en mode HTML (mode Source) et découvrir la relation entre le contrôle
CrystalReportViewer et le contrôle CrystalReportSource dans le nouveau modèle de développement
d'applications avec balises de Visual Studio 2005 ou version ultérieure.
Exemple de code
Ce tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez les
instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir d'une
version terminée.
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les noms des
dossiers de chaque version d'exemple de code sont les suivants :
●
Site Web C# : CS_Web_ReducedCode_WebSiteSetup
●
Site Web Visual Basic : VB_Web_ReducedCode_WebSiteSetup
Base de données Xtreme
Ce tutoriel utilise un exemple de base de données appelée Xtreme. Le fichier de base de données xtreme.mdb est
fourni dans le package d'exemples de code du SDK de SAP Crystal Reports .NET. Pour utiliser la base de données
Xtreme, vous devez créer manuellement une connexion ODBC à cette base de données.
Informations associées
Affichage d'un rapport au moment de la conception [page 224]
Répertoire d'exemples de rapports [page 15]
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
509
1.5.3.1.1
Création d'un site Web avec un contrôle
CrystalReportViewer
Prérequis
Avant de créer un site Web, vérifiez que SAP Crystal Reports, version développeur pour Microsoft Visual Studio a
été installé sur votre système.
Procédure
1.
Démarrez Visual Studio.
2.
Dans le menu Fichier, sélectionnez Nouveau, puis cliquez sur Site Web.
3.
Dans la boîte de dialogue Nouveau site Web, cliquez sur Site Web ASP.NET.
4.
Dans la liste déroulante Emplacement, sélectionnez Système de fichiers.
5.
Dans la liste déroulante Langage, sélectionnez le langage de programmation que vous souhaitez utiliser.
6.
Dans le champ de texte Emplacement, saisissez le chemin d'accès du répertoire C:\WebSites\, suivi du nom
de votre projet.
7.
Cliquez sur OK.
Votre projet s'affiche dans l'Explorateur de solutions et contient une page Default.aspx.
8.
Ouvrez la page Default.aspx (le Web Form).
9.
Dans le menu Affichage, cliquez sur Concepteur.
Remarque
Vous pouvez également basculer en mode Design en cliquant sur le bouton Design en bas du formulaire.
10. Dans la Boîte à outils, ouvrez le nœud Reporting afin de localiser le contrôle CrystalReportViewer.
11. Faites glisser le contrôle CrystalReportViewer sur le Web Form.
Le panneau des tâches guidées "Tâches CrystalReportViewer" s'affiche.
Informations associées
Eléments à installer [page 10]
510
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.3.1.2
Configuration du contrôle CrystalReportSource
dans les tâches guidées
Visual Studio 2005 et version ultérieure disposent d'une nouvelle fonctionnalité d'interface utilisateur graphique
destinée aux contrôles .NET, appelée tâches guidées. Pour le contrôle CrystalReportViewer dans des sites Web, le
panneau des tâches guidées s'intitule "Tâches CrystalReportViewer".
Ce panneau "Tâches CrystalReportViewer" permet de configurer plusieurs fonctionnalités du contrôle
CrystalReportViewer, sans avoir à écrire de code. Les sélections que vous effectuez à l'aide des tâches guidées
sont appliquées sous forme de paramètres avec balises dans la page ASPX.
Dans cette section, vous allez apprendre à configurer l'option CrystalReportSource disponible dans le panneau
des tâches guidées "Tâches CrystalReportViewer".
Plus loin dans ces tutoriels de programmation allégée, vous examinerez d'autres fonctionnalités du panneau
"Tâches CrystalReportViewer".
1.5.3.1.2.1
Pour configurer le contrôle CrystalReportSource
à l'aide des tâches guidées
Procédure
1.
Si le panneau des tâches guidées est ouvert, cliquez sur le Web Form pour le fermer.
2.
Dans l'angle supérieur droit du contrôle CrystalReportViewer, cliquez sur le petit bouton triangulaire.
Le panneau des tâches guidées intitulé "Tâches CrystalReportViewer" s'affiche de nouveau. Dans la liste
Sélectionner la source du rapport, la valeur <Aucune> s'affiche.
3.
Cliquez sur la liste Sélectionner la source du rapport, puis sélectionnez <Source du nouveau rapport…>.
La boîte de dialogue Créer la source du rapport s'ouvre.
4.
Dans la zone Indiquer le nom du contrôle CrystalReportSource, laissez l'entrée par défaut
CrystalReportSource1.
5.
Cliquez sur la liste Spécifier un rapport Crystal pour le contrôle CrystalReportSource, puis sélectionnez
<Nouveau rapport>.
L'autre sélection possible est <Parcourir…>. Cette option permet de sélectionner un rapport Crystal existant
dans le répertoire de fichiers. Cependant, dans ce tutoriel, vous allez créer un rapport.
6.
Dans la boîte de dialogue Créer un rapport Crystal, saisissez le nom "XtremeCustomers.rpt", puis cliquez sur
OK.
7.
Cliquez à nouveau sur OK pour fermer la boîte de dialogue Créer la source du rapport.
1.5.3.1.3
Configuration du rapport pour le contrôle
CrystalReportSource
Dans cette section, vous utilisez l'Assistant de création de rapports pour configurer le rapport et l'ajouter au
contrôle CrystalReportSource. Vous créez une connexion à une base de données, configurez les champs du
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
511
rapport, puis ajoutez le rapport au contrôle. Lorsque vous avez terminé ces opérations, vous testez le site Web
que vous avez créé par programmation allégée.
1.5.3.1.3.1
Pour configurer le rapport pour le contrôle
CrystalReportSource
Procédure
1.
Dans le panneau Créer un document de rapport Crystal de la boîte de dialogue Galerie de rapports Crystal,
sélectionnez en utilisant l' Assistant de création de rapports.
2.
Dans le panneau Choisir un expert, sélectionnez Standard, puis cliquez sur OK.
3.
Dans le panneau Sources de données disponibles de la fenêtre de l'Assistant de création de rapports
standard, procédez comme suit :
a) Développez le dossier Créer une nouvelle connexion.
b) Développez le dossier ODBC (RDO).
4.
Dans la fenêtre ODBC (RDO), sélectionnez l'entrée DSN ODBC correspondant à la base de données Xtreme,
puis cliquez sur Terminer.
Le dossier ODBC (RDO) se développe pour afficher la base de données Xtreme.
5.
Développez le nœud Tables et sélectionnez la table Clients.
6.
Cliquez deux fois sur la table Clients pour l'ajouter au panneau Tables sélectionnées, puis cliquez sur Suivant.
7.
Développez la table Clients, puis utilisez la combinaison de touches CTRL-clic pour sélectionner les champs
Nom du client, Titre, Adresse 1, Nom du contact et Ville.
8.
Cliquez sur le bouton > pour déplacer ces champs dans le panneau Champs à afficher, puis cliquez sur
Suivant.
9.
Dans le panneau Champs disponibles, sous Champs du rapport, sélectionnez Clients.Ville, cliquez sur le
bouton > pour déplacer le champ dans le panneau Regrouper par, puis cliquez sur Terminer.
Le rapport XtremeCustomers est créé et chargé dans la fenêtre principale de Visual Studio.
10. En bas de la fenêtre, cliquez sur Aperçu Rapport principal.
Remarque
Le bouton Aperçu est pour la première fois disponible dans le concepteur SAP Crystal Reports incorporé,
fourni avec SAP Crystal Reports pour Visual Studio 2005.
Le rapport s'affiche en mode Aperçu et présente les données provenant de la base de données Xtreme.
11. En bas de la fenêtre, cliquez sur Rapport principal pour quitter le mode Aperçu.
12. Ouvrez le Web Form.
13. Dans le menu Affichage, cliquez sur Concepteur.
Le rapport s'affiche alors sous forme graphique dans le Web Form, en mode Aperçu au moment de la
conception.
14. Dans le menu Fichier, cliquez sur Enregistrer tout.
512
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.3.1.3.2
allégée
Pour vérifier le site Web créé par programmation
Contexte
Votre rapport est créé et constitue le rapport désigné pour le contrôle CrystalReportSource. Vous êtes
maintenant prêt à générer et exécuter votre projet.
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
4.
Le rapport XtremeCustomers s'affiche dans le navigateur Web.
5.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.3.1.4
Exploration du contrôle CrystalReportSource en
mode Source
Contexte
Dans cette section, vous allez découvrir le modèle de développement d'applications avec balises utilisé dans
ASP.NET version 2.0. Ce modèle permet de configurer un site Web avec SAP Crystal Reports, version
développeur pour Microsoft Visual Studio, sans avoir à écrire de code. Vous allez également découvrir la structure
du contrôle DataSource et le contrôle CrystalReportSource qui font partie d'ASP.NET 2.0.
Procédure
1.
Ouvrez la page Default.aspx.
2.
Dans le menu Affichage, cliquez sur Concepteur.
3.
En bas du Web Form, cliquez sur le bouton Source.
Le code HTML de la page Default.aspx s'affiche. Il contient deux balises apparentées pour SAP Crystal
Reports :
○
La balise CrystalReportSource, qui imbrique la balise Report. La balise Report référence le rapport dans
sa propriété FileName.
<CR:CrystalReportSource ID="CrystalReportSource1" Runat="server"
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
513
EnableCaching="False" GroupPath="">
<Report FileName="XtremeCustomers.rpt"></Report>
</CR:CrystalReportSource>
○
La balise CrystalReportViewer, qui référence le contrôle CrystalReportSource par ID.
<CR:CrystalReportViewer ID="CrystalReportViewer1" Runat="server"
AutoDataBind="True"
Height="1158px" CssFilename="CssFilename"
ReportSourceID="CrystalReportSource1" Width="1059px" />
Résultats
Le code présente le nouveau modèle de développement d'applications avec balises qui fait partie d'ASP.NET 2.0.
Comme dans ASP.NET version 1.0, le contrôle CrystalReportViewer est représenté par une balise XML.
Cependant, les propriétés disponibles pour ce contrôle sont plus nombreuses dans ASP.NET 2.0 afin de prendre
en charge le modèle de développement d'applications avec balises.
Dans ASP.NET 2.0, la connectivité des données a été encapsulée dans le contrôle DataSource. Le contrôle
CrystalReportSource s'adapte à la structure du contrôle DataSource, à la différence qu'il encapsule la
connectivité du rapport plutôt que la connectivité des données. Cette structure est gérée par la propriété
ReportSourceID dans le contrôle visuel principal.
Pour en savoir plus sur les autres propriétés du contrôle CrystalReportSource, voir Contrôle
CrystalReportSource [page 52]. Les propriétés sont également présentées dans les autres tutoriels de
programmation allégée de cette section.
1.5.3.2
Tutoriel : Configuration par programmation allégée
d'un projet Windows avec SAP Crystal Reports à l'aide des
tâches guidées
Introduction
Dans ce tutoriel, vous allez apprendre à créer un projet Windows dans SAP Crystal Reports, version développeur
pour Microsoft Visual Studio. Vous allez ensuite ajouter un contrôle CrystalReportViewer au Windows Form. Dans
le panneau des tâches guidées, vous allez ouvrir le concepteur SAP Crystal Reports incorporé et créer un rapport.
La fonctionnalité des tâches guidées génère le code qui lie le rapport au contrôle CrystalReportViewer.
Ce tutoriel permet d'afficher un aperçu du rapport de trois façons :
●
Dans le concepteur SAP Crystal Reports incorporé, à l'aide du nouveau bouton Aperçu de
SAP Crystal Reports, version développeur pour Microsoft Visual Studio.
●
Dans le Windows Form, à l'aide de données factices.
●
Au moment de l'exécution, lorsque vous créez et compilez l'application.
A la fin de ce tutoriel, vous allez passer en mode code pour observer comment le modèle de développement par
programmation allégée fonctionne dans SAP Crystal Reports, version développeur pour Microsoft Visual Studio.
514
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Exemple de code
Ce tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez les
instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir d'une
version terminée.
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les noms des
dossiers de chaque version d'exemple de code sont les suivants :
●
Projet Windows C# : CS_Win_ReducedCode_ProjectSetup.
●
Projet Windows Visual Basic : VB_Win_ReducedCode_ProjectSetup.
Base de données Xtreme
Ce tutoriel utilise un exemple de base de données appelée Xtreme. Le fichier de base de données xtreme.mdb est
fourni dans le package d'exemples de code du SDK de SAP Crystal Reports .NET. Pour utiliser la base de données
Xtreme, vous devez créer manuellement une connexion ODBC à cette base de données.
Informations associées
Répertoire d'exemples de rapports [page 15]
1.5.3.2.1
Création d'un projet Windows avec un contrôle
CrystalReportViewer
Prérequis
Avant de créer un projet Windows, vérifiez que SAP Crystal Reports, version développeur pour Microsoft
Visual Studio a été installé sur votre système.
Procédure
1.
Lancez Visual Studio.
2.
Dans le menu Fichier, sélectionnez Nouveau, puis cliquez sur Projet.
3.
Dans la boîte de dialogue Nouveau projet, dans la liste Types de projets, sélectionnez un dossier de langage
pour C# ou Visual Basic.
4.
Dans la liste Modèles, cliquez sur Application Windows.
5.
Dans le champ Nom, remplacez le nom de projet par défaut par le nom de votre projet.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
515
6.
Cliquez sur OK.
Votre projet s'affiche dans l'Explorateur de solutions et contient une classe Form1.
7.
Ouvrez la classe Form1.
8.
Dans la Boîte à outils, ouvrez le nœud Reporting afin de localiser le contrôle CrystalReportViewer.
9.
Faites glisser le contrôle CrystalReportViewer sur le Windows Form.
10. Dans la fenêtre Propriétés, définissez la propriété Name de la manière suivante :
○
Pour les projets Visual Basic, attribuez la valeur "myCrystalReportViewer".
○
Pour les projets C#, attribuez la valeur "crystalReportViewer".
11. Dans le menu Fichier, cliquez sur Enregistrer tout.
Informations associées
Eléments à installer [page 10]
1.5.3.2.2
Configuration du rapport dans le panneau des
tâches guidées
Pour le contrôle CrystalReportViewer dans des projets Windows, le panneau des tâches guidées s'intitule Tâches
CrystalReportViewer.
Les sélections que vous effectuez dans les tâches guidées sont générées sous forme de code dans une classe
partielle Form1. Dans cette section, vous allez configurer un nouveau rapport à l'aide du panneau des tâches
guidées Tâches CrystalReportViewer et du concepteur SAP Crystal Reports incorporé. Plus loin dans ces tutoriels
de programmation allégée, vous examinerez d'autres fonctionnalités des tâches guidées.
1.5.3.2.2.1
guidées
Configuration du rapport à l'aide des tâches
Procédure
1.
Dans l'angle supérieur droit du contrôle CrystalReportViewer, cliquez sur le petit bouton triangulaire.
Le panneau des tâches guidées Tâches CrystalReportViewer s'affiche.
2.
Cliquez sur le lien Créer un rapport Crystal.
3.
Dans la boîte de dialogue Créer un rapport Crystal, saisissez le nom XtremeCustomers.rpt, puis cliquez sur
OK.
La boîte de dialogue Galerie de rapports Crystal s'affiche.
4.
Dans le panneau Créer un document de rapport Crystal de la boîte de dialogue Galerie de rapports Crystal,
sélectionnez en utilisant l' Assistant de création de rapports.
5.
Dans le panneau Choisir un expert, sélectionnez Standard, puis cliquez sur OK.
516
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
6.
Dans le panneau Sources de données disponibles de la fenêtre de l'Assistant de création de rapports
standard, procédez comme suit :
a) Développez le dossier Créer une nouvelle connexion.
b) Développez le dossier ODBC (RDO).
7.
Dans la fenêtre ODBC (RDO), sélectionnez l'entrée DSN ODBC correspondant à l'exemple de base de données
Xtreme, puis cliquez sur Terminer.
Le dossier ODBC (RDO) se développe pour afficher la base de données Xtreme.
8.
Développez le nœud Tables, puis sélectionnez la table Clients.
9.
Cliquez deux fois sur la table Clients pour l'ajouter au panneau Tables sélectionnées, puis cliquez sur Suivant.
10. Utilisez la combinaison de touches CTRL-clic pour sélectionner les champs Nom du client, Titre, Adresse 1 et
Ville.
11. Cliquez sur le bouton > pour déplacer ces champs dans le panneau Champs à afficher, puis cliquez sur
Suivant.
12. Dans le panneau Champs disponibles, sous Champs du rapport, sélectionnez Clients.Ville, cliquez sur le
bouton > pour déplacer le champ dans le panneau Regrouper par, puis cliquez sur Terminer.
Le rapport XtremeCustomers est créé et chargé dans la fenêtre principale de Visual Studio.
13. En bas de la fenêtre, cliquez sur Aperçu Rapport principal.
Remarque
Le bouton Aperçu est une nouvelle fonctionnalité du concepteur SAP Crystal Reports incorporé fourni avec
SAP Crystal Reports, version développeur pour Microsoft Visual Studio.
14. En bas de la fenêtre, cliquez sur Rapport principal pour quitter le mode Aperçu.
15. Revenez à la classe Form1.
Le rapport s'affiche sous forme graphique dans le Web Form, en mode Aperçu au moment de la conception.
Sous la classe Form1, le rapport XtremeCustomers s'affiche dans la barre d'état des composants.
16. Dans le menu Fichier, cliquez sur Enregistrer tout.
1.5.3.2.2.2
Pour renommer la variable du rapport
Contexte
Votre rapport est créé et constitue le rapport désigné pour le contrôle CrystalReportViewer. A ce stade, vous
pouvez renommer la variable de rapport.
Procédure
1.
Cliquez sur XtremeCustomers1 dans la barre d'état des composants pour le sélectionner.
2.
Dans la fenêtre Propriétés, attribuez au champ Name la valeur "xtremeCustomersReport".
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
517
1.5.3.2.2.3
Pour vérifier le projet Windows créé par
programmation allégée
Contexte
Vous êtes maintenant prêt à générer et exécuter votre projet.
Procédure
1.
Dans le menu Générer, sélectionnez Générer la solution.
2.
Si vous rencontrez des erreurs lors de la génération, corrigez-les.
3.
Dans le menu Déboguer, cliquez sur Démarrer.
4.
Le rapport XtremeCustomers s'affiche dans une nouvelle application Windows.
5.
Revenez dans Visual Studio, puis cliquez sur Arrêter pour quitter le mode débogage.
1.5.3.2.3
Exploration du code généré par des tâches guidées
Dans cette section, vous allez explorer le code généré par les tâches guidées, qui a permis de configurer un projet
Windows avec SAP Crystal Reports sans avoir à écrire de code.
1.5.3.2.3.1
guidées
Pour explorer le code généré par les tâches
Procédure
1.
Ouvrez la classe Form1.
2.
Dans le menu Affichage, cliquez sur Code.
La classe Form1 s'ouvre en mode code et affiche une classe vide.
Remarque
Dans C#, la classe vide affiche le constructeur de classe.
public Form1()
{
InitializeComponent();
}
518
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
1.5.3.2.3.2
Pour afficher la classe Form1 partielle masquée
Contexte
Notez que le code suivant est absent :
●
la déclaration de l'instance du contrôle CrystalReportViewer ;
●
l'instance du rapport XtremeCustomers ;
●
le code qui lie le rapport au contrôle CrystalReportViewer.
Le code absent a été masqué dans une classe partielle. Elles permettent à une classe d'accepter un addenda
provenant d'un autre fichier de classe, en attribuant à ce fichier le même nom de classe avec le préfixe "partial".
Les classes partielles contiennent généralement du code généré automatiquement.
Pour visualiser le code généré automatiquement qui n'apparaît pas dans la classe Form1, vous allez explorer les
instances CrystalReportViewer et les instances du rapport dans la classe partielle masquée Form1.
Procédure
1.
Dans l'Explorateur de solutions, cliquez sur l'icône de barre d'outils Afficher tous les fichiers.
2.
Développez Form1.cs ou Form1.vb.
La classe Form1.Designer.cs ou .vb s'affiche.
3.
Cliquez avec le bouton droit de la souris sur la classe Form1.Designer.cs ou .vb, puis sélectionnez Afficher le
code.
La classe partielle Form1 s'ouvre et affiche le code généré de façon automatique pour cette classe. Cela inclut
la déclaration de l'instance du contrôle CrystalReportViewer, l'instance du rapport XtremeCustomers et le
code qui lie le rapport à l'instance du contrôle CrystalReportViewer.
Remarque
Si vous préférez écrire le code et le placer dans la classe code-behind, voir Configuration d'un projet [page
15].
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
519
1.5.3.3
Tutoriel : Connexion à une base de données sécurisée
à programmation allégée dans un site Web
Dans ce tutoriel de création de site Web par programmation allégée, vous allez apprendre à afficher un rapport
contenant des informations provenant d'une base de données SQL Server sécurisée.
Introduction
Dans ce tutoriel de création de site Web par programmation allégée, vous allez apprendre à afficher un rapport
contenant des informations provenant d'une base de données SQL Server sécurisée. Pour créer une connexion à
une base de données sécurisée, vous affectez la propriété DataSources du rapport au contrôle SQLDataSource
faisant partie de la nouvelle structure du contrôle DataSource dans .NET 2.0.
Dans ce tutoriel, pour afficher un rapport contenant des informations provenant d'une base de données SQL
Server sécurisée, vous allez utiliser le nouveau modèle de développement d'applications avec balises pour
connecter les composants clés :
●
Connecter un contrôle CrystalReportViewer à un contrôle CrystalReportSource.
●
Connecter le contrôle CrystalReportSource à un rapport.
●
Connecter la propriété DataSources du rapport à un contrôle SqlDataSource.
Remarque
La propriété DataSources s'affiche sous forme de propriété de rapport dans la fenêtre Propriétés, ou sous
forme de balise en mode HTML (mode Source).
Toutes ces opérations sont réalisées sans écrire de code.
Remarque
Un modèle de développement de codage de ce tutoriel est également disponible. Voir Tutoriel : Connexion à
une base de données SQL Server sécurisée à l'aide de l'authentification SQL [page 353] ou Tutoriel : Connexion
à une base de données SQL Server sécurisée à l'aide de la sécurité intégrée [page 370].
Pour commencer, vous allez ajouter un contrôle CrystalReportViewer au Web Form. Dans le panneau des tâches
guidées, vous allez créer un contrôle CrystalReportSource, puis un rapport Crystal à l'aide du concepteur
SAP Crystal Reports incorporé. Ce rapport se connecte à une base de données SQL Server sécurisée. Le rapport
est référencé dans le contrôle CrystalReportSource.
Vous allez ensuite apprendre à configurer la connexion à la base de données SQL Server sécurisée afin de
renvoyer les tables requises utilisées par le rapport Crystal. Pour commencer, vous allez sélectionner l'option
"Activer l'invite de connexion à la base de données" dans le panneau des tâches guidées. Lorsque cette option est
sélectionnée, l'exception renvoyée lorsque la connexion à la base de données échoue est remplacée par une invite
demandant à l'utilisateur de se connecter manuellement.
Pour configurer une connexion cohérente à la base de données requise, vous ajoutez un contrôle SqlDataSource,
puis le configurez de manière à ce qu'il désigne la base de données SQL Server sécurisée et renvoie les tables
requises.
Enfin, vous affectez la propriété DataSource du rapport au contrôle SqlDataSource que vous avez créé.
520
© 2014 SAP AG ou société affiliée SAP. Tous droits réservés.
SAP Crystal Report pour le Guide du développeur de SAP SDK Visual Studio .NET
Guide du développeur du SAP SDK Crystal Reports .NET
Exemple de code
Ce tutoriel fournit des exemples de code Visual Basic et C# qui illustrent la version terminée du projet. Suivez les
instructions de ce tutoriel pour créer un projet ou ouvrez le projet d'exemple de code pour travailler à partir d'une
version terminée.
Les exemples de code sont stockés dans des dossiers classés par langue et par type de projet. Les noms des
dossiers de chaque version d'exemple de code sont les suivants :
●
Site Web C# : CS_Web_ReducedCode_DBLogon
●
Site Web Visual Basic : VB_Web_ReducedCode_DBLogon
Informations associées
Répertoire d'exemples de rapports [page 15]
1.5.3.3.1
Création d'un site Web avec un contrôle
CrystalReportViewer
Avant de créer un site Web, vérifiez que SAP Crystal Reports, version développeur pour Microsoft Visual Studio, a
été installé sur votre système.
Une configuration préalable de la base de données est requise avant de commencer ce tutoriel.
1.5.3.3.1.1
données
●
Configuration préalable requise de la base de
Conf