Delen via


Aangepaste code in expressies in een gepagineerd rapport in Power BI Report Builder

VAN TOEPASSING OP: Power BI Report Builder Power BI Desktop

U kunt aangepaste code toevoegen die is ingesloten in een rapport. Gebruik ingesloten code voor aangepaste constanten, complexe functies of functies die meerdere keren in één rapport worden gebruikt. Aangepaste code kan nieuwe aangepaste constanten, variabelen, functies of subroutines bevatten. U kunt alleen-lezenverwijzingen opnemen naar ingebouwde verzamelingen, zoals de verzameling Parameters. U kunt echter geen sets rapportgegevenswaarden doorgeven aan aangepaste functies; met name worden aangepaste aggregaties niet ondersteund.

Notitie

Aangepaste assembly's worden niet ondersteund in gepagineerde rapporten in Power BI. Overweeg logica te converteren van aangepaste assembly naar ingesloten code. Bekijk assemblyalternatieven voor voorbeelden van alternatieven die u kunt overwegen.

Belangrijk

Voor tijdgevoelige berekeningen die eenmaal tijdens runtime worden geëvalueerd en die u tijdens de verwerking van rapporten dezelfde waarde wilt behouden, kunt u overwegen of u een rapportvariabele of groepsvariabele wilt gebruiken. Zie Rapport- en groepsreferenties voor verzamelingen van variabelen (Power BI Report Builder) voor meer informatie.

Verwijzingen naar veelgebruikte functies opnemen

Gebruik het dialoogvenster Expressie om een gecategoriseerde lijst met algemene functies weer te geven die zijn ingebouwd in Report Builder. Wanneer u Algemene functies uitvouwt en een categorie selecteert, wordt in het deelvenster Item de lijst met functies weergegeven die u in een expressie opneemt. De algemene functies omvatten klassen van .NET Framework Math en Convert naamruimten en Visual Basic-runtimebibliotheekfuncties. Voor het gemak kunt u de meest gebruikte functies weergeven in het dialoogvenster Expressie , waar ze worden weergegeven op categorie: Tekst, Datum en tijd, Wiskunde, Inspectie, Programmastroom, Aggregaat, Financieel, Conversie en Diversen. Minder veelgebruikte functies worden niet weergegeven in de lijst, maar kunnen nog steeds worden gebruikt in een expressie.

Als u een ingebouwde functie wilt gebruiken, dubbelklikt u op de functienaam in het deelvenster Item. Er wordt een beschrijving van de functie weergegeven in het deelvenster Beschrijving en een voorbeeld van de functieaanroep wordt weergegeven in het deelvenster Voorbeeld. Wanneer u in het codevenster de functienaam typt, gevolgd door een haakje links (geeft de IntelliSense-help elke geldige syntaxis voor de functie-aanroep weer. Als u bijvoorbeeld de maximumwaarde wilt berekenen voor een veld met de naam Quantity in een tabel, voegt u de eenvoudige expressie =Max( toe aan het deelvenster Code en gebruikt u de infolabels om alle mogelijke geldige syntaxis voor de functieaanroep weer te geven. Als u dit voorbeeld wilt voltooien, typt =Max(Fields!Quantity.Value)u .

Zie , Converten leden van de Visual Basic Runtime-bibliotheek op MSDN voor meer informatie over elke functieMath.

Verwijzingen naar minder gebruikte functies opnemen

Als u een verwijzing wilt opnemen naar andere minder gebruikte CLR-naamruimten, moet u bijvoorbeeld StringBuildereen volledig gekwalificeerde verwijzing gebruiken. IntelliSense wordt niet ondersteund in het codevenster van het dialoogvenster Expressie voor deze minder gebruikte functies.

Zie De leden van de Visual Basic Runtime-bibliotheek op MSDN voor meer informatie.

Ingesloten code opnemen

Als u ingesloten code aan een rapport wilt toevoegen, gebruikt u het tabblad Code van het dialoogvenster Rapporteigenschappen . Het codeblok dat u maakt, kan meerdere methoden bevatten. Methoden in ingesloten code moeten worden geschreven in Microsoft Visual Basic en moeten zijn gebaseerd op exemplaren. De rapportprocessor voegt automatisch verwijzingen toe voor de System.Convert- en System.Math-naamruimten.

Methoden in ingesloten code zijn beschikbaar via een wereldwijd gedefinieerd codelid . U opent deze door te verwijzen naar het codelid en de naam van de methode. In het volgende voorbeeld wordt de methode ToMESSAGE aangeroepen, waarmee de waarde in het StandardCost veld wordt geconverteerd naar een dollarwaarde:

=Code.ToUSD(Fields!StandardCost.Value)

Als u wilt verwijzen naar ingebouwde verzamelingen in uw aangepaste code, neemt u een verwijzing op naar het ingebouwde rapportobject :

=Report.Parameters!Param1.Value

In de volgende voorbeelden ziet u hoe u een aantal aangepaste constanten en variabelen definieert.

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

Hoewel aangepaste constanten niet worden weergegeven in de categorie Constanten in het dialoogvenster Expressie (waarin alleen ingebouwde constanten worden weergegeven), kunt u verwijzingen toevoegen vanuit elke expressie, zoals wordt weergegeven in de volgende voorbeelden. In een expressie wordt een aangepaste constante behandeld als een variant.

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

Het volgende voorbeeld bevat zowel de codeverwijzing als de code-implementatie van de functie FixSpelling, die de tekst "Bicycle" vervangt door alle exemplaren van de tekst 'Bike' in het SubCategory veld.

=Code.FixSpelling(Fields!SubCategory.Value)

De volgende code, wanneer deze is ingesloten in een codeblok voor rapportdefinities, toont een implementatie van de methode FixSpelling . In dit voorbeeld ziet u hoe u een volledig gekwalificeerde verwijzing gebruikt naar de Klasse 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

Zie Ingebouwde globals and Users References (Power BI Report Builder) voor meer informatie over ingebouwde objectverzamelingen.

Verwijzingen naar parameters opnemen vanuit code

U kunt verwijzen naar de verzameling globale parameters via aangepaste code in een codeblok van de rapportdefinitie. De verzameling parameters heeft het kenmerk Alleen-lezen en heeft geen openbare iterators. U kunt geen Visual Basic For Each-constructie gebruiken om de verzameling te doorlopen. U moet de naam weten van de parameter die is gedefinieerd in de rapportdefinitie voordat u ernaar kunt verwijzen in uw code. U kunt echter alle waarden van een parameter met meerdere waarden herhalen.

De volgende tabel bevat voorbeelden van verwijzingen naar de ingebouwde verzameling Parameters van aangepaste code:

Een volledige globale parameterverzameling doorgeven aan aangepaste code.

Deze functie retourneert de waarde van een specifieke rapportparameter MyParameter.

Verwijzing in expressie =Code.DisplayAParameterValue(Parameters)

Definitie van aangepaste code

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

Een afzonderlijke parameter doorgeven aan aangepaste code.

Verwijzing in expressie =Code.ShowParametersValues(Parameters!DayOfTheWeek)

In dit voorbeeld wordt de waarde geretourneerd van de parameter die is doorgegeven. Als de parameter een parameter met meerdere waarden is, is de retourtekenreeks een samenvoeging van alle waarden.

Definitie van aangepaste code

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

Volgende stappen