Partager via


Code personnalisé dans les expressions d’un rapport paginé de Power BI Report Builder

S’APPLIQUE À : Générateur de rapports Power BI Power BI Desktop

Vous pouvez ajouter un code personnalisé incorporé dans un rapport. L'incorporation de code convient dans le cas de constantes personnalisées, de fonctions complexes ou de fonctions utilisées plusieurs fois dans un même rapport. Le code personnalisé peut inclure de nouvelles constantes personnalisées, variables, fonctions ou sous-routines. Vous pouvez inclure des références en lecture seule à des collections intégrées, telles que la collection de paramètres. Cependant, les fonctions personnalisées ne peuvent pas recevoir des ensembles de valeurs de données de rapport : les agrégations personnalisées ne sont notamment pas prises en charge.

Remarque

Les assemblys personnalisés ne sont pas pris en charge dans des rapports paginés sur Power BI. Tenez compte de la conversion de la logique de l'assembly personnalisé en code incorporé. Pour obtenir des exemples d'alternatives à prendre en compte, vérifiez les alternatives d'assembly.

Important

Pour les calculs pour lesquels le temps est important qui sont évalués une fois au moment de l'exécution et qui doivent conserver la même valeur pendant le traitement du rapport, voyez s'il convient d'utiliser une variable de rapport ou une variable de groupe. Si vous souhaitez obtenir plus d’informations, consultez Références aux collections de variables de rapport et de groupe (Power BI Report Builder).

Inclure des références aux fonctions couramment utilisées

Utilisez la boîte de dialogue Expression pour consulter une liste classée par catégorie de fonctions courantes intégrées au Générateur de rapports. Lorsque vous développez Fonctions communes et sélectionnez une catégorie, le volet Élément affiche la liste des fonctions que vous incluez dans une expression. Les fonctions courantes incluent des classes provenant des espaces de noms Math et Convert .NET Framework ainsi que des fonctions de la bibliothèque d’exécutables Visual Basic. Pour plus de commodité, vous pouvez consulter les fonctions le plus communément utilisées dans la boîte de dialogue Expression , où elles sont répertoriées par catégorie : Texte, Date et heure, Math, Inspection, Flux de programme, Agrégat, Financier, Conversion et Divers. Les fonctions moins souvent utilisées n'apparaissent pas dans la liste, mais peuvent cependant être utilisées dans une expression.

Pour utiliser une fonction intégrée, double-cliquez sur son nom dans le volet Élément. Une description de la fonction s'affiche dans le volet Description et un exemple de l'appel de la fonction apparaît dans le volet d'exemple. Dans le volet du code, quand vous tapez le nom de la fonction suivi d’une parenthèse ouvrante ( , l’aide d’IntelliSense affiche chaque syntaxe valide pour l’appel de la fonction. Par exemple, pour calculer la valeur maximale pour un champ nommé Quantity dans une table, ajoutez l'expression simple =Max( au volet du code, puis utilisez les balises actives pour consulter toutes les syntaxes valides possibles pour l'appel de la fonction. Pour compléter cet exemple, tapez =Max(Fields!Quantity.Value).

Pour plus d’informations sur chaque fonction, consultez Math, Convertet Membres de la bibliothèque runtime Visual Basic sur MSDN.

Inclure des références aux fonctions moins couramment utilisées

Pour inclure une référence à d’autres espaces de noms CLR moins couramment utilisés, vous devez utiliser une référence complète, par exemple StringBuilder. IntelliSense n'est pas pris en charge dans le volet du code de la boîte de dialogue Expression pour ces fonctions moins couramment utilisées.

Pour plus d'informations, consultez Membres de la bibliothèque runtime Visual Basic sur MSDN.

Inclure du code incorporé

Pour ajouter du code incorporé à un rapport, utilisez l'onglet Code de la boîte de dialogue Propriétés du rapport . Le bloc de code que vous créez peut contenir plusieurs méthodes. Les méthodes du code incorporé doivent être écrites en Microsoft Visual Basic et doivent être basées sur des instances. Le processeur de rapports ajoute automatiquement des références pour les espaces de noms System.Convert et System.Math.

Les méthodes du code incorporé sont disponibles par l'intermédiaire d'un membre Code globalement défini. Pour y accéder, vous devez faire référence au membre Code et au nom de la méthode. L’exemple ci-dessous appelle la méthode ToUSD, qui convertit la valeur du champ StandardCost en une valeur exprimée en dollars :

=Code.ToUSD(Fields!StandardCost.Value)

Pour faire référence à des collections intégrées dans votre code personnalisé, incluez une référence à l’objet Report intégré :

=Report.Parameters!Param1.Value

Les exemples ci-dessous indiquent comment définir des variables et des constantes personnalisées.

Public Const MyNote = "Authored by Bob"
Public Const NCopies As Int32 = 2
Public Dim  MyVersion As String = "123.456"
Public Dim MyDoubleVersion As Double = 123.456

Bien que les constantes personnalisées n’apparaissent pas dans la catégorie Constantes de la boîte de dialogue Expression (qui affiche uniquement les constantes intégrées), vous pouvez leur ajouter des références à partir de n’importe quelle expression, comme le montrent les exemples suivants. Dans une expression, une constante personnalisée est traitée comme une valeur de type Variant.

=Code.MyNote
=Code.NCopies
=Code.MyVersion
=Code.MyDoubleVersion

L’exemple suivant inclut la référence au code et l’implémentation de code de la fonction FixSpelling, qui substitue le texte "Bicycle" à toutes les occurrences du texte « Bike » dans le champ SubCategory .

=Code.FixSpelling(Fields!SubCategory.Value)

Le code suivant, quand il est incorporé dans un bloc de code de définition de rapport, affiche une implémentation de la méthode FixSpelling . Cet exemple indique comment utiliser une référence complète à la classe Microsoft .NET Framework StringBuilder.

Public Function FixSpelling(ByVal s As String) As String
   Dim strBuilder As New System.Text.StringBuilder(s)
   If s.Contains("Bike") Then
      strBuilder.Replace("Bike", "Bicycle")
      Return strBuilder.ToString()
      Else : Return s
   End If
End Function

Pour plus d’informations sur des collections d’objets intégrées, consultez Collections intégrées – Références à Globals et User dans un rapport paginé (Power BI Report Builder).

Inclure des références à des paramètres de code

Vous pouvez référencer la collection de paramètres globale par le biais de code personnalisé dans un bloc de code de la définition de rapport. La collection de paramètres est en lecture seule et ne possède aucun itérateur public. Vous ne pouvez pas utiliser de construction Visual Basic For Each pour parcourir la collection. Vous devez connaître le nom du paramètre défini dans la définition de rapport pour pouvoir ensuite le référencer dans votre code. Cependant, vous pouvez effectuer une itération dans toutes les valeurs d’un paramètre à valeurs multiples.

Le tableau suivant présente des exemples du référencement de la collection Parameters intégrée à partir du code personnalisé :

Transmission de l'intégralité de la collection globale de paramètres au code personnalisé.

Cette fonction retourne la valeur d'un paramètre de rapport spécifique MyParameter.

Référence dans une expression =Code.DisplayAParameterValue(Parameters)

Définition de code personnalisé

Public Function DisplayAParameterValue(ByVal parameters as Parameters) as Object
Return parameters("MyParameter").Value
End Function

Transmission d'un seul paramètre au code personnalisé.

Référence dans une expression =Code.ShowParametersValues(Parameters!DayOfTheWeek)

Cet exemple retourne la valeur du paramètre transmis. Si le paramètre est un paramètre à valeurs multiples, la chaîne de retour est une concaténation de toutes les valeurs.

Définition de code personnalisé

Public Function ShowParameterValues(ByVal parameter as Parameter)
 as String
   Dim s as String
   If parameter.IsMultiValue then
      s = "Multivalue: "
      For i as integer = 0 to parameter.Count-1
         s = s + CStr(parameter.Value(i)) + " "
      Next
   Else
      s = "Single value: " + CStr(parameter.Value)
   End If
   Return s
End Function

Étapes suivantes