Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

61
Tirez le meilleur parti des graphiques de SQL Server Reporting Services SQL Server 2005 2 sur 2 ont trouvé cela utile - Évaluez ce sujet Paru le 07 novembre 2006 Robert M. Bruckner Lire cet article en anglais . S'applique à : Microsoft SQL Server 2005 Reporting Services Résumé :Ce livre blanc présente des informations générales, les méthodes recommandées et fournit des conseils pour la conception de graphiques dans les rapports Microsoft SQL Server Reporting Services. Il propose une vue d'ensemble de certaines des fonctionnalités Reporting Services, répond aux questions relatives à la conception et aux caractéristiques des graphiques et comporte des exemples avancés sur la manière de les concevoir. (32 pages imprimées) Cliquez ici pour télécharger l'exemple de code associé, GetMoreChartsSamples.exe . Cliquez ici pour télécharger la version Word de cet article, MoreSSRSCharts.doc . Sur cette page Introduction Préparation des données Étiquettes de graphique Exemples de graphiques et de rapports Conclusion

Transcript of Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Page 1: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Tirez le meilleur parti des graphiques de SQL Server Reporting ServicesSQL Server 2005 2 sur 2 ont trouvé cela utile - Évaluez ce sujet Paru le 07 novembre 2006

Robert M. Bruckner

Lire cet article en anglais  .

S'applique à :Microsoft SQL Server 2005 Reporting Services

Résumé :Ce livre blanc présente des informations générales, les méthodes recommandées et fournit des conseils pour la conception de graphiques dans les rapports Microsoft SQL Server Reporting Services. Il propose une vue d'ensemble de certaines des fonctionnalités Reporting Services, répond aux questions relatives à la conception et aux caractéristiques des graphiques et comporte des exemples avancés sur la manière de les concevoir. (32 pages imprimées)

Cliquez ici pour télécharger l'exemple de code associé, GetMoreChartsSamples.exe.

Cliquez ici pour télécharger la version Word de cet article, MoreSSRSCharts.doc.

Sur cette page

Introduction Préparation des données Étiquettes de graphique Exemples de graphiques et de rapports Conclusion

Introduction

Ce livre blanc traite de la manière de concevoir des graphiques dans les rapports Microsoft SQL Server Reporting Services. Il est divisé en plusieurs sections et références spécifiques des exemples de rapport, lesquels sont compris dans le téléchargement d'exemple de projet.

La première section, Préparation des données, contient des informations, des conseils et des aperçus spécifiques sur la préparation de données. La deuxième section, Étiquettes de graphique, vous indique comment appliquer des paramètres d'étiquette pour améliorer vos graphiques et contrôler leur apparence visuelle et leurs effets.

Page 2: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

La section Exemples de graphique et de rapport présente des exemples spécifiques et quelques exemples avancés sur la manière d'optimiser votre utilisation de la fonctionnalité de graphique intégrée à SQL Server Reporting Services. Certains de ces exemples nécessitent une étude attentive des instructions étape par étape qui vous sont fournies. Des exemples de rapport entièrement fonctionnels sont inclus pour votre confort. Ces exemples de rapport s'appuient sur les exemples de base de données AdventureWorks de SQL Server 2005 et Northwind.

Ces informations relatives à la préparation des données et aux étiquettes de graphique vous permettent de mieux comprendre les exemples fournis. Au cours de l'étude des exemples, il peut s'avérer utile de revenir aux rubriques relatives aux étiquettes de graphique spécifiques, comprises dans les premières sections.

Haut de page

Préparation des données

Le but d'un graphique est de permettre de visualiser des données. Il constitue un moyen plus efficace de communiquer des informations que de longues listes de données. Pour concevoir vos graphiques plus rapidement et avec davantage d'efficacité, il est recommandé de d'abord prendre le temps nécessaire à la préparation et à la compréhension de vos données. Les données de graphique Reporting Services sont organisées en trois domaines : les valeurs, les groupes de catégories et les groupes de séries. Pour des informations détaillées, reportez-vous à la rubrique Working with Chart Data Regions (en anglais) dans la section SQL Server Reporting Services de la documentation en ligne SQL Server 2005.

Un graphique s'apparente fortement à une matrice :

Un groupe de catégories de graphique correspond à un groupe de colonnes de matrice. Un groupe de séries de graphique correspond à un groupe de lignes de matrice. Une valeur de graphique correspond à un groupe de lignes de matrice statique. Une valeur de donnée ou point de donnée de graphique correspond à une cellule de

matrice.

Lorsque vous préparez une requête de jeu de données pour un graphique, vous devez tenir compte des points suivants :

Les valeurs du graphique sont affichées le long de l'axe des Y numérique. Assurez-vous que les champs utilisés en tant que valeurs comportent des données de type numérique (contrairement aux chaînes qui contiennent des nombres formatés).

Les valeurs de l'axe des X sont déterminées en fonction des valeurs du groupe de catégories de graphique, ou des étiquettes du groupe si ces dernières sont explicitement définies. L'axe des X prend en charge deux modes (décrits en détail dans la rubrique Mode scalaire et mode catégorie de l'axe des X). Si vous souhaitez utiliser le mode scalaire de l'axe des X, assurez-vous que les champs et/ou les expressions utilisés pour l'expression du groupe de catégories produisent des données de type numérique ou un objet DateTime.

Page 3: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Vous pouvez inclure autant de graphiques que vous le souhaitez dans votre rapport. Tout comme n'importe quelle autre région de données telle qu'une matrice ou un tableau, un graphique est lié à un jeu de données spécifique. Vous pouvez utiliser des liaisons et des unions dans la requête de jeu de données afin d'y inclure l'ensemble des données nécessaires.

Si un graphique est placé dans l'en-tête ou le pied de page d'un groupe de tableau, ou dans une cellule de matrice, les données transmises au contrôle du graphique sont limitées au sous-ensemble de données qui constitue ce groupe. Un graphique ne peut pas être placé dans la ligne détaillée d'un tableau, étant donné qu'une seule ligne de données y est référencée.

Si vous n'utilisez pas de nuage de points pour afficher la distribution des valeurs et de clusters de points de données, un graphique comportant un volume de données trop important (par exemple, plusieurs milliers de points de données) peut s'avérer difficile à interpréter. Si la définition d'un niveau détaillé de granularité des données n'est pas indispensable, voire inutile, il est recommandé de regrouper les données au préalable dans la requête de jeu de données.

Haut de page

Étiquettes de graphique

Cette section couvre les rubriques suivantes liées aux étiquettes de graphique. Lors de l'étude des exemples de la section suivante, il peut s'avérer utile de revenir occasionnellement aux rubriques de la présente section.

Mode scalaire et mode catégorie de l'axe des X

Cette section explique les différences majeures entre les deux modes de l'axe des X. Vous pouvez utiliser l'exemple de rapport CategoryAxisSettings comme point de départ pour vos tests.

Étiquettes d'axe

La section relative aux étiquettes d'axe traite en détail de l'application de paramètres d'étiquette et de leur impact sur l'apparence du graphique au moment de l'exécution.

Étiquettes de point de données et étiquettes de légende

Cette section explique comment améliorer vos graphiques via l'ajout d'étiquettes de point de données et d'étiquettes de légende.

Mode scalaire et mode catégorie de l'axe des X

L'axe des X comporte deux modes. Le mode est défini à l'aide de l'option Valeurs numériques ou d'échelle de temps de l'onglet Axe des X dans la boîte de dialogue Propriétés du graphique.

Page 4: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Mode catégorie

Les valeurs d'expression du groupe de catégories déterminent les catégories individuelles de l'axe des X. Les étiquettes sont affichées uniquement pour les catégories effectivement présentes dans les données. Le contrôle du graphique ne procédant pas au tri des catégories, l'ordre de tri au sein d'un groupe et les expressions de tri explicites sont primordiales pour le mode catégorie. Le code de format défini pour l'axe des X est appliqué uniquement si l'expression du groupe (ou l'expression de l'étiquette du groupe, si elle est explicitement définie) produit un objet autre qu'une chaîne.

Les Étendues du groupement des catégories sont affichées si vous disposez de plusieurs niveaux de groupement de catégories.

Mode scalaire

La gamme des valeurs de l'axe X est déterminée par les valeurs d'expression minimale et maximale du groupe de catégories. De ce fait, les valeurs d'expression du groupe doivent être des valeurs de type numérique ou DateTime pour pouvoir être comparées et triées. Les vides dans les données (par exemple, vous utilisez un groupement de catégories DateTime et vous ne disposez de données que pour juillet et septembre) sont affichés sur l'axe des X, lorsque les catégories sont mises à l'échelle sur un axe numérique ou DateTime. Un seul groupement de catégories est autorisé en mode scalaire.

Les graphiques dans les figures 1A et 2A affichent les quatre mêmes semaines de données de tri.

Figure 1A. Axe des X en mode d'axe de catégories et étendues du groupement

Figure 2A Axe des X en mode scalaire

Axe en mode catégorie dans la figure 1A

Étant donné que le jeu de données sous-jacent ne comporte aucune donnée de tri pour les jours du week-end (samedi et dimanche), les catégories ne sont pas présentes dans la figure 1A. Cet exemple utilise deux groupements de catégories, comme illustré dans la figure 1B. L'expression

Page 5: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

du groupe interne utilise =Day(Fields!OrderDate.Value) pour effectuer un groupement par jour. L'expression du groupe externe utilise =Month(Fields!OrderDate.Value) pour effectuer un groupement par mois.

Remarque :   L'expression d'étiquette du groupe externe est définie sur =MonthName(Month(Fields!OrderDate.Value)), ce qui correspond à une utilisation du nom du mois en tant qu'étiquette pour l'étendue du groupement.

Figure 1B. Axe des X en mode d'axe de catégories comportant des groupements et étendues de catégories multiples (cliquez sur l'image pour l'agrandir)

Les paramètres relatifs aux propriétés de l'axe des X sont illustrés dans la figure 1C. En mode catégorie, la sémantique du minimum, du maximum et des intervalles est basée sur l'index des catégories. Si aucune propriété d'axe explicite n'est spécifiée, une étiquette est affichée pour chaque catégorie de données.

Page 6: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Figure 1C. Paramètres d'axe des X du mode d'axe de catégories (cliquez sur l'image pour l'agrandir)

Axe en mode scalaire dans la figure 2A

Un axe en mode scalaire affiche des valeurs numériques ou de type DateTime. L'axe des X couvre toute la gamme des valeurs entre le minimum et le maximum. De ce fait, les jours du week-end ne contenant pas de données, la figure 2A comporte des vides.

Lorsque l'axe des X est en mode scalaire, un seul groupement de catégories est autorisé. La valeur du groupement de catégories doit correspondre à une valeur numérique ou de type DateTime. La mise en forme des étiquettes de l'axe des X est déterminée par le paramètre de chaîne de format sur l'axe des X ; dans cet exemple, MMM dd. Les paramètres relatifs aux propriétés de l'axe des X sont illustrés dans la figure 2B.

Page 7: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Figure 2B. Paramètres de l'axe des X en mode scalaire (cliquez sur l'image pour l'agrandir)

Pour plus d'informations sur les chaînes de format numérique et DateTime, reportez-vous aux pages suivantes du Guide du développeur .NET Framework sur MSDN (Microsoft Developer Network) :

Chaînes de format numériques standard Chaînes de format numériques personnalisées Chaînes de format DateTime standard Chaînes de format DateTime personnalisées

Étiquettes d'axe

Les étiquettes de l'axe des Y sont toujours basées sur des valeurs numériques. Si aucun paramètre d'axe explicite n'est indiqué, l'axe des Y utilise le mode d'échelle automatique comme suit :

La valeur minimum de l'axe des Y est déterminée en fonction de la valeur Y la moins élevée de tous les points de données. Si cette valeur de données minimum n'est pas un nombre entier, mais une valeur double (telle que 3,75) et que les marges de côté sont désactivées, il se peut que les étiquettes de l'axe des Y ne soient pas arrondies pour

Page 8: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

obtenir des nombres entiers (par exemple, avec un intervalle de 1 (un) : 3,75 ; 4,75 ; 5,75 et ainsi de suite).

À moins qu'un maximum soit explicitement spécifié, la valeur maximum de l'axe des Y est automatiquement déterminée en fonction de la valeur Y la plus élevée de tous les points de données.

L'intervalle du quadrillage principal de l'axe des Y est automatiquement déterminé en fonction des valeurs des données (dans la figure 3, l'intervalle du quadrillage principal automatique est 20).

L'intervalle du quadrillage secondaire de l'axe des Y divise l'intervalle du quadrillage principal en segments (dans la figure 3, l'intervalle du quadrillage secondaire automatique serait 4 ; étant donné que 20 / 4 = 5, les segments d'intervalle du quadrillage secondaire constituent un segment d'intervalle du quadrillage principal).

Étant donné que les valeurs de l'axe des Y sont systématiquement numériques, vous pouvez directement appliquer des chaînes de format numériques. Ce paramètre est appliqué à l'ensemble des étiquettes générées pour l'axe des Y.

Figure 3. Paramètres de l'axe des Y (cliquez sur l'image pour l'agrandir)

Modes de l'axe des X

Page 9: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Comme indiqué dans la section précédente, l'axe des X comporte plusieurs modes. Selon le mode, diverses options de mise en forme sont disponibles et les paramètres de l'axe des X (Minimum, Maximum, Intersection à, et ainsi de suite) peuvent être interprétés différemment. Les différentes options de mise en forme sont décrites ci-après :

Mode scalaire basé sur des valeurs de groupe de catégories numériques

Lorsque ce paramètre est utilisé, l'axe des X est très similaire à l'axe des Y. Les paramètres d'axe tels que Minimum, Maximum, Intersection à, Intervalle du quadrillage principal et Intervalle du quadrillage secondaire sont interprétés en tant que nombres entiers ou valeurs doubles.

Étant donné que les valeurs de l'axe des X sont numériques, vous pouvez directement appliquer des chaînes de format numériques.

Mode scalaire basé sur des valeurs de groupe de catégories DateTime

Minimum de l'axe : Si le minimum de l'axe est défini sur une valeur constante (telle que 2005) ou sur une expression comportant un résultat de type nombre entier (par exemple, =2005), cette valeur est interprétée comme étant le premier jour de cette année (tel que le 1er janvier 2005).

Maximum de l'axe : Un paramètre de type nombre entier est interprété comme étant le dernier jour de cette année (tel que le 31décembre 2005).

Intersection à de l'axe : Ce paramètre est interprété comme étant le milieu de l'année.

Intervalle du quadrillage principal et Intervalle du quadrillage secondaire : Les paramètres d'intervalle sont interprétés comme étant des jours (équivalents au format OADate). Par exemple, une valeur 5 correspond à un intervalle de 5 jours et une valeur 0,5 correspond à un intervalle d'une demi journée (12 heures).

S'agissant de la mise en forme de l'étiquette, vous pouvez appliquer directement des chaînes de format DateTime.

Mode catégorie (l'option Valeurs numériques ou d'échelle de temps n'est pas activée)

Selon les valeurs des expressions du groupe de catégories, le contrôle de graphique fait correspondre les catégories en fonction de séries multiples (par exemple, les données de la catégorie Janvier dans la série 2006 seront dans le même cluster que celles de la catégorie Janvier de la série 2007).

Les paramètres de chaîne de format dans l'onglet Axe des X n'ont aucun effet tant que l'expression du groupe de catégories (ou l'expression de l'étiquette, comme dans la figure 4) ne produit pas de données numériques ou de type DateTime. Lorsque vous utilisez le mode catégorie, il est fréquent que l'expression du groupe de catégories

Page 10: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

produise un objet de chaîne ; de ce fait, l'application d'un code de format ultérieurement n'aura aucun effet. Vous pouvez ajouter ou modifier l'expression de l'étiquette du groupe de catégories ou appliquer directement la mise en forme via l'expression de l'étiquette, comme illustré dans la figure 4.

Remarque : En mode catégorie, la sémantique du minimum, du maximum et des intervalles est basée sur l'index des catégories. Par exemple, si vous définissez le minimum de l'axe des X sur la valeur 2, la première catégorie de données ne sera pas affichée. Si vous définissez l'intervalle du quadrillage principal sur la valeur 5, les étiquettes seront affichées uniquement pour chaque cinquième catégorie sur l'axe des X. Cela peut s'avérer utile si l'axe des X est chargé de catégories (et d'étiquettes) et si les sémantiques sous-jacentes de ces catégories sont effectivement numériques.

Remarque :   Reporting Services 2005 autorise également des expressions dans l'ensemble des champs d'entrée affichés dans les onglets Axe des X et Axe des Y : Titre, Minimum, Maximum, Intervalle du quadrillage principal, Intervalle du quadrillage secondaire, et ainsi de suite.

Figure 4. Si l'expression de l'étiquette est définie explicitement, son résultat est affiché sur l'axe des X (axe des catégories) à la place du résultat de l'expression du groupe.

Questions/réponses relatives à la mise en forme des étiquettes& d'axe

Question (axe des Y) : Comment puis-je appliquer de « jolies » étiquettes basées sur des nombres entiers sur l'axe des Y ?

Réponse : Si aucun paramètre d'axe n'est spécifié, le contrôle de graphique détermine automatiquement les valeurs en fonction des valeurs Y des points de données. Si les valeurs minimum/maximum des points de données ne sont pas des nombres entiers, les étiquettes de l'axe des Y peuvent utiliser des valeurs doubles.

Page 11: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Toutefois, si au moins l'un des paramètres d'axe (par exemple, Minimum ou Intersection à) est explicitement spécifié comme étant une valeur de type nombre entier par l'auteur du rapport, le contrôle de graphique arrondit les valeurs automatiquement détectées sur le nombre entier le plus proche, puis affiche des « jolies » étiquettes. Par exemple, vous pouvez définir la valeur minimum de l'axe des Y de manière dynamique et appliquer l'arrondi comme suit : =Floor(Min(Fields!Freight.Value)).

Question (axe des X en mode scalaire) : En activant l'option Valeurs numériques ou d'échelle de temps, le graphique n'affiche aucun point de données lors de l'exécution. Quel est le problème ?

Réponse : L'expression du groupe de catégories produit très probablement une chaîne au lieu de valeurs numériques. Modifiez l'expression du groupe de catégories en fonction. Si vous ne souhaitez pas modifier la requête d'extraction de valeurs de données scalaires au lieu de valeurs de chaîne, vous pouvez également effectuer la conversion du type dans le rapport à l'aide de fonctions Microsoft Visual Basic telles que CInt(), CDbl() ou CDate().

Question (axe des X en mode catégorie) : Si le nombre de catégories augmente, l'axe des X devient surchargé et, au final, les étiquettes d'axe ne sont plus dessinées. Comment puis-je contrôler le nombre d'étiquettes dans le mode catégorie de l'axe des X ?

Réponse : Le contrôle de graphique essaie de placer automatiquement les étiquettes de l'axe des X de sorte à éviter tout chevauchement de texte. Par défaut, chaque catégorie comporte une étiquette sur l'axe des X. Vous pouvez explicitement définir le paramètre d'intervalle du quadrillage principal de l'axe des X de sorte à outrepasser ce comportement par défaut. Par exemple, vous pouvez définir l'intervalle du quadrillage principal sur la valeur 5 pour qu'il affiche des étiquettes pour chaque cinquième catégorie uniquement.

Question (axe des X) : Comment fonctionne le placement automatique des étiquettes de l'axe des X ?

Réponse : Actuellement, les graphiques intégrés à Reporting Services n'autorisent le placement automatique que pour éviter le chevauchement des étiquettes de l'axe des X. Le sens (horizontal/vertical) des étiquettes de l'axe des X dépend de la taille des chaînes d'étiquette et de l'espace disponible. Les étiquettes de l'axe des X peuvent être affichées horizontalement sur une ligne, horizontalement sur plusieurs lignes à l'aide de sauts de ligne ou verticalement. L'affichage des étiquettes de l'axe des X dans un angle et le contrôle manuel explicite de leur position ne sont actuellement pas pris en charge.

Remarque :   Il existe plusieurs compléments de graphique tiers permettant un contrôle accru des étiquettes de l'axe des X. Ces compléments peuvent être installés sur Reporting Services 2005.

Étiquettes de point de données et étiquettes de légende

Page 12: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Les étiquettes de point de données permettent de pointer spécifiquement vers certaines valeurs (telle que la valeur minimum ou maximum générale) parmi tous les points de données visibles dans le graphique.

Pour activer les étiquettes de point de données, modifiez la valeur du graphique dans la boîte de dialogue Propriétés du graphique. La boîte de dialogue Modifier une valeur du graphique s'ouvre alors ; elle contient un onglet Étiquettes des points comportant l'option Afficher les étiquettes des points.

Placement des étiquettes de données

Par défaut, lorsque vous activez les étiquettes de point de données, une étiquette est affichée par point de données. L'étiquette de point de données est automatiquement placée de sorte à éviter tout chevauchement des étiquettes. Si les étiquettes de point de données se chevauchent, le contrôle de graphique déplace les étiquettes se chevauchant vers une zone libre de la zone de traçage du graphique (et dessine une liaison pour connecter l'étiquette de données à la valeur du point de données). Si un trop grand nombre d'étiquettes se chevauchent, le contrôle des graphiques supprime les étiquettes de point de données individuelles jusqu'à ce que l'espace soit suffisant pour intégrer les étiquettes restantes sans chevauchement.

Outre le positionnement automatique, vous pouvez utiliser le positionnement manuel des étiquettes explicite (haut, gauche, centre, etc.). Cependant, en fonction des valeurs de données et de la taille des étiquettes de données, il est possible que les étiquettes se chevauchent.

Par défaut, l'étiquette du point de données indique la valeur de l'axe des Y du point de données. Il est également possible de spécifier une expression d'étiquette de point de données explicite et des chaînes au format DateTime ou numérique pour personnaliser l'étiquette. En règle générale, vous effectuez les calculs des étiquettes de point de données à l'aide d'expressions identiques à celles utilisées pour calculer la valeur de l'axe des Y dans l'expression de la valeur du point de données. Par exemple, pour uniquement afficher les étiquettes de point de données si la contribution relative de ce segment est supérieure à 5 % de la quantité totale, vous pourriez utiliser une expression d'étiquette de point de données identique au code de la procédure suivante.

Utilisez l'expression suivante pour l'expression de l'étiquette de point de données : =Code.GetLabel(Sum(Fields!Sales.Value), Sum(Fields!

Sales.Value,"SalesChart"))

Ouvrez la boîte de dialogue Propriétés du rapport et cliquez sur l'onglet Code. Ajoutez la fonction de code personnalisé GetLabel(…) suivante dans l'option Code personnalisé.

Public Function GetLabel(ByVal currentValue As Double, ByVal totalValue As Double) As String

If currentValue / totalValue < 0.05 Then   Return " " Else Return Format(currentValue / totalValue, "P1") End If End Function

Page 13: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Explication du code

La fonction GetLabel() utilise deux arguments. Le premier argument fournit la valeur actuelle du point de données spécifié. Le deuxième argument fournit le calcul de la quantité totale. La fonction calcule le pourcentage relatif. S'il est inférieur à 5 % (0,05), une chaîne vierge est renvoyée.

Remarque   Le renvoi d'une chaîne null ou vide affiche l'étiquette par défaut auto-générée. Si le pourcentage relatif est d'au moins 5 %, une chaîne formatée en pourcentage (chaîne de format : P1) est renvoyée.

Vous trouverez un exemple d'application de ce type de formatage dans l'exemple de rapport PiePercentage inclus dans ce livre blanc.

Positions des étiquettes de données dans les graphiques à secteurs et à anneaux

Pour les graphiques à secteurs et à anneaux, il existe seulement deux positions d'étiquette de point de données : intérieur (définit la position de l'étiquette de point de données sur Auto ou Centré) et extérieur (n'importe quelle autre position d'étiquette). Vous trouverez un exemple d'étiquettes positionnées à l'extérieur dans la figure 5 (et dans l'exemple de rapport PieSimplePercentage).

Figure 5. Étiquettes de point de données à l'extérieur du graphique dans un graphique à secteurs

La position des étiquettes de segment sectoriel peut être spécifiée comme indiqué dans la figure 6.

Page 14: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Figure 6. Définition des étiquettes de point de données à l'extérieur d'un graphique à secteurs ou à anneaux en sélectionnant une position à l'exception de la position centrale

Étiquettes de légende

En règle générale, les étiquettes de légende sont déterminées en fonction des valeurs de groupe de série dynamique (ou des étiquettes si spécifiées explicitement dans le groupe) et des noms des valeurs (de série statique). Étant donné que le graphique est par nature une représentation aplatie des hiérarchies de regroupement, les étiquettes de légende sont générées en fonction de cette hiérarchie.

Par exemple, si un graphique dispose de deux regroupements de série (extérieur défini en tant que OrderYear, intérieur en tant que OrderQuarter) et d'une seule valeur de graphique (par exemple, Réel), les étiquettes de légende sont générées en concaténant les valeurs du groupe et les valeurs du graphique comme indiqué dans le tableau 1.

Tableau 1

Étiquette OrderYear

Étiquette OrderQuarter

Étiquette de série de valeurs du graphique

ÉTIQUETTE DE LÉGENDE GÉNÉRÉE

2006 Q1 Réel 2006 – Q1 – Réel2006 Q2 Réel 2006 – Q2 – Réel

Page 15: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Supposons qu'on ajoute une deuxième valeur de graphique appelée Budget. En utilisant les mêmes données que dans l'exemple précédent, les étiquettes générées ressemblent à celles du tableau 2.

Tableau 2

Étiquette OrderYear

Étiquette OrderQuarter

Étiquette de série de valeurs du graphique

ÉTIQUETTE DE LÉGENDE GÉNÉRÉE

2006 Q1 Réel 2006 – Q1 – Réel2006 Q1 Budget 2006 – Q1 – Réel2006 Q2 Réel 2006 – Q2 – Réel2006 Q2 Budget 2006 – Q2 – Budget

Remarque   Vous pouvez masquer les niveaux internes individuels dans la hiérarchie en définissant l'expression d'étiquette de groupe de façon à renvoyer une chaîne vide (=""). Ce processus supprime ce niveau de groupe des étiquettes de légende générées.

Étiquettes et points de données vides

La situation suivante peut vous paraître familière. Vous générez un graphique avec une série de données, les étiquettes de point de données sont activées et le graphique est présentable. Vous décidez d'ajouter un groupe de série dynamique pour que le graphique affiche plusieurs séries de données. Tout à coup, le graphique intègre des étiquettes supplémentaires (pour des points de données vides).

Les points de données vides surviennent lorsque l'ensemble de données sous-jacent ne contient pas de valeurs de données pour chaque combinaison série/catégorie. Le graphique équivaut par nature à une matrice (restreinte) constituée de cellules vides.

Vous pouvez supprimer des étiquettes pour les points de données vides. Au lieu d'activer les étiquettes de point de données et d'utiliser l'étiquette par défaut, utilisez l'approche présentée dans l'exemple de rapport EmptyDataPointLabels inclus dans ce livre blanc (voir également la figure 7). Voici l'exemple de code qui exécute ce processus.

Utilisez la fonction Count(…) pour déterminer le nombre de lignes de données sous-jacentes étant agrégées pour ce point de données. Si le nombre de lignes est égal à zéro, il s'agit d'un point de données vide. Transmettez ce nombre à une fonction de code personnalisé avec la valeur réelle de l'étiquette :

=Code.GetLabel(Avg(Fields!UnitsInStock.Value), Count(Fields!UnitsInStock.Value))

Ouvrez la boîte de dialogue Propriétés du rapport et cliquez sur l'onglet Code. Ajoutez la fonction de code personnalisé GetLabel(…) suivante dans l'option Code personnalisé.

Public Function GetLabel(ByVal datapointValue As Double, ByVal count As Integer) As String

If count = 0 Then

Page 16: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Return " " Else Return Format(datapointValue, "N1") End If End Function

Figure 7. Exemple de rapport incluant des points de données vides sans étiquettes

Questions&Réponses sur le formatage des étiquettes de point de données

Question : Quel rôle jouent les lignes grisées (appelées liaisons) situées à proximité des étiquettes de point de données si le graphique est surchargé de points de données et d'étiquettes ?

Réponse : Si la position de l'étiquette de point de données est définie sur Auto, le contrôle des graphiques déplace les étiquettes vers des zones libres pour éviter que les étiquettes de point de données ne se chevauchent. Les liaisons relient l'étiquette de point de données et l'emplacement de point de données.

Vous pouvez utiliser le positionnement manuel pour éviter cette situation. À l'aide d'expressions, vous pouvez masquer de manière dynamique une grande partie des étiquettes de point de données en indiquant un espace vide (=" ") comme résultat d'évaluation d'une chaîne. Dans le cas contraire, l'étiquette par défaut s'affiche si les étiquettes de point de données sont activées.

Question : Est-il possible d'utiliser les mots clés Dundas pour le formatage des étiquettes ?

Réponse : Oui, vous pouvez utiliser les mots clés Dundas intégrés pour les étiquettes de point de données. En règle générale, il est toutefois recommandé de ne pas combiner les expressions RDL et les mots clés Dundas (les expressions RDL sont évaluées en premier

Page 17: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

lieu, les fonctions Dundas sont interprétées ultérieurement par le contrôle des graphiques). Le tableau 3 contient une liste de mots clés Dundas utiles.

Tableau 3

Mot clé Dundas Remplacé par#VALX Valeur du point de données sur l'axe des X#VAL Valeur du point de données sur l'axe des Y#VALY, #VALY2, #VALY3, etc.

Première valeur de l'axe des Y, deuxième valeur de l'axe des Y, troisième valeur de l'axe des Y, etc.

#INDEX Index des points de données dans la série#TOTAL Total de toutes les valeurs de l'axe des Y dans la série actuelle

#VALY{C2}Valeur de l'axe des Y du point de données formatée à l'aide de la chaîne de format C2 (format des devises)

Haut de page

Exemples de graphiques et de rapports

Cette section présente des exemples de création de différents types de graphiques et de rapports. Il peut s'avérer utile de revenir occasionnellement aux rubriques portant sur les étiquettes de graphique étudiées dans les sections précédentes lorsque vous examinerez ces exemples. Voici les exemples présentés dans cette section.

Graphiques combinés courbes/histogrammes

Fournit une présentation générale des graphiques combinés et l'exemple de rapport SalesCostTarget.

Graphiques de Pareto

Implémente la vision de Pareto dans un graphique (exemple de rapport ParetoChart).

Calculs de la moyenne mobile

Calcul et visualisation des tendances de série chronologique dans les graphiques (exemple de rapport MovingAverage).

Légendes et palettes de couleurs de graphique personnalisées

Comment personnaliser les couleurs de votre graphique (exemple de rapport CustomColorPalette).

Graphiques à secteurs et à anneaux

Informations spécifiques à ne pas oublier lors de l'utilisation des graphiques à secteurs ou à anneaux.

Page 18: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Ajout de tables de données au graphique

Indique comment associer les données du graphique agrégées aux données détaillées (exemple de rapport PiePercentage).

Graphique en bulles et à nuages de points

Conseils importants pour la conception de graphiques en bulles et à nuages de points (BubbleChart, StepFunctionChart).

Graphiques insérés au tableau

Vous n'avez peut-être pas besoin d'une visualisation de graphique complexe ou vous devez gérer un volume inconnu de données lors de l'exécution tout en souhaitant une visualisation attrayante et utile. Cette section propose différentes façons d'atteindre ce but (TableInlineCharts).

Extensibilité du graphique et création manuelle de graphiques

Aborde plusieurs alternatives au cas où les graphiques intégrés ne soient pas suffisants.

Les exemples de rapports, basés sur les exemples des bases de données AdventureWorks et Northwind de SQL Server 2005, sont inclus dans le fichier téléchargé avec ce livre blanc.

Graphiques combinés courbes/histogrammes

Les graphiques qui affichent plusieurs séries de données sous forme de colonnes et d'autres séries de données sous forme de lignes sont souvent utilisés pour représenter des tendances générales et des valeurs cibles ou pour analyser ultérieurement les données du graphique. Cette section fournit des informations d'ordre général sur la conception de ce type de graphique dans Reporting Services.

Pour créer un graphique combiné courbes/histogrammes :

Ajoutez un graphique au rapport et définissez le type de graphique sur Histogramme. Dessinez le graphique en ajoutant des groupes de catégorie et/ou des groupes de série et

des valeurs de données. Pour afficher les valeurs de données sous forme de lignes, procédez aux étapes suivantes

dans Report Designer : o Ouvrez la boîte de dialogue Propriétés du graphique. o Cliquez sur l'onglet Données. o Sélectionnez les valeurs de données à afficher sous forme de lignes et cliquez sur

Modifier. o Dans la boîte de dialogue Modifier une valeur du graphique, cliquez sur l'onglet

Apparence et sélectionnez Tracer les données sous forme de ligne (voir figure 8).

Page 19: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Figure 8. Représentation d'une série de données sous forme de ligne dans un histogramme

Pour ajouter une valeur Target constante ou dynamique au graphique :

Dessinez le graphique. Dans l'onglet Données de la boîte de dialogue Propriétés du graphique, ajoutez une

valeur de données (par exemple, Target). Définissez la valeur Target (l'exemple de la figure 9 utilise une valeur Target constante

égale à 100 000 dans toutes les catégories). Assurez-vous d'utiliser une expression commençant par le signe = (égal). Dans le cas contraire, la valeur n'est pas interprétée comme une valeur numérique.

Figure 9. Ajout d'une valeur Target

Page 20: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

L'exemple de rapport SalesCostTarget (voir figure 10) utilise cette approche pour ajouter une ligne simple correspondant à l'objectif des ventes au graphique.

Figure 10. Valeur Target (ligne rouge) (Cliquez sur l'image pour l'agrandir)

Remarque   Étant donné que les lignes de la série du graphique en courbes sont représentées en reliant les points de données des diverses catégories, la ligne est uniquement visible si le groupement de catégories dispose au minimum de deux valeurs d'instance de groupe différentes lors de l'exécution.

Remarque   Si le graphique contient un ou plusieurs groupes de série, la valeur de données Target est dupliquée pour chaque instance de groupe de la série. Cela peut s'avérer utile si vous disposez de valeurs Target spécifiques pour chaque instance de groupe.

Si vous souhaitez une seule valeur Target globale pour toute la série, vous pouvez définir la valeur de données Target de façon dynamique comme suit :

=iif(Fields!<SameFieldAsSeriesGroup>.Value = First(Fields!<SameFieldAsSeriesGroup>.Value, <ChartName>), <TargetValue>, Nothing)

Un exemple d'expression spécifique se présenterait comme suit :

=iif(Fields!Year.Value = First(Fields!Year.Value, "SalesChart"), 100000, Nothing)

Graphiques de Pareto

Page 21: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Un graphique de Pareto résume et affiche l'importance relative des différences entre les groupes de données. Les graphiques de Pareto font la distinction entre les « quelques vitaux » et les « nombreux utiles ». Un graphique de Pareto peut également être représenté sous la forme d'un histogramme dont les colonnes sont triées selon l'ordre décroissant pour identifier les meilleures possibilités d'améliorations.

Bien que les graphiques de Pareto ne soient pas directement pris en charge dans les graphiques Reporting Services intégrés, vous pouvez créer un graphique Pareto à l'aide des fonctionnalités de Reporting Services 2005 en écrivant un peu de code. Cette section présente une explication approfondie de l'exemple de rapport ParetoChart inclus dans ce livre blanc.

Voici la description du scénario pour l'exemple de rapport ParetoChart.

La base de données AdventureWorks de SQL Server 2005 contient des données concernant les employés du service des ventes. Nous sommes particulièrement intéressés par l'analyse des informations suivantes concernant nos employés du service des ventes :

Comment se présente l'analyse de Pareto si elle se base sur les employés du service des ventes ayant reçu les primes les plus conséquentes de l'année précédente ? (Voir la courbe orange de la figure 11.)

Quels employés du service des ventes ont reçu les plus grosses primes l'année dernière et que se passe t-il si on les compare aux ventes globales de l'année en cours ? (Voir les colonnes bleue et verte de la figure 11.)

Les performances en termes de vente ont-elles évoluées de façon significative en se basant sur la prime de l'année précédente comparée aux ventes de l'année en cours ? Bien que la réponse puisse se trouver en comparant les colonnes bleue et verte, l'énorme fossé séparant les courbes de Pareto orange et rouge de la figure 11 rend la réponse plus évidente.

Pour un employé du service des ventes donné, nous souhaiterions nous plonger dans les performances en termes de vente présentes et passées et examiner les tendances historiques sur plusieurs années de données.

Cette opération nécessite l'ajout d'actions d'extraction sur les valeurs de données de vente (colonnes vertes de la figure 11) pour fournir une analyse détaillée des données de chaque commercial et une analyse des tendances. Le rapport d'extraction (exemple de rapport MovingAverage) est analysé en détails dans la section suivante.

Page 22: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Figure 18. Exemple de rapport de graphique de Pareto (cliquez sur l'image pour l'agrandir)

Pour générer le rapport de graphique de Pareto

Définissez la requête afin de récupérer les données de ventes nécessaires.

La requête pré-trie les données pour chaque commercial en se basant sur les valeurs des primes. Elle ne récupère pas les commandes commerciales individuelles car celles-ci ne sont pas nécessaires au rapport. Cela permet également de conserver un ensemble de données de petite taille.

Dessinez la forme globale du graphique.

Ajoutez un histogramme au rapport. Pour analyser les données par commercial, ajoutez un groupe de catégorie basé sur le commercial (classé comme suit =Fields!SalesPersonID.Value). Pour l'étiquette de la catégorie, indiquez le prénom et le nom du commercial. Pour cela, définissez l'expression de l'étiquette du groupe de catégorie comme suit.

=Fields!FirstName.Value & " " & Fields!LastName.Value

Préparez le graphique aux calculs de Pareto.

Nous utiliserons la fonction RunningValue(…) pour les calculs.

Remarque   La fonction RunningValue est uniquement prise en charge dans les graphiques s'ouvrant avec Reporting Services 2005.

Page 23: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Comme pour une matrice, la fonction RunningValue nécessite une étendue de regroupement explicite dans un graphique pour déterminer si la valeur d'exécution doit s'exécuter dans toutes les catégories d'une série de données particulière (la direction est par nature horizontale) ou si elle doit s'exécuter dans toute la série de données d'une catégorie particulière (moins fréquent).

Pour les calculs de Pareto, nous devons utiliser une fonction RunningValue qui se sert d'un nom de groupe de série comme étendue de « réinitialisation » (et par conséquent s'exécute dans toutes les catégories). Puisque nous ne disposons pas encore d'un groupe de série pour ce graphique, nous pouvons seulement ajouter un faux groupe de série basé sur une valeur constante (telle que 1).

Expression du groupe : 1

Expression de l'étiquette : ="" (pour masquer l'étiquette de la série à partir des étiquettes de légende générées)

Il en résulte une série de données, ainsi qu'un nom explicite d'étendue de la série.

Ajoutez les valeurs de données de ventes et de primes sous forme de colonnes. Nous pouvons ajouter au graphique des valeurs de données correspondant au cumul des ventes et des primes jusqu'à ce jour en faisant glisser les champs de données correspondants dans le graphique.

Remarque   Cet exemple utilise la fonction d'agrégation Sum() pour les valeurs de ventes et de primes.

Nous souhaitons placer la légende dans le coin supérieur gauche à l'intérieur de la zone de traçage du graphique. Par conséquent, nous souhaitons redimensionner l'axe des Y de façon à ce que la valeur maximale du point de données représentée dans le graphique ne dépasse jamais 75 % de la hauteur totale de l'axe des Y.

Pour cela, nous multiplions les calculs de la prime par 75 % :

=0.75 * Sum(Fields!Bonus.Value) / Max(Fields!Bonus.Value, "SeriesGroup")

Nous procédons de la même façon pour le calcul des ventes :

=0.75 * Sum(Fields!SalesYTD.Value) / Max(Fields!SalesYTD.Value, "SeriesGroup")

Définissez l'axe des Y en tant qu'axe de pourcentages.

Lors de l'étape précédente, nous avons défini les calcul des primes et des ventes en tant que calculs de pourcentages (quantité relative par rapport à la valeur maximale).

Page 24: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

La définition de la chaîne de format de l'axe des Y sur P0 applique un formatage en pourcentage (l'axe des Y réel sera redimensionné entre 0 et 1). Pour obtenir des intervalles intéressants, nous définissons l'intervalle principal de l'axe des Y sur 0,2 afin d'obtenir des intervalles de 20 %.

Ajoutez les calculs de Pareto des ventes et primes sous forme de courbes.

La fonction RunningValue() fournit un calcul cumulatif jusqu'à ce qu'elle se réinitialise. Nous souhaitons qu'elle ne se réinitialise jamais. Étant donné qu'au départ nous ne disposons pas d'un groupe de série explicite, nous en avons ajouté un à l'étape 3.

Les calculs de Pareto correspondent à la somme cumulative divisée par les valeurs totales. Pour le calcul de Pareto des primes, nous utilisons l'expression suivante.

=RunningValue(Fields!Bonus.Value, Sum, "SeriesGroup") / Sum(Fields!Bonus.Value, "SeriesGroup")

Nous procédons de la même façon pour le calcul de Pareto des ventes :

=RunningValue(Fields!SalesYTD.Value, Sum, "SeriesGroup") / Sum(Fields!SalesYTD.Value, "SeriesGroup")

Ajoutez une action d'extraction à la valeur de données des ventes.

Pour effectuer une analyse d'extraction des données de vente d'un commercial, nous avons ajouté dans l'exemple de rapport MovingAverage une action d'extraction (voir figure 12) au point des données de vente. Étant donné que nous sommes uniquement intéressé par un commercial en particulier, nous définissons le paramètre d'extraction SalesPersonID sur la valeur du groupe de catégorie actuelle. Dans cet exemple il s'agit de l'ID actuel du commercial : =Fields!SalesPersonID.Value.

Page 25: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Figure 12. Ajout d'une action d'extraction

Finalisez le graphique en ajoutant le formatage, les étiquettes de point de données et la légende.

Calculs de la moyenne mobile

La moyenne mobile appartient à la catégorie des techniques statistiques utilisées pour analyser les données d'une série chronologique. Une série de moyenne mobile peut se calculer pour n'importe quelle série chronologique.

Bien que les calculs de moyenne mobile ne soient pas directement pris en charge via les graphiques Reporting Services intégrés, vous pouvez tout de même écrire du code pour effectuer ce type de calculs. Cette section présente une explication approfondie de l'exemple de rapport MovingAverage.

L'exemple de rapport concerne le scénario décrit dans la section précédente à propos des graphiques de Pareto. Pour un employé du service des ventes donné, nous souhaiterions analyser les performances en termes de ventes présentes et passées et analyser les tendances historiques sur plusieurs années de données. Les moyennes mobiles sont utilisées pour aplanir les fluctuations à court terme, et donc mettre en évidence les cycles ou les tendances à long terme.

L'exemple MovingAverage présente le calcul d'une simple moyenne mobile (la moyenne non pondérée des points de données n précédents). Dans cet exemple particulier, nous utilisons les données des ventes des trois derniers mois. Voir figure 13.

Page 26: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Figure 13. Calcul de la moyenne mobile (cliquez sur l'image pour l'agrandir)

Pour générer le rapport

Définissez la requête de façon à récupérer les données des ventes détaillées nécessaires.

La requête est paramétrée pour récupérer les données d'un seul commercial donné. Le paramètre de la requête est défini en se basant sur un paramètre du rapport, complété par un ensemble de données basé sur une liste de valeurs valides.

Dessinez la forme globale du graphique.

Ajoutez un histogramme au rapport. Pour l'axe des X, utilisez le mode catégorie pour pouvoir disposer de deux niveaux de regroupement : regroupement par mois au niveau interne et regroupement par année avec plages de regroupement au niveau externe. Le groupe des mois utilise l'expression d'étiquette de groupe explicite suivante pour formater le nom du mois sous forme abrégée. =Format(Fields!OrderDate.Value,"MMM")

Préparez le graphique pour le calcul de la moyenne mobile.

Comme pour l'étape 3 des calculs de Pareto, nous utilisons la fonction RunningValue. La moyenne mobile ne doit pas se réinitialiser dans les catégories, nous ajoutons donc un regroupement de série basé sur SalesPersonID. Puisque la requête est paramétrée en fonction du commercial, il y aura une seule série de commercial. L'expression de l'étiquette de groupe de la série est définie sur =Fields!FullName.Value pour que les éléments de la légende du graphique contiennent le nom entier du commercial.

Ajoutez le calcul des ventes sous forme de colonnes.

Faites glisser le champ de dataset TotalDue dans la zone d'insertion des valeurs du graphique pour ajouter une valeur de données des ventes basée sur l'agrégation Sum().

Page 27: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Pour concaténer le mot « Ventes » de l'étiquette de groupe de la série (l'étiquette de groupe est le nom entier du commercial comme défini dans l'étape 3), nous définissons explicitement l'étiquette de la valeur de données sur Ventes.

Ajoutez les fonctions du code personnalisé de la moyenne mobile.

Le tableau suivant présente un exemple de calcul de la moyenne mobile à l'aide d'une file d'attente. La colonne Contenu de la file d'attente présente le contenu de la file d'attente actuelle pour un mois donné. La dernière colonne du tableau indique un calcul RunningValue basé sur l'agrégation d'éléments ajoutés et supprimés de la file d'attente. L'exemple de code situé en dessous du tableau présente une implémentation de cet algorithme.

Tableau 4

Mois VentesMoyenne

mobile (2 mois)

Valeur d'exécution

régulière

Contenu de la file

d'attente

Valeur de file d'attente

supprimée

Exécution de la valeur basée sur la file d'attente

Janv. 20 N/A 20 20 N/A 0Févr. 10 15 35 20, 10 N/A 0+ 15 = 15

Mars 24 17 59 10, 24 -2015+ (24-20) /2 = 17

Avr. 16 20 75 24, 16 -1017+ (16-10) /2 = 20

Mai 12 14 87 16, 12 -2420+ (12-24) /2 = 14

Pour implémenter RunningValue basée sur la file d'attente, ajoutez le code suivant à la section Code personnalisé dans l'onglet Code de la boîte de dialogue Propriétés du rapport.

Private queueLength As Integer = 3     Private queueSum As Double = 0     Private queueFull As Boolean = False     Private queue As New System.Collections.Generic.Queue(Of Double)

    Public Function MovingQueue(ByVal currentValue As Double) As Object         Dim removedValue As Double = 0         If queue.Count >= queueLength Then             removedValue = queue.Dequeue()         End If         queueSum += currentValue         queueSum -= removedValue         queue.Enqueue(currentValue)         If queue.Count < queueLength Then             Return Nothing

Page 28: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

        ElseIf queue.Count = queueLength And queueFull = False Then             queueFull = True             Return queueSum / queueLength         Else             Return (currentValue - removedValue) / queueLength         End If     End Function

Ajoutez la valeur mobile moyenne des ventes sous forme de ligne.

Le calcul de la valeur des données pour la moyenne mobile utilise la fonction RunningValue pour les valeurs renvoyées par la fonction de code personnalisé MovingQueue. La fonction MovingQueue calcule les valeurs d'ajustement pour le calcul RunningValue cumulatif. Cette opération est effectuée à l'aide du code suivant.

=RunningValue(Code.MovingQueue(Fields!TotalDue.Value), Sum, "SalesPerson")

Remarque   Pour effectuer plusieurs calculs de moyenne mobile dans un graphique, vous devez déterminer une méthode de réinitialisation de la file d'attente à la fin d'une série ou utiliser plusieurs files d'attentes. Par exemple, vous pouvez utiliser une table de hachage des files d'attente indexées sur la valeur de groupe de la série et transmises à la fonction MovingQueue en tant qu'argument supplémentaire.

Remarque   Un graphique ne peut pas englober plusieurs pages. C'est pourquoi la déclaration des variables comme valeur non partagée privée est valide.

Pour utiliser le calcul de moyenne mobile dans une autre région de données (comme une liste, un tableau ou une matrice) englobant plusieurs pages, les variables doivent être déclarées comme étant partagées (donc statiques) afin de conserver l'état dans la pagination. Toutefois, comme cette opération utilise des variables statiques, si deux personnes exécutent le rapport en même temps, il y a un faible risque que les deux états de variable entrent en collision. Pour être absolument sûr d'éviter de désagrément, vous pouvez faire une table de hachage pour chaque variable partagée, basée sur l'ID de l'utilisateur effectuant la demande (=Globals!UserID).

Légendes et palettes de couleurs de graphique personnalisées

Les graphiques utilisent des palettes de couleurs prédéfinies et intégrées comportant 10 à 16 couleurs différentes. En commençant avec Reporting Services 2000 Service Pack 1 (SP1), vous pouvez remplacer les couleurs par défaut. Pour spécifier les valeurs des couleurs comme valeurs constantes ou basées sur une expression, cliquez sur le bouton Style de séries des propriétés d'apparence pour la valeur de donnée de la boîte de dialogue Modifier une valeur du graphique. Vous pouvez ainsi utiliser cette fonction pour mettre en évidence les valeurs basées sur une certaine condition, comme une valeur minimale ou maximale dans la série actuelle.

Page 29: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Remarque   Si vous ne souhaitez pas définir une palette de couleurs entièrement personnalisée, vous pouvez changer la couleur des points de données individuels. Utilisez une expression qui renvoie une valeur de couleur spécifique (pour un remplacement) ou renvoie « Nothing », ce qui permet de choisir la couleur actuelle à partir de la palette sous-jacente de couleurs intégrée.

Par exemple, vous pouvez mettre en rouge toutes les valeurs de points de données avec des valeurs négatives y. Pour tous les autres points de données, vous pouvez appliquer les couleurs par défaut. Pour ce faire, sélectionnez Modifier la valeur des données, puis cliquez sur l'onglet Apparence. Cliquez sur le bouton Style de séries pour ouvrir la boîte de dialogue Propriétés de style. Cliquez sur l'onglet Remplir. Entrez l'expression suivante dans les propriétés de style de couleur de remplissage.

=iif(Sum(Fields!Sales.Value - Fields!Cost.Value) < 0, "Red", Nothing))

Remarque   Si vous définissez la couleur de remplissage avec une valeur constante, cette couleur s'applique à tous les points de données pour cette série de données.

La légende du graphique utilise des champs de couleur pour faire correspondre les éléments de la légende aux points de données visibles. La légende affiche uniquement un champ de couleur par élément de légende (série de données) ; ainsi, elle affiche la couleur du premier point de données de cette série. Ne l'oubliez pas lorsque vous utilisez des expressions pour déterminer dynamiquement la couleur des points de données individuels dans une série ; l'élément de légende affiche toujours la couleur réelle du premier point de données.

Bien que la légende créée dans les graphiques de Reporting Services soit facile à utiliser, elle manque de flexibilité. Par exemple, la légende utilise de l'espace dans le graphique. Si la légende se trouve en dehors de la zone de traçage et que la légende s'étend, la taille de la zone de traçage du graphique diminue en conséquence.

Vous pouvez bénéficier d'une meilleure flexibilité et mieux contrôler la légende en générant votre légende personnalisée à l'aide d'un tableau ou d'une matrice. La manière la plus simple de synchroniser les couleurs du graphique avec votre légende personnalisée consiste à définir votre palette personnalisée de couleurs de graphique. L'exemple de rapport CustomColorPalette implémente une palette de couleurs et une légende personnalisées. Voir figure 14.

Page 30: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Figure 14. Rapport d'histogramme avec palette de couleurs et légende personnalisées.

Pour créer une palette de couleurs personnalisée

Définissez les groupes de séries de graphiques et de catégories.

Par défaut, une couleur est affectée à chaque série de données de graphique. Cette couleur est basée sur la palette du graphique sélectionné. Dans cet exemple, nous souhaitons remplacer ces couleurs basées sur les valeurs d'instance du groupe de la série.

Définissez la palette de couleurs personnalisée et ajoutez le code personnalisé.

La variable colorPalette stocke la définition de notre palette de couleurs personnalisée, qui comporte 15 couleurs différentes. La variable count effectue le suivi du compte total des valeurs de groupement différentes afin de les encapsuler une fois que le nombre de couleurs distinctes de la palette de couleurs personnalisée est dépassé. La table de hachage de mappage effectue le suivi du mappage entre les valeurs de groupement et les couleurs. Ainsi, tous les points de données de la même série de données sont de la même couleur. La série est ensuite utilisée pour synchroniser les couleurs de légende personnalisées avec les couleurs du graphique. Le code suivant fait partie de la fenêtre de code personnalisé du rapport.

Private colorPalette As String() = {"Green", "Blue", "Red", "Orange", "Aqua", "Teal", "Gold", "RoyalBlue", "MistyRose", "LightGreen", "LemonChiffon", "LightSteelBlue", "#F1E7D6", "#E16C56", "#CFBA9B"}     Private count As Integer = 0     Private mapping As New System.Collections.Hashtable()     Public Function GetColor(ByVal groupingValue As String) As String         If mapping.ContainsKey(groupingValue) Then             Return mapping(groupingValue)         End If

Page 31: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

        Dim c As String = colorPalette(count Mod colorPalette.Length)         count = count + 1         mapping.Add(groupingValue, c)         Return c     End Function

Appelez la fonction GetColor() pour affecter les couleurs aux points de données.

La fonction GetColor est appelée à partir des propriétés de style de couleur de remplissage. Modifiez la valeur des données pour ouvrir la boîte de dialogue Modifier une valeur du graphique, puis cliquez sur l'onglet Apparence (Figure 15). Cliquez sur le bouton Style de séries, puis sur l'onglet Remplir. La valeur actuelle du groupe de série est transmise en tant qu'argument à la fonction GetColor, nécessaire au mappage de la valeur d'instance de groupe interne vers la valeur de la couleur.

Figure 15. Définition des styles de séries de données explicites

Remarque   Si vous disposez de plusieurs groupes de séries de graphiques, vous pouvez concaténer les valeurs du groupe de la série pour créer un identificateur unique utilisé dans la fonction GetColor. Le code suivant est un exemple.

=Code.GetColor(Fields!Country.Value & "|" & Fields!City.Value)

Page 32: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Ajoutez une légende de graphique.

Vous pouvez utiliser la légende de graphique intégrée. Vous pouvez également désactiver la légende de graphique intégrée et suivre les étapes de la procédure ci-dessous pour créer votre légende de graphique personnalisée avec une région de données de tableau ou de matrice.

Pour créer une légende personnalisée

Ajoutez une région de données de tableau au rapport.

Placez le tableau en regard du graphique et liez-le au même dataset que le graphique.

Mettez en miroir la structure de groupement du graphique dans le tableau en ajoutant des groupes de tableaux.

Si le graphique utilise des groupements de séries, ajoutez-les au tableau en joignant les groupes de tableaux basés sur la même expression de groupe que celle des groupements de série de graphique. Ajoutez ensuite, le cas échéant, les groupements de catégorie de graphique en tant que groupes de tableaux internes.

En règle générale, si le graphique comporte m groupement de série et n groupement de catégorie, ajoutez m+n groupes de tableaux pour votre légende personnalisée.

Pour les groupes de tableaux individuels, affichez uniquement l'en-tête du groupe (qui contient la description de la légende). Supprimez également la ligne de détails du tableau sauf si vous souhaitez utiliser les lignes de détails pour simuler un tableau de données de graphique.

Créez la légende personnalisée.

Ajoutez un rectangle pour le champ de couleur de la légende personnalisée. Vous pouvez par exemple l'ajouter à la première colonne du tableau. Comme indiqué à l'étape 2, vous devez uniquement avoir des lignes d'en-tête de groupe dans le tableau . Le rectangle est destiné au niveau le plus interne d'en-tête de groupe.

Définissez la propriété BackgroundColor du rectangle sur l'expression équivalente utilisée dans la couleur de remplissage du point de données du graphique. Dans le cas le plus classique, l'expression contient une seule valeur de groupement, comme dans le code suivant.

=Code.GetColor(Fields!Country.Value)

Pour le texte de la légende, utilisez la même expression que dans les expressions d'étiquette/de groupe de séries et de catégories ou faites des essais jusqu'à ce que vous ayez créé le texte souhaité de description de légende.

Page 33: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Graphiques à secteurs et à anneaux

La section Étiquettes de légende et de point de données décrit la configuration d'étiquettes de points de données internes et externes pour les secteurs. Cette section traite quelques propriétés supplémentaires des graphiques à secteurs et des anneaux.

Contrairement à d'autres types de graphiques, un graphique à secteurs ou un anneau comporte une seule « dimension de groupements » (c'est-à-dire une série de données). Pour qu'un graphique à secteurs ou un anneau ait deux dimensions, les graphiques devraient être empilés les uns sur les autres.

Remarque   Pendant la publication du rapport, Reporting Services convertit automatiquement les groupes de séries d'un graphique à secteurs ou d'un anneau en groupes de catégories pour afficher les données comme une série de données.

Les graphiques à secteurs sont souvent utilisés pour afficher les pourcentages relatifs des points de données. En général, le pourcentage (que vous pouvez par exemple utiliser pour l'affichage comme étiquette de point de données) est calculé en divisant l'expression de la valeur du point de données par le total de tout le graphique. Le code suivant en est un exemple.

=Sum(Fields!Sales.Value) / Sum(Fields!Sales.Value, "SalesChart")

Cette expression est ajoutée en tant qu'expression d'étiquette de données, tel qu'illustré figure 16.

Figure 16. Calcul du pourcentage de l'étiquette de données

Page 34: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Par défaut, les secteurs présentent des bordures noires qui améliorent la visibilité de ces derniers. Cependant, comme illustré à la figure 17 de la section suivante, vous pouvez remplacer la bordure par des paramètres spécifiques pour l'apparence du point de données. Si vous souhaitez que la couleur de la bordure corresponde à la couleur du secteur, vous devez utiliser une palette de couleurs personnalisée, tel qu'indiqué dans la section précédente . En utilisant une palette de couleurs personnalisée, vous pouvez définir la même couleur pour le point de données (secteur) que pour la bordure en effectuant un appel dans une fonction de code personnalisée, qui affecte les couleurs basées sur la valeur de groupement de catégorie.

Ajout de tables de données au graphique

Vous pouvez ajouter des données des détails à votre graphique. Si vous ajoutez des données directement dans le graphique, l'interprétation de ce dernier peut être plus complexe. Il est donc recommandé d'ajouter les informations dans la table de données.

Un graphique est une méthode très efficace de visualisation de la distribution générale des valeurs et d'identification des zones intéressantes (par exemple, des valeurs très petites et très grandes). Un lecteur peut analyser les informations de manière plus détaillée en fonction des données de détails sous-jacentes .

Reporting Services propose trois méthodes pour ajouter de l'interactivité aux points de données de graphique. Voici ces méthodes :

Utilisez l'action Aller au rapport pour afficher les données de détails en explorant un autre rapport basé sur les valeurs de groupes de catégories/séries en ajoutant ces dernières en tant que valeurs de paramètres d'exploration.

Utilisez l'action Aller au signet pour aller à une section (comme une table de données) dans le même rapport.

Utiliser l'action Aller à l'URL pour générer un lien hypertexte vers une cible de navigation externe en dehors du rapport.

La figure 17 montre une version simplifiée de l'exemple de rapport PiePercentage inclus dans ce livre blanc.

Page 35: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Figure 17. Graphique à secteurs avec formatage et palette de couleurs personnalisés, et table de données (cliquez sur l'image pour l'agrandir)

Pour créer une table de données

Créez un graphique à secteurs avec une palette de couleurs personnalisée.

Le graphique à secteurs de la figure 17 présente deux groupements de catégories. Le groupement externe est basé sur l'année de commande. Le groupement interne est basé sur la catégorie de produit. L'étape 2 de la procédure de création d'une palette de couleurs personnalisée décrit la définition de la palette.

Du fait de la présence de deux groupements de catégorie, nous utilisons l'expression suivante qui génère une clé composite transmise à la fonction GetColor.

=Code.GetColor(Fields!OrderYear.Value & Fields!ProdCat.Value)

Si nous appliquons le même appel de fonction GetColor à la propriété de couleur de remplissage du point de données et à la propriété de couleur de bordure du point de données, les secteurs ne présentent pas la bordure noire par défaut.

Affichez les étiquettes de point de données uniquement pour les secteurs qui représentent une partie du secteur dépassant les 4 % du secteur total.

Pour ce faire, ajoutez la fonction suivante à la section personnalisée du code du rapport. L'élément important consiste à renvoyer une chaîne avec une étiquette vide pour les secteurs dépourvus d'étiquette ; sans quoi, le contrôle graphique affiche l'étiquette par défaut pour ce secteur (l'étiquette par défaut est la valeur de point de données sous-jacentes).

Page 36: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Public Function GetLabel(ByVal currentValue As Double, ByVal totalValue As Double) As String If currentValue / totalValue < 0.04 Then Return " " Else Return Format(currentValue / totalValue, "P1") End IfEnd Function

L'expression d'étiquette pour le point de données appelle la fonction GetLabel pour calculer le pourcentage/l'étiquette.

=Code.GetLabel(Sum(Fields!Sales.Value), Sum(Fields!Sales.Value, "SalesChart"))

Créez une table de données (matrice) pour le graphique.

Ce graphique représente uniquement les données de ventes globales par année et par catégorie de produit. Dans la matrice de données, nous aimerions regrouper les données de la même façon.

Nous ajoutons une région de données de matrice et nous la lions au même dataset que le graphique. Nous ajoutons ensuite les champs OrderYear et ProdCat sous forme de groupes de lignes dans la matrice et regroupons les valeurs des Ventes dans la cellule de la matrice. Pour ajouter les sous-totaux, cliquez avec le bouton droit de la souris sur les cellules de l'en-tête de groupe dans la matrice et sélectionnez Sous-total dans le menu contextuel.

Remarque   Le fait de cliquer sur le petit triangle vert dans un en-tête de matrice sélectionne les propriétés du Sous-total où vous pouvez définir explicitement des propriétés de style pour les cellules de sous-totaux. Par exemple, vous pouvez afficher des cellules de sous-totaux avec une couleur d'arrière-plan différente pour les distinguer visuellement des autres données.

Le dataset sous-jacent apporte une granularité de données plus fine que ce qui est affiché sur le graphique. Nous pouvons profiter de cela dans la matrice de données en ajoutant un autre groupe de lignes (internes) basé sur la sous-catégorie, et le trimestre et les mois comme groupes de colonnes de matrice.

Ajoutez des descentes de niveau d'activation à la matrice de données.

Pour ajouter un effet de descente de niveau pour un groupe précis, cliquez avec le bouton droit de la souris sur l'en-tête de groupe et modifiez les propriétés du groupe. Dans l'onglet Visibilité de la boîte de dialogue Propriétés du groupe, sélectionnez le nom de l'élément de rapport qui doit améliorer la visibilité du groupe actuel. En général, vous sélectionnez le nom de l'élément de rapport de la zone de texte dans le groupe parent. S'il n'existe aucun groupe parent, vous pouvez ajouter une zone de texte dans l'angle de la

Page 37: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

matrice et l'utiliser pour basculer vers le niveau de regroupement le plus extérieur dans la matrice.

L'option Visibilité initiale, qui définit l'état bascule initial, est également définie sur l'onglet Visibilité du groupe. Définir cette option sur Visible indique le développement initial et sur Masquée indique la réduction initiale.

Ajustez l'image bascule initiale et l'état de basculement.

Si l'état initial de la visibilité de basculement est défini sur Visible, l'image bascule sur l'élément de rapport qui fait basculer ce groupe peut indiquer un signe plus (+). Pour afficher l'image bascule avec le signe moins (-), cliquez avec le bouton droit de la souris sur l'élément de rapport qui fait basculer le groupe ; il s'agit généralement de la zone de texte de l'en-tête du groupe parent. Sélectionnez Propriétés dans le menu contextuel. Dans la boîte de dialogue Propriétés de la zone de texte, sélectionnez l'onglet Visibilité et définissez l'aspect initial de l'image bascule. Comme la visibilité de basculement du groupe est définie sur Visible, l'aspect initial de la zone de texte doit être défini sur Développé (-), comme le montre la figure 18.

Figure 18. Ajustement de l'aspect initial de l'image bascule

Ajoutez des signets pour connecter le graphique et la matrice de données (facultatif).

Page 38: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

L'activation de la navigation vers les signets des points de données du graphique à la matrice de données implique deux étapes. Tout d'abord, définissez les ID de signet dans la matrice de données. Ensuite, définissez l'action Aller au signet sur le point de données du graphique.

Pour ajouter des signets dans la matrice des données, cliquez avec le bouton droit de la souris sur l'en-tête de groupe du groupe de lignes de l'année de commande et sélectionnez Propriétés dans le menu contextuel. Dans la boîte de dialogue Propriétés de la zone de texte, sélectionnez l'onglet Navigation et définissez l'expression Identificateur de signet en utilisant une expression qui génère une chaîne : =CStr(Fields!OrderYear.Value). Ceci fournit nos cibles d'accès aux signets.

Ouvrez la boîte de dialogue Propriétés du graphique et modifiez les propriétés du point de données. Dans l'onglet Action, sélectionnez Aller au signet et utilisez la même expression que celle utilisée pour l'identificateur de signet.

Graphique en bulles et à nuages de points

Les graphiques en bulles et à nuages de points diffèrent des autres types de graphiques car, au lieu d'utiliser les valeurs de regroupement par catégorie comme les valeurs X, ils disposent de valeurs x explicites pour les points de données. Par conséquent, les données peuvent être regroupées (et agrégées) dans une catégorie différente de la valeur indiquée sur l'axe des X. Par exemple, pour afficher les ventes de l'année dernière pour des commerciaux individuels sur l'axe des X, vous pouvez ne pas vouloir agréger les valeurs Y si deux commerciaux ont des valeurs X identiques. L'exemple de rapport BubbleChart (figure 19) a un regroupement catégoriel basé sur le commercial, de sorte qu'il regroupe les données des ventes par commercial. Cependant, la valeur des ventes de l'année dernière est affichée sur l'axe des X.

Remarque   Il est très important de saisir la distinction entre la propriété de la valeur X du point de données et le regroupement des données du graphique basé sur les groupes de séries ou de catégories. Si vous concevez un graphique en bulles ou en nuages de points, celui-ci indique uniquement un point de données dans l'aperçu, mais si vous espériez afficher plusieurs points différents, l'explication la plus plausible est qu'aucun groupe de catégories ou groupe de séries n'a été défini. Si aucun groupe de catégories ou de séries n'a été défini, les lignes de dataset sous-jacentes sont agrégées en un seul point de données avec des valeurs X et Y spécifiques. Dans certains cas, vous pouvez définir une expression de groupe de catégories ou de séries identique à l'expression de la valeur X, mais, dans un graphique en bulles ou en nuages de points, il est préférable d'ajouter un groupe de catégories ou de séries basé sur ce que les données représentent. Si le graphique regroupe les valeurs des ventes pour chaque commercial, le groupe de catégories ou de séries doit être basé sur l'ID ou le nom du commercial, comme illustré dans l'exemple de rapport BubbleChart.

Page 39: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Figure 19. Graphique en bulles avec données de séries regroupées par commercial

L'exemple de rapport StepFunctionChart propose un autre scénario utile pour les graphiques en nuages de points. Le graphique en nuages de points utilise un groupe de catégories basé sur des identificateurs de mesures. Pour certains jours, indiqués comme des valeurs X, il y a plusieurs mesures dans le dataset, indiquées sur l'axe des Y, créant ainsi des paliers verticaux.

Figure 20. Graphique en nuages de points basé, par exemple, sur les mesures de capteurs

Graphiques insérés au tableau

Page 40: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Parfois, vous avez une quantité inconnue de données au moment de l'exécution et vous souhaitez accroître de façon dynamique la taille des graphiques. Une méthode pour y parvenir consiste à incorporer un graphique dans le groupe d'une autre région de données. Par exemple, vous pouvez utiliser une région de données en liste avec un groupe de détails basé sur l'expression suivante :

=Ceiling(RowNumber(Nothing)/20)

Vous créez ainsi un groupe toutes les vingt lignes de détails. L'incorporation d'un graphique dans cette liste crée des instances graphiques au moment de l'exécution pour chaque groupe de vingt lignes.

Pour créer une visualisation des données sous forme de barres horizontales, vous pouvez utiliser deux approches d'implémentation différentes :

Incorporez une image dotée de valeurs de marge droite calculées de façon dynamique (voir figure 21). L'ajustement de la marge droite d'une image statique crée un effet de graphique à barres, qui résulte de l'étirement dynamique de l'image.

Incorporez un graphique à barres doté d'une valeur maximale calculée pour l'axe des Y (voir figure 23).

Les deux approches sont implémentées côte à côte dans l'exemple de rapport TableInlineCharts.

Figure 21. Graphique horizontal comparatif simulé par une image incorporée et une marge dynamique

Pour implémenter les visualisations horizontales basées sur des images incorporées

Concevez une image incorporée qui sera utilisée pour la visualisation « en barres ».

Une simple image dégradée fait généralement l'affaire. Ajoutez l'image comme une image incorporée au rapport.

Ajoutez un tableau au groupe et visualisez les données.

Concevez la structure de groupement du tableau. Vous pouvez placer la visualisation de l'image dans un en-tête de groupe ou dans la ligne de détails du tableau. Ajoutez une image incorporée dans une nouvelle colonne du tableau. Sélectionnez l'image incorporée à l'étape 1 comme source de l'image.

Page 41: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Calculez la marge droite (ou gauche) de l'image.

Créez une expression pour la propriété de marge droite (ou gauche) de l'élément de rapport de l'image. L'expression divise la valeur numérique à visualiser par la valeur maximale. Multipliez ensuite la taille relative par la largeur de la colonne du tableau, comme défini à l'étape 2. Vous pouvez également envisager l'utilisation des fonctions Math.Min ou Math.Max pour restreindre la marge à une plage donnée, le cas échéant.

Dans l'exemple de rapport TableInlineChart, la colonne du tableau a une largeur de 5 centimètres. Pour le calcul de la marge, nous utilisons l'unité de mesure des points, à savoir 72 points par pouce (2,54 cm). Ainsi, en supposant que nous définissions la marge gauche sur 0 point, il y a une plage de 144 points pour l'option Marge droite. Le code suivant configure la marge.

=144 * (1.0 - Fields!UnitsInStock.Value / Max(Fields!UnitsInStock.Value, "DataSet1")) & "pt"

Figure 22. Calcul dynamique de la taille de la marge droite de l'image

Définissez la propriété de dimensionnement des images sur Ajuster.

La marge définie lors de l'étape précédente détermine l'espace disponible nécessaire pour étirer l'image, générant ainsi l'effet de visualisation « en barres ».

L'approche de l'image incorporée présente un inconvénient : l'image peut s'étirer si vous utilisez des polices ou de fines lignes dans l'image. L'utilisation d'un graphique pour la visualisation en ligne (figure 23) apporte davantage de maîtrise sur la visualisation et offre souvent de meilleurs résultats.

Page 42: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Figure 23. Graphique horizontal comparatif basé sur un graphique incorporé dans l'en-tête de groupe du tableau

Pour utiliser un graphique pour la visualisation horizontale

Ajoutez un tableau pour regrouper les données.

Concevez la structure de groupement du tableau. N'oubliez pas que les graphiques peuvent être uniquement placés dans l'en-tête ou le pied de page du tableau ou dans l'en-tête ou le pied de page du groupe.

Ajoutez une nouvelle colonne au tableau et placez le graphique dans un en-tête de groupe.

Pour optimiser la zone de traçage du graphique pour la visualisation « en barres », appliquez les paramètres de propriétés du graphique ci-dessous.

Paramètres généraux : définissez sur « graphique à barres », désactivez la légende.

Données : Liez le graphique au même dataset que le tableau parent ; ajoutez une valeur de point de données basée sur la valeur à visualiser.

Axe des X : Désactivez les étiquettes des axes, désactivez les quadrillages, définissez les graduations sur Aucune.

Axe des Y : Désactivez les étiquettes des axes, définissez les graduations sur Aucune, définissez le maximum sur la valeur maximale du tableau la contenant ou du dataset. Ces actions sont nécessaires pour obtenir des tailles de barres correctes ; sinon, chaque instance de graphique ajusterait automatiquement l'échelle de l'axe des Y en fonction des valeurs de données pour ce groupe précis.

Affinez la visualisation du graphique (facultatif).

Essayez des paramètres de style de zone de traçage du graphique, des principaux quadrillages de l'axe des Y, des effets 3D ou des paramètres de couleurs dynamiques pour affiner davantage la visualisation du graphique horizontal.

Extensibilité du graphique et création manuelle de graphiques

Page 43: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Ce livre blanc fournit des informations sur la mise au point des paramètres graphiques et l'extension des capacités graphiques existantes avec des expressions et des fonctions de code personnalisé. En outre, il existe des approches supplémentaires pour intégrer des fonctionnalités graphiques plus avancées dans Reporting Services :

Intégrer des images graphiques générées par des assemblys personnalisés. Implémenter l'extensibilité graphique sur la base de la nouvelle fonction d'élément de

rapport personnalisé de Reporting Services 2005. Utiliser des composants complémentaires Reporting Services 2005 tiers, qui proposent

des fonctionnalités graphiques avancées. Ils sont basés sur la fonction d'élément de rapport personnalisé.

Pour intégrer des images générés par des assemblys personnalisés

Concevez et implémentez un assembly personnalisé pour générer des images.

L'assembly personnalisé doit récupérer seul les données, prendre en charge le regroupement/tri des données et générer l'image graphique.

Remarque   L'assembly personnalisé doit renvoyer l'image sous forme d'octet[]. Il ne peut pas la renvoyer sous forme de System.Drawing.Image. Souvent, vous pouvez convertir un objet System.Drawing.Image avec un code similaire à celui qui suit.

System.IO.MemoryStream renderedImage = new MemoryStream(); myChart.Save(renderedImage); renderedImage.Position = 0; return renderedImage.ToArray();

Ajoutez une image au rapport.

Définissez le type d'image sur Base de données. Si l'image générée est un bitmap au format d'image PNG, définissez la propriété type MIME de l'image sur « image/png ». Pour la propriété de valeur de l'image, utilisez une expression comme celle qui suit.

=MyCustomAssembly.GenerateChart()

Affichez le rapport en mode Aperçu du Générateur de rapports pour vérifier que le rapport fonctionne correctement.

Remarque   Dans une configuration par défaut, les assemblys personnalisés s'exécutent en FullTrust, dans l'Aperçu du Générateur de rapports. Ainsi, les opérations nécessitant certaines autorisations de sécurité d'accès au code (comme l'entrée/la sortie de fichier, la fourniture d'accès aux données, etc.) bénéficient automatiquement de ces autorisations dans FullTrust.

Déployez l'assembly personnalisé sur un serveur de rapports.

Page 44: Tirez Le Meilleur Parti Des Graphiques de SQL Server Reporting Services

Assurez-vous que la configuration de la stratégie de sécurité du serveur de rapports octroie les autorisations nécessaires à votre assembly personnalisé lors de l'exécution ; dans le cas contraire, l'image n'est pas générée. Pour plus d'informations, consultez Compréhension de la sécurité d'accès au code dans Reporting Services de SQL Server 2005 Books Online.

Comparaison entre les graphiques basés sur un CustomReportItem et les assemblys personnalisés

L'utilisation de la fonction d'élément de rapport personnalisé par rapport à l'approche d'assembly personnalisé est avantageuse à plus d'un titre. Tout d'abord, vous pouvez créer votre composant de prise en charge à la conception, qui s'intègre directement dans le Générateur de rapports. Ensuite, lors de l'exécution, vous pouvez profiter du moteur de traitement de Reporting Services pour récupérer les données et appliquer le groupement/le tri et les filtres. Le contrôle d'exécution CustomReportItem accède aux données traitées et génère une image de graphique avec une image interactive et les actions associées.

Lisez et étudiez attentivement la documentation et les exemples avant de créer votre CustomReportItem. Vous trouverez des informations complémentaires sur les sites suivants :

Exemple d'élément de rapport personnalisé dans SQL   Server   2005 Books Online Informations sur les éléments de rapport personnalisés dans le journal Web des piratages

malveillants de Reporting Services de Chris Hays sur MSDN.

Haut de page

Conclusion

Ce livre blanc propose des astuces et des conseils sur les fonctionnalités de création de graphiques de Reporting Services qui n'ont pas encore été traitées dans les manuels, d'autres articles, les documents ou les présentations. Il traite également de la manière et des modalités d'utilisation de certaines options de fonctionnalité.

Le livre blanc présente et explique de manière approfondie un ensemble d'exemples de rapport montrant comment mieux exploiter les graphiques intégrés de Reporting Services lorsque vous utilisez des scénarios définis. Il décrit par exemple l'ajout d'une analyse de Pareto ou le calcul des moyennes mobiles.

Enfin, le livre aborde brièvement l'extensibilité des Reporting Services, que vous pouvez utiliser pour intégrer les fonctionnalités externes (de création de graphique) dans vos rapports.

À propos de l'auteur

Robert M. Bruckner est ingénieur développement logiciel avec le groupe Business Intelligence de Microsoft SQL Server. Le moteur de traitement des données et des rapports de SQL Server Reporting Services constitue sa spécialité.