Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les expressions sont fréquemment utilisées dans les rapports pour contrôler le contenu et l’apparence des rapports. Les expressions sont écrites dans Microsoft Visual Basic et peuvent utiliser des fonctions intégrées du code personnalisé, des variables de rapport et de groupe et des variables définies par l’utilisateur. Les expressions commencent par un signe égal (=). Pour plus d’informations sur l’éditeur d’expressions et les types de références que vous pouvez inclure, voir Expressions utilisations dans les rapports (Générateur de rapports et SSRS) et Ajouter une expression (Générateur de rapports et SSRS).
Important
Lorsque rdL Sandboxing est activé, seuls certains types et membres peuvent être utilisés dans le texte d’expression au moment de la publication du rapport. Pour plus d’informations, consultez Activer et désactiver le bac à sable RDL.
Cette rubrique fournit des exemples d’expressions qui peuvent être utilisées pour les tâches courantes dans un rapport.
Fonctions Visual Basic Exemples de fonctions Visual Basic de date, de chaîne, de conversion et conditionnelles.
Fonctions de rapport Exemples d’agrégats et d’autres fonctions de rapport intégrées.
Apparence des données de rapport Exemples de modification de l’apparence d’un rapport.
Propriétés Exemples de définition des propriétés d’élément de rapport pour contrôler le format ou la visibilité.
Paramètres Exemples d’utilisation de paramètres dans une expression.
Code personnalisé Exemples de code personnalisé incorporé.
Pour obtenir des exemples d’expressions pour des utilisations spécifiques, consultez les rubriques suivantes :
Exemples d'expressions de groupe (Générateur de rapports et SSRS)
Exemples d'équations de filtre (Générateur de rapports et SSRS)
Filtres couramment utilisés (Générateur de rapports et SSRS)
Références à des collections de variables de rapport et de groupe (Générateur de rapports et SSRS)
Pour plus d’informations sur les expressions simples et complexes, où vous pouvez utiliser des expressions et les types de références que vous pouvez inclure dans une expression, consultez les rubriques sous Expressions (Générateur de rapports et SSRS). Pour plus d’informations sur le contexte dans lequel les expressions sont évaluées pour calculer des agrégats, consultez Étendue d’expression pour les totaux, agrégats et collections intégrées (Générateur de rapports et SSRS) .
Pour savoir comment écrire des expressions qui utilisent un grand nombre de fonctions et d’opérateurs également utilisés par des exemples d’expressions dans cette rubrique, mais dans le contexte de l’écriture d’un rapport, consultez Tutoriel : Présentation des expressions.
L’éditeur d’expressions inclut une vue hiérarchique des fonctions intégrées. Lorsque vous sélectionnez la fonction, un exemple de code s’affiche dans le volet Valeurs. Pour plus d’informations, consultez la boîte de dialogue Expression ou la boîte de dialogue Expression (Générateur de rapports) .
Fonctions
Dans un rapport, beaucoup d'expressions contiennent des fonctions. Vous pouvez mettre en forme des données, appliquer une logique et accéder aux métadonnées de rapport à l’aide de ces fonctions. Vous pouvez écrire des expressions qui utilisent des fonctions issues de la bibliothèque d’exécution Microsoft Visual Basic, ainsi que des espaces de noms Convert et Math. Vous pouvez ajouter des références à des fonctions issues d'autres assemblys ou du code personnalisé. Vous pouvez également utiliser des classes de Microsoft .NET Framework, notamment System.Text.RegularExpressions.
Fonctions Visual Basic
Vous pouvez utiliser des fonctions Visual Basic pour manipuler les données affichées dans des zones de texte ou utilisées pour les paramètres, les propriétés ou d’autres zones du rapport. Cette section fournit des exemples décrivant certaines de ces fonctions. Pour plus d'informations, consultez Membres de la bibliothèque runtime Visual Basic sur MSDN.
Le .NET Framework fournit de nombreuses options de format personnalisé, par exemple pour les formats de date spécifiques. Pour plus d’informations, consultez Types de mise en forme sur MSDN.
Fonctions mathématiques
- La
Roundfonction est utile pour arrondir les nombres à l’entier le plus proche. L’expression suivante arrondit une valeur 1.3 à 1 :
= Round(1.3)
Vous pouvez également écrire une expression pour arrondir une valeur à un multiple que vous spécifiez, similaire à la MRound fonction dans Excel. Multipliez la valeur par un facteur qui crée un entier, arrondissez le nombre, puis divisez par le même facteur. Par exemple, pour arrondir la valeur 1.3 au multiple le plus proche de .2 (1.4), utilisez l’expression suivante :
= Round(1.3*5)/5
Fonctions de date
- La
Todayfonction fournit la date actuelle. Cette expression peut être utilisée dans une zone de texte pour afficher la date du rapport ou dans un paramètre pour filtrer les données en fonction de la date actuelle.
=Today()
- La
DateAddfonction est utile pour fournir une plage de dates basée sur un paramètre unique. L’expression suivante fournit une date qui est de six mois après la date d’un paramètre nommé StartDate.
=DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
- La
Yearfonction affiche l’année pour une date particulière. Vous pouvez l’utiliser pour regrouper des dates ou pour afficher l’année sous forme d’étiquette pour un ensemble de dates. Cette expression affiche l'année pour un groupe donné de dates de commande client. LaMonthfonction et d’autres fonctions peuvent également être utilisées pour manipuler des dates. Pour plus d’informations, consultez la documentation Visual Basic.
=Year(Fields!OrderDate.Value)
- Vous pouvez combiner des fonctions dans une expression pour personnaliser le format. L'expression suivante modifie le format d'une date écrite sous la forme mois-jour-année en mois-semaine-numéro de semaine. Par exemple, 12/23/2009 à la semaine de décembre 3 :
=Format(Fields!MyDate.Value, "MMMM") & " Week " &
(Int(DateDiff("d", DateSerial(Year(Fields!MyDate.Value),
Month(Fields!MyDate.Value),1), Fields!FullDateAlternateKey.Value)/7)+1).ToString
Lorsque cette expression est utilisée comme champ calculé dans un dataset, vous pouvez vous en servir dans un graphique pour agréger les valeurs par semaine dans chaque mois.
- L’expression suivante met en forme la valeur SellStartDate en tant que MMM-YY. Le champ SellStartDate est un type de données datetime.
=FORMAT(Fields!SellStartDate.Value, "MMM-yy")
- L’expression suivante met en forme la valeur SellStartDate comme dd/MM/aaaa. Le champ SellStartDate est un type de données datetime.
=FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")
- La
CDatefonction convertit la valeur en date. LaNowfonction retourne une valeur de date contenant la date et l’heure actuelles en fonction de votre système.DateDiffretourne une valeur long spécifiant le nombre d’intervalles de temps entre deux valeurs Date.
L’exemple suivant affiche la date de début de l’année en cours
=DateAdd(DateInterval.Year,DateDiff(DateInterval.Year,CDate("01/01/1900"),Now()),CDate("01/01/1900"))
- L’exemple suivant affiche la date de début du mois précédent en fonction du mois en cours.
=DateAdd(DateInterval.Month,DateDiff(DateInterval.Month,CDate("01/01/1900"),Now())-1,CDate("01/01/1900"))
- L'expression suivante génère des années d'intervalle entre SellStartDate et LastReceiptDate. Ces champs sont compris dans deux datasets différents, DataSet1 et DataSet2. La fonction First (Générateur de rapports et SSRS), qui est une fonction d’agrégation, renvoie la première valeur de SellStartDate dans DataSet1 et la première valeur de LastReceiptDate dans DataSet2.
=DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value, "DataSet2"))
- La
DatePartfonction retourne une valeur Integer contenant le composant spécifié d’une valeur Date donnée. L’expression suivante retourne l’année pour la première valeur de SellStartDate dans DataSet1. L’étendue du jeu de données est spécifiée, car il existe plusieurs jeux de données dans le rapport.
=Datepart("yyyy", First(Fields!SellStartDate.Value, "DataSet1"))
- La
DateSerialfonction retourne une valeur Date représentant une année, un mois et un jour spécifiés, avec les informations d’heure définies sur minuit. L’exemple suivant affiche la date de fin du mois précédent, en fonction du mois en cours.
=DateSerial(Year(Now()), Month(Now()), "1").AddDays(-1)
- Les expressions suivantes affichent différentes dates en fonction d’une valeur de paramètre de date sélectionnée par l’utilisateur.
| Exemple de description | Exemple : |
|---|---|
| Hier | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-1) |
| Il y a deux jours | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-2) |
| Il y a un mois | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-1,Day(Parameters!TodaysDate.Value)) |
| Il y a deux mois | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-2,Day(Parameters!TodaysDate.Value)) |
| Il y a un an | =DateSerial(Year(Parameters!TodaysDate.Value)-1,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)) |
| Il y a deux ans | =DateSerial(Year(Parameters!TodaysDate.Value)-2,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)) |
Fonctions de chaîne
- Combiner plusieurs champs avec des opérateurs de concaténation et des constantes Visual Basic. L'expression suivante retourne deux champs, chacun sur une ligne séparée dans la même zone de texte :
=Fields!FirstName.Value & vbCrLf & Fields!LastName.Value
- Mettez en forme des dates et des nombres dans une chaîne avec la
Formatfonction. L'expression suivante affiche les valeurs des paramètres StartDate et EndDate dans un format de date longue :
=Format(Parameters!StartDate.Value, "D") & " through " & Format(Parameters!EndDate.Value, "D")
Si la zone de texte contient uniquement une date ou un nombre, vous devez utiliser la propriété Format de la zone de texte pour appliquer la mise en forme au lieu de la Format fonction dans la zone de texte.
- Les
Rightfonctions et les fonctionsLenInStrsont utiles pour renvoyer une sous-chaîne, par exemple, découper lenom d’utilisateurdu domaine\ uniquement sur le nom d’utilisateur. L’expression suivante retourne la partie de la chaîne à droite d’une barre oblique inverse (\) à partir d’un paramètre nommé User :
=Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))
L’expression suivante retourne la même valeur que la précédente, mais en utilisant des membres de la classe String du .NET Framework au lieu des fonctions Visual Basic :
=Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)
- Vous pouvez afficher les valeurs sélectionnées à partir d'un paramètre à valeurs multiples. L’exemple suivant utilise la
Joinfonction pour concaténer les valeurs sélectionnées du paramètre MySelection en une seule chaîne qui peut être définie comme expression pour la valeur d’une zone de texte dans un élément de rapport :
= Join(Parameters!MySelection.Value)
L’exemple suivant effectue la même opération que l’exemple ci-dessus, ainsi que l’affichage d’une chaîne de texte avant la liste des valeurs sélectionnées.
="Report for " & JOIN(Parameters!MySelection.Value, " & ")
- Les
Regexfonctions du .NET Framework System.Text.RegularExpressions sont utiles pour modifier le format des chaînes existantes, par exemple la mise en forme d’un numéro de téléphone. L’expression suivante utilise laReplacefonction pour modifier le format d’un numéro de téléphone à dix chiffres dans un champ de « nnn-nnn-nnnn » en « (nnn) nnn-nnnn » :
=System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")
Remarque
Vérifiez que la valeur de Fields!Phone.Value n’a pas d’espaces supplémentaires et est de type String.
Recherche
- En spécifiant un champ de clé, vous pouvez utiliser la
Lookupfonction pour récupérer une valeur d’un jeu de données pour une relation un-à-un, par exemple une paire clé-valeur. L’expression suivante affiche le nom du produit à partir d'un jeu de données (« Produit »), en fonction de l’identificateur du produit pour lequel il doit correspondre.
=Lookup(Fields!PID.Value, Fields!ProductID.Value, Fields!ProductName.Value, "Product")
LookupSet
- En spécifiant un champ clé, vous pouvez utiliser la
LookupSetfonction pour récupérer un ensemble de valeurs à partir d’un jeu de données pour une relation un-à-plusieurs. Par exemple, une personne peut avoir plusieurs numéros de téléphone. Dans l'exemple suivant, supposons que le dataset PhoneList contient un identificateur de personne et un numéro de téléphone sur chaque ligne.LookupSetretourne un tableau de valeurs. L’expression suivante combine les valeurs de retour en une seule chaîne et affiche la liste des numéros de téléphone pour la personne spécifiée par ContactID :
=Join(LookupSet(Fields!ContactID.Value, Fields!PersonID.Value, Fields!PhoneNumber.Value, "PhoneList"),",")
Fonctions de conversion
Vous pouvez utiliser des fonctions Visual Basic pour convertir un champ d’un type de données en un autre type de données. Les fonctions de conversion peuvent être utilisées pour convertir le type de données par défaut d’un champ en type de données nécessaire pour les calculs ou pour combiner du texte.
- L’expression suivante convertit la constante 500 en type Decimal afin de la comparer à un type de données d’argent Transact-SQL dans le champ Valeur d’une expression de filtre.
=CDec(500)
- L’expression suivante affiche le nombre de valeurs sélectionnées pour le paramètre à valeurs multiples MySelection.
=CStr(Parameters!MySelection.Count)
Fonctions de décision
- La
Iiffonction retourne l’une des deux valeurs selon que l’expression est vraie ou non. L'expression suivante utilise la fonctionIifpour retourner une valeur booléenne deTruesi la valeur deLineTotaldépasse 100. Sinon, elle retourneFalse:
=IIF(Fields!LineTotal.Value > 100, True, False)
- Utilisez plusieurs
IIFfonctions (également appelées « iifs imbriquées ») pour retourner l’une des trois valeurs en fonction de la valeur dePctComplete. L’expression suivante peut être placée dans la couleur de remplissage d’une zone de texte pour modifier la couleur d’arrière-plan en fonction de la valeur de la zone de texte.
=IIF(Fields!PctComplete.Value >= 10, "Green", IIF(Fields!PctComplete.Value >= 1, "Blue", "Red"))
Les valeurs supérieures ou égales à 10 s’affichent avec un arrière-plan vert, entre 1 et 9 avec un arrière-plan bleu et moins de 1 affichage avec un arrière-plan rouge.
- Une autre façon d’obtenir la même fonctionnalité utilise la
Switchfonction. LaSwitchfonction est utile lorsque vous avez trois conditions ou plus à tester. LaSwitchfonction retourne la valeur associée à la première expression d’une série qui prend la valeur true :
=Switch(Fields!PctComplete.Value >= 10, "Green", Fields!PctComplete.Value >= 1, "Blue", Fields!PctComplete.Value = 1, "Yellow", Fields!PctComplete.Value <= 0, "Red",)
Les valeurs supérieures ou égales à 10 s’affichent avec un arrière-plan vert, entre 1 et 9 avec un arrière-plan bleu, égales à 1 avec un arrière-plan jaune et 0 ou moins avec un arrière-plan rouge.
- Testez la valeur du
ImportantDatechamp et retournez « Rouge » s’il a plus d’une semaine et « Bleu » sinon. Cette expression peut être utilisée pour contrôler la propriété Color d’une zone de texte dans un élément de rapport :
=IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")
- Testez la valeur du
PhoneNumberchamp et retournez « Aucune valeur » s’il s’agitnull(Nothingen Visual Basic) ; sinon, renvoyez la valeur du numéro de téléphone. Cette expression peut être utilisée pour contrôler la valeur d’une zone de texte dans un élément de rapport.
=IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)
- Testez la valeur du
Departmentchamp et retournez un nom de sous-rapport ou unnull(Nothingen Visual Basic). Cette expression peut être utilisée pour les sous-rapports d’extraction conditionnels.
=IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)
- Testez si une valeur de champ est Null. Cette expression peut être utilisée pour contrôler la
Hiddenpropriété d’un élément de rapport image. Dans l’exemple suivant, l’image spécifiée par le champ [LargePhoto] est affichée uniquement si la valeur du champ n’est pas null.
=IIF(IsNothing(Fields!LargePhoto.Value),True,False)
- La
MonthNamefonction retourne une valeur de chaîne contenant le nom du mois spécifié. L’exemple suivant affiche na dans le champ Mois lorsque le champ contient la valeur 0.
IIF(Fields!Month.Value=0,"NA",MonthName(IIF(Fields!Month.Value=0,1,Fields!Month.Value)))
Fonctions de rapport
Dans une expression, vous pouvez ajouter une référence à des fonctions de rapport supplémentaires qui manipulent des données dans un rapport. Cette section fournit des exemples pour deux de ces fonctions. Pour plus d’informations sur les fonctions de rapport et les exemples, consultez Informations de référence sur les fonctions d’agrégation (Générateur de rapports et SSRS)
Somme
- La
Sumfonction peut totalner les valeurs d’un groupe ou d’une région de données. Cette fonction peut être utile dans l'en-tête ou le pied de page d'un groupe. L'expression suivante affiche la somme des données dans la région de données ou le groupe Order :
=Sum(Fields!LineTotal.Value, "Order")
- Vous pouvez également utiliser la
Sumfonction pour les calculs d’agrégation conditionnel. Par exemple, si un jeu de données a un champ nommé État avec les valeurs possibles Not Started, Started, Finished, l'expression suivante, lorsqu'elle est placée dans un en-tête de groupe, calcule la somme d'agrégation uniquement pour la valeur Finished.
=Sum(IIF(Fields!State.Value = "Finished", 1, 0))
Numéro de ligne
- La
RowNumberfonction, lorsqu’elle est utilisée dans une zone de texte dans une région de données, affiche le numéro de ligne de chaque instance de la zone de texte dans laquelle l’expression apparaît. Cette fonction peut être utile pour numéroter les lignes dans un tableau. Elle peut également servir à l'accomplissement de tâches plus complexes, telles que l'insertion de sauts de page en fonction du nombre de lignes. Pour plus d’informations, consultez Sauts de page dans cette rubrique.
L'étendue que vous spécifiez pour RowNumber détermine quand la renumérotation commence. Le Nothing mot clé indique que la fonction commence à compter à la première ligne de la région de données la plus externe. Pour commencer à compter dans des régions de données imbriquées, utilisez le nom de la région de données. Pour commencer à compter dans un groupe, utilisez le nom du groupe.
=RowNumber(Nothing)
Apparence des données de rapport
Vous pouvez recourir à des expressions pour intervenir sur la façon dont les données apparaissent sur un rapport. Par exemple, vous pouvez afficher les valeurs de deux champs dans une seule zone de texte, afficher des informations sur le rapport ou modifier la façon dont les sauts de page sont insérés dans le rapport.
En-têtes et pieds de page
Lors de la conception d’un rapport, vous pouvez afficher le nom du rapport et du numéro de page dans le pied de page du rapport. Pour ce faire, vous pouvez utiliser les expressions suivantes :
- L'expression suivante fournit le nom du rapport ainsi que les date et heure de son exécution. Elle peut être placée dans une zone de texte du pied de page du rapport ou dans le corps du rapport. L’heure est mise en forme avec la chaîne de mise en forme du .NET Framework pour la date courte :
=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")
- L'expression ci-dessous, placée dans une zone de texte du pied de page d'un rapport, indique le numéro de la page actuelle ainsi que le nombre total de pages du rapport :
=Globals.PageNumber & " of " & Globals.TotalPages
Les exemples suivants décrivent comment afficher la première et la dernière valeur d'une page dans l'en-tête de la page, comme dans le contenu d'un annuaire. L’exemple suppose une région de données qui contient une zone de texte nommée LastName.
- L’expression suivante, placée dans une zone de texte située à gauche de l’en-tête de page, fournit la première valeur de la
LastNamezone de texte de la page :
=First(ReportItems("LastName").Value)
- L’expression suivante, placée dans une zone de texte située à droite de l’en-tête de page, fournit la dernière valeur de la
LastNamezone de texte de la page :
=Last(ReportItems("LastName").Value)
L'exemple suivant décrit comment afficher un total pour une page. L’exemple suppose une région de données qui contient une zone de texte nommée Cost.
- L’expression suivante, placée dans l’en-tête ou le pied de page, fournit la somme des valeurs dans la
Costzone de texte de la page :
=Sum(ReportItems("Cost").Value)
Remarque
Vous ne pouvez faire référence qu'à un seul élément de rapport par expression dans un en-tête ou un pied de page. Vous pouvez aussi faire référence au nom de la zone de texte, mais pas à l'expression de données elle-même, dans les expressions d'en-tête et de pied de page.
Sauts de page
Dans certains rapports, vous pouvez vouloir placer un saut de page à la fin d’un nombre spécifié de lignes, soit à la place de, soit en plus des groupes ou des éléments de rapport. Pour ce faire, créez un groupe qui contient les groupes ou les enregistrements détaillés souhaités, ajoutez un saut de page au groupe, puis ajoutez une expression de groupe pour grouper par un nombre spécifié de lignes.
- L'expression suivante, quand elle est placée dans l'expression de groupe, affecte un nombre à chaque ensemble de 25 lignes. Lorsqu’un saut de page est défini pour le groupe, cette expression génère un saut de page toutes les 25 lignes.
=Ceiling(RowNumber(Nothing)/25)
Pour permettre à l’utilisateur de définir une valeur pour le nombre de lignes par page, créez un paramètre nommé RowsPerPage et basez l’expression de groupe sur le paramètre, comme indiqué dans l’expression suivante :
=Ceiling(RowNumber(Nothing)/Parameters!RowsPerPage.Value)
Pour plus d’informations sur la définition des sauts de page pour un groupe, consultez Ajouter un saut de page (Générateur de rapports et SSRS).
Propriétés
Les expressions ne sont pas uniquement utilisées pour afficher des données dans des zones de texte. Elles peuvent également servir à modifier la manière dont les propriétés sont appliquées aux éléments de rapport. Vous pouvez modifier les informations de style d'un élément de rapport ou bien modifier sa visibilité.
Mise en forme
- L’expression suivante, lorsqu’elle est utilisée dans la propriété Color d’une zone de texte, modifie la couleur du texte en fonction de la valeur du
Profitchamp :
=Iif(Fields!Profit.Value < 0, "Red", "Black")
Vous pouvez aussi utiliser la variable d’objet Visual Basic Me. Cette variable constitue un autre moyen de faire référence à la valeur d'une zone de texte.
=Iif(Me.Value < 0, "Red", "Black")
- L’expression suivante, lorsqu’elle est utilisée dans la propriété BackgroundColor d’un élément de rapport dans une région de données, alterne la couleur d’arrière-plan de chaque ligne entre le vert pâle et le blanc :
=Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")
Si vous utilisez une expression pour une étendue spécifiée, vous devrez peut-être indiquer le jeu de données pour la fonction d’agrégation :
=Iif(RowNumber("Employees") Mod 2, "PaleGreen", "White")
Remarque
Les couleurs disponibles proviennent de l’énumération KnownColor du .NET Framework.
Couleurs du graphique
Pour spécifier des couleurs pour un graphique de formes, vous pouvez utiliser du code personnalisé pour contrôler l’ordre dans lequel les couleurs sont mappées aux valeurs de point de données. Cela vous permet d’utiliser des couleurs cohérentes pour plusieurs graphiques qui ont les mêmes groupes de catégories. Pour plus d’informations, consultez Spécification de couleurs cohérentes pour plusieurs graphes de formes (Générateur de rapports et SSRS).
Visibilité
Vous pouvez également afficher et masquer des éléments dans un rapport en utilisant les propriétés de visibilité de l'élément de rapport. Dans une région de données comme un tableau, vous pouvez initialement masquer les lignes de détails en fonction de la valeur d'une expression.
- L’expression suivante, lorsqu’elle est utilisée pour la visibilité initiale des lignes de détail dans un groupe, affiche les lignes de détail pour toutes les ventes dépassant 90 % dans le
PctQuotachamp :
=Iif(Fields!PctQuota.Value>.9, False, True)
- L’expression suivante, lorsqu’elle est définie dans la propriété Hidden d’une table, affiche la table uniquement si elle comporte plus de 12 lignes :
=IIF(CountRows()>12,false,true)
- L’expression suivante, lorsqu’elle est définie dans la
Hiddenpropriété d’une colonne, affiche la colonne uniquement si le champ existe dans le jeu de données du rapport une fois les données récupérées à partir de la source de données :
=IIF(Fields!Column_1.IsMissing, true, false)
URL
Vous pouvez personnaliser des URL à l'aide de données de rapport, mais aussi contrôler de manière conditionnelle si les URL sont ajoutées en tant qu'action pour une zone de texte.
- L’expression suivante, lorsqu’elle est utilisée comme action sur une zone de texte, génère une URL personnalisée qui spécifie le champ
EmployeeIDde jeu de données en tant que paramètre d’URL.
="http://adventure-works/MyInfo?ID=" & Fields!EmployeeID.Value
Pour plus d’informations, consultez Ajouter un lien hypertexte à une URL (Générateur de rapports et SSRS).
- L'expression ci-dessous contrôle de manière conditionnelle si une URL doit être ajoutée à une zone de texte. Cette expression dépend d’un paramètre nommé
IncludeURLsqui permet à un utilisateur de décider s’il faut inclure des URL actives dans un rapport. Cette expression est définie en tant qu'action pour une zone de texte. En définissant le paramètre sur False, puis en affichant le rapport, vous pouvez exporter le rapport Microsoft Excel sans lien hypertexte.
=IIF(Parameters!IncludeURLs.Value,"http://adventure-works.com/productcatalog",Nothing)
Données des rapports
Les expressions peuvent être utilisées pour manipuler les données utilisées dans les rapports. Vous pouvez faire référence à des paramètres et à d'autres informations de rapport. Vous pouvez même modifier la requête utilisée pour récupérer des données pour le rapport.
Paramètres
Vous pouvez utiliser des expressions dans un paramètre pour faire varier la valeur par défaut du paramètre. Par exemple, vous pouvez utiliser un paramètre pour filtrer les données d'un utilisateur en particulier en fonction de l'ID utilisateur utilisé pour exécuter le rapport.
- L'expression ci-dessous, lorsqu'elle est utilisée comme valeur par défaut pour un paramètre, collecte l'ID utilisateur de la personne exécutant le rapport :
=User!UserID
- Pour faire référence à un paramètre dans un paramètre de requête, une expression de filtre, une zone de texte ou une autre zone du rapport, utilisez la
Parameterscollection globale. Cet exemple suppose que le paramètre est appelé Department:
=Parameters!Department.Value
- Des paramètres peuvent être créés dans un rapport, mais définis comme étant masqués. Lorsque le rapport s’exécute sur le serveur de rapports, le paramètre n’apparaît pas dans la barre d’outils et le lecteur du rapport ne peut pas modifier la valeur par défaut. Vous pouvez utiliser un paramètre masqué auquel est affectée une valeur par défaut en tant que constante personnalisée. Vous pouvez utiliser cette valeur dans n'importe quelle expression, y compris une expression de champ. L'expression suivante identifie le champ spécifié par la valeur de paramètre par défaut pour le paramètre nommé ParameterField:
=Fields(Parameters!ParameterField.Value).Value
Code personnalisé
L'usage de code personnalisé au sein d'un rapport est possible. Le code personnalisé est incorporé dans un rapport ou stocké dans un assembly personnalisé utilisé dans le rapport. Pour plus d’informations sur le code personnalisé, consultez Custom Code and Assembly References in Expressions in Report Designer (SSRS) (Custom Code and Assembly References in Expressions in Report Designer).
Utilisation de variables de groupe pour l’agrégation personnalisée
Vous pouvez initialiser la valeur pour une variable de groupe qui est locale à une étendue de groupe particulière, puis inclure une référence à cette variable dans les expressions. L'une des façons d'utiliser une variable de groupe avec du code personnalisé consiste à implémenter un agrégat personnalisé. Pour plus d’informations, consultez Utilisation des variables de groupe dans Reporting Services 2008 pour l’agrégation personnalisée.
Pour plus d’informations sur les variables, consultez Références des collections de variables de rapport et de groupe (Générateur de rapports et SSRS).
Suppression de valeurs Null ou Zéro au moment de l’exécution
Certaines valeurs d'une expression peuvent prendre la valeur Null ou une valeur indéfinie au moment du traitement du rapport. Cela peut créer des erreurs d’exécution qui entraînent l’affichage #Error dans la zone de texte au lieu de l’expression évaluée. La IIF fonction est particulièrement sensible à ce comportement, car, contrairement à une instruction If-Then-Else, chaque partie de l’instruction IIF est évaluée (y compris les appels de fonction) avant d’être passée à la routine pour laquelle il teste true ou false. L’instruction =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) génère #Erreur dans le rapport généré si Fields!Sales.Value est RIEN.
Pour éviter de vous trouver dans cette situation, utilisez l'une des stratégies qui suivent :
- Définissez le numérateur sur 0 et le dénominateur sur 1 si la valeur du champ B est 0 ou non définie ; sinon, définissez le numérateur sur la valeur du champ A et le dénominateur sur la valeur du champ B.
=IIF(Field!B.Value=0, 0, Field!A.Value / IIF(Field!B.Value =0, 1, Field!B.Value))
- Utilisez une fonction de code personnalisé pour retourner la valeur de l'expression. L'exemple ci-dessous retourne la différence, exprimée en pourcentage, entre une valeur actuelle et une valeur précédente. Cela peut être utilisé pour calculer la différence entre deux valeurs successives et gère le cas de périphérie de la première comparaison (lorsqu’il n’existe aucune valeur précédente) et les cas où la valeur précédente ou la valeur actuelle est
null(Nothingen Visual Basic).
Public Function GetDeltaPercentage(ByVal PreviousValue, ByVal CurrentValue) As Object
If IsNothing(PreviousValue) OR IsNothing(CurrentValue) Then
Return Nothing
Else if PreviousValue = 0 OR CurrentValue = 0 Then
Return Nothing
Else
Return (CurrentValue - PreviousValue) / CurrentValue
End If
End Function
L’expression suivante montre comment appeler ce code personnalisé à partir d’une zone de texte, pour le conteneur « ColumnGroupByYear » (groupe ou région de données).
=Code.GetDeltaPercentage(Previous(Sum(Fields!Sales.Value),"ColumnGroupByYear"), Sum(Fields!Sales.Value))
Cela permet d’éviter les exceptions au moment de l’exécution. Vous pouvez maintenant utiliser une expression comme =IIF(Me.Value < 0, "red", "black") dans la Color propriété de la zone de texte pour afficher le texte d’affichage de manière conditionnelle selon que les valeurs sont supérieures ou inférieures à 0.
Voir aussi
- Exemples d'équations de filtre (Générateur de rapports et SSRS)
- Exemples d'expressions de groupe (Générateur de rapports et SSRS)
- Utilisation d'expressions dans les rapports (Générateur de rapport et SSRS)
- Expressions (Générateur de rapports et SSRS)
- Filtres couramment utilisés (Générateur de rapports et SSRS)