Dela via


Uttrycksexempel i Power BI Report Builder

GÄLLER FÖR: Power BI Report Builder Power BI Desktop

Uttryck används ofta i sidnumrerade Rapporter i Power BI Report Builder för att styra innehåll och rapportutseende. Uttryck skrivs i Microsoft Visual Basic och kan använda inbyggda funktioner, anpassad kod, rapport- och gruppvariabler och användardefinierade variabler. Uttryck börjar med ett likhetstecken (=).

Den här artikeln innehåller exempel på uttryck som kan användas för vanliga uppgifter i en rapport.

  • Visual Basic-funktioner: Exempel på funktioner för datum, sträng, konvertering och villkorsstyrd Visual Basic.

  • Rapportfunktioner: Exempel på aggregeringar och andra inbyggda rapportfunktioner.

  • Utseende på rapportdata: Exempel på hur du ändrar utseendet på en rapport.

  • Egenskaper: Exempel för att ange egenskaper för rapportobjekt för att styra format eller synlighet.

  • Parametrar: Exempel för att använda parametrar i ett uttryck.

  • Anpassad kod: Exempel på inbäddad anpassad kod.

Mer information om enkla och komplexa uttryck, där du kan använda uttryck och vilka typer av referenser som du kan inkludera i ett uttryck finns i Uttryck i Power BI Report Builder.

Funktioner

Många uttryck i en rapport innehåller funktioner. Du kan formatera data, tillämpa logik och komma åt rapportmetadata med hjälp av dessa funktioner. Du kan skriva uttryck som använder funktioner från Microsoft Visual Basic-körningsbiblioteket och från xref:System.Convert namnrymderna och xref:System.Math . Du kan lägga till referenser till funktioner i anpassad kod. Du kan också använda klasser från Microsoft .NET Framework, inklusive xref:System.Text.RegularExpressions.

Visual Basic-funktioner

Du kan använda Visual Basic-funktioner för att ändra data som visas i textrutor eller som används för parametrar, egenskaper eller andra områden i rapporten. Det här avsnittet innehåller exempel som visar några av dessa funktioner. Mer information finns i Visual Basic-runtime-biblioteksmedlemmar på MSDN.

.NET Framework innehåller många anpassade formatalternativ, till exempel för specifika datumformat. Mer information finns i Formateringstyper.

Matematikfunktioner

  • Funktionen Round är användbar för att avrunda tal till närmaste heltal. Följande uttryck avrundar 1,3 till 1:

    =Round(1.3)  
    

    Du kan också skriva ett uttryck för att avrunda ett värde till en multipel som du anger, ungefär som MRound-funktionen i Excel. Multiplicera värdet med en faktor som skapar ett heltal, avrunda talet och dividera sedan med samma faktor. Om du till exempel vill avrunda 1,3 till närmaste multipel av 0,2, som är 1,4, använder du följande uttryck:

    =Round(1.3*5)/5  
    

Datumfunktioner

  • Funktionen Today innehåller det aktuella datumet. Det här uttrycket kan användas i en textruta för att visa datumet i rapporten eller i en parameter för att filtrera data baserat på det aktuella datumet.

    =Today()  
    
  • Använd funktionen DateInterval för att hämta en specifik del av ett datum. Här är några giltiga DateInterval-parametrar :

    • DateInterval.Second
    • DateInterval.Minute
    • DateInterval.Hour
    • DateInterval.Weekday
    • DateInterval.Day
    • DateInterval.DayOfYear
    • DateInterval.WeekOfYear
    • DateInterval.Month
    • DateInterval.Quarter
    • DateInterval.Year

    Det här uttrycket visar till exempel antalet veckor under det aktuella året för dagens datum:

    =DatePart(DateInterval.WeekOfYear, today()) 
    
  • Funktionen DateAdd är användbar för att tillhandahålla ett datumintervall baserat på en enda parameter. Följande uttryck innehåller ett datum som är sex månader efter datumet från en parameter med namnet StartDate.

    =DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)  
    
  • Funktionen År visar året för ett visst datum. Du kan gruppera datum tillsammans eller visa året som en etikett för en uppsättning datum. Det här uttrycket ger året för en viss grupp med försäljningsorderdatum. Funktionen Månad och andra funktioner kan också användas för att ändra datum. Mer information finns i Visual Basic-dokumentationen.

    =Year(Fields!OrderDate.Value)  
    
  • Du kan kombinera funktioner i ett uttryck för att anpassa formatet. Följande uttryck ändrar formatet för ett datum i formuläret month-day-year till month-week-week number. Ändra till exempel "12/18/2022" till "December vecka 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  
    

    När det används som ett beräknat fält i en datamängd kan du använda det här uttrycket i ett diagram för att aggregera värden per vecka inom varje månad.

  • Följande uttryck formaterar värdet SellStartDate som MMM-yyy. Fältet SellStartDate är en datetime-datatyp.

    =FORMAT(Fields!SellStartDate.Value, "MMM-yy")  
    
  • Följande uttryck formaterar värdet SellStartDate som dd/MM/åååå. Fältet SellStartDate är en datetime-datatyp.

    =FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")  
    
  • Funktionen CDate konverterar värdet till ett datum. Funktionen Now returnerar ett datumvärde som innehåller aktuellt datum och tid enligt systemet. DateDiff returnerar ett långt värde som anger antalet tidsintervall mellan två datumvärden .

    I följande exempel visas startdatumet för det aktuella året

    =DateAdd(DateInterval.Year,DateDiff(DateInterval.Year,CDate("01/01/1900"),Now()),CDate("01/01/1900"))  
    
  • I följande exempel visas startdatumet för föregående månad baserat på den aktuella månaden.

    =DateAdd(DateInterval.Month,DateDiff(DateInterval.Month,CDate("01/01/1900"),Now())-1,CDate("01/01/1900"))  
    
  • Följande uttryck genererar intervallåren mellan SellStartDate och LastReceiptDate. Dessa fält finns i två olika datauppsättningar, DataSet1 och DataSet2.

    =DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value, "DataSet2"))  
    
  • Funktionen DatePart returnerar ett heltalsvärde som innehåller den angivna komponenten i ett angivet datumvärde . Följande uttryck returnerar året för det första värdet för SellStartDate i DataSet1. Datamängdsomfånget anges eftersom det finns flera datauppsättningar i rapporten.

    =Datepart("yyyy", First(Fields!SellStartDate.Value, "DataSet1"))  
    
    
  • Funktionen DateSerial returnerar ett datumvärde som representerar ett angivet år, en månad och en dag, med tidsinformationen inställd på midnatt. I följande exempel visas slutdatumet för föregående månad, baserat på den aktuella månaden.

    =DateSerial(Year(Now()), Month(Now()), "1").AddDays(-1)  
    
  • Följande uttryck visar olika datum baserat på ett datumparametervärde som valts av användaren.

Exempelbeskrivning Exempel
Igår =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-1)
För två dagar sedan =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-2)
För en månad sedan =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-1,Day(Parameters!TodaysDate.Value))
För två månader sedan =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-2,Day(Parameters!TodaysDate.Value))
För ett år sedan =DateSerial(Year(Parameters!TodaysDate.Value)-1,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value))
För två år sedan =DateSerial(Year(Parameters!TodaysDate.Value)-2,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value))

Strängfunktioner

  • Kombinera fler än ett fält med hjälp av sammanlänkningsoperatorer och Visual Basic-konstanter. Följande uttryck returnerar två fält, var och en på en separat rad i samma textruta:

    =Fields!FirstName.Value & vbCrLf & Fields!LastName.Value   
    
  • Formatera datum och tal i en sträng med funktionen Format . Följande uttryck visar värden för parametrarna StartDate och EndDate i långt datumformat:

    =Format(Parameters!StartDate.Value, "D") & " through " &  Format(Parameters!EndDate.Value, "D")    
    

    Om textrutan endast innehåller ett datum eller tal bör du använda textrutans formateringsegenskap för att använda formatering i stället för funktionen Format i textrutan.

  • Funktionerna Right, Len och InStr är användbara för att returnera en delsträng, till exempel genom att trimma domänens\användarnamn till enbart användarnamnet. Följande uttryck returnerar delen av strängen till höger om ett omvänt snedstreck (\) från en parameter med namnet Användare:

    =Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))  
    

    Följande uttryck resulterar i samma värde som det föregående, med hjälp av medlemmar i .NET Framework-klassen xref:System.String i stället för Visual Basic-funktioner:

    =Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)  
    
  • Visa de valda värdena från en parameter med flera värden. I följande exempel används funktionen Join för att sammanfoga de valda värdena för parametern MySelection till en enda sträng som kan anges som ett uttryck för värdet för en textruta i ett rapportobjekt:

    = Join(Parameters!MySelection.Value)  
    

    Följande exempel gör samma sak som i föregående exempel och visar en textsträng före listan med markerade värden.

    ="Report for " & JOIN(Parameters!MySelection.Value, " & ")  
    
    
  • Regex-funktionerna från .NET Framework xref:System.Text.RegularExpressions är användbara för att ändra formatet för befintliga strängar, till exempel formatering av ett telefonnummer. I följande uttryck används funktionen Ersätt för att ändra formatet för ett tiosiffrigt telefonnummer i ett fält från "nnn-nnn-nnnn" till "(nnn) nnn-nnnn":

    =System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")  
    

    Kommentar

    Kontrollera att värdet för Fields!Telefon. Värdet har inga extra blanksteg och är av typen xref:System.String.

Sökning

  • Genom att ange ett nyckelfält kan du använda uppslagsfunktionen för att hämta ett värde från en datauppsättning för en en-till-en-relation, till exempel ett nyckel/värde-par. Följande uttryck visar produktnamnet från en datauppsättning ("Produkt"), med tanke på den produktidentifierare som ska matchas på:

    =Lookup(Fields!PID.Value, Fields!ProductID.Value, Fields.ProductName.Value, "Product")  
    

UppslagSet

  • Genom att ange ett nyckelfält kan du använda funktionen LookupSet för att hämta en uppsättning värden från en datauppsättning för en en-till-många-relation. En person kan till exempel ha flera telefonnummer. I följande exempel antar du att datauppsättningen Telefon List innehåller en personidentifierare och ett telefonnummer på varje rad. LookupSet returnerar en matris med värden. Följande uttryck kombinerar returvärdena i en enda sträng och visar listan över telefonnummer för den person som anges av ContactID:

    =Join(LookupSet(Fields!ContactID.Value, Fields!PersonID.Value, Fields!PhoneNumber.Value, "PhoneList"),",")  
    

Konverteringsfunktioner

Du kan använda Visual Basic-funktioner för att konvertera ett fält från en datatyp till en annan datatyp. Konverteringsfunktioner kan användas för att konvertera standarddatatypen för ett fält till den datatyp som behövs för beräkningar eller för att kombinera text.

  • Följande uttryck konverterar konstanten 500 för att skriva Decimal för att jämföra den med datatypen Transact-SQL-pengar i fältet Värde för ett filteruttryck.

    =CDec(500)  
    
  • Följande uttryck visar antalet värden som valts för multivalueparametern MySelection.

    =CStr(Parameters!MySelection.Count)  
    

Beslutsfunktioner

  • Funktionen IIF returnerar ett av två värden beroende på om uttrycket är sant eller inte. Följande uttryck använder IIF-funktionen för att returnera ett booleskt värde av True om värdet för LineTotal överskrider 100. Annars returneras False:

    =IIF(Fields!LineTotal.Value > 100, True, False)  
    
  • Använd flera IIF-funktioner (kallas även "kapslade IIF:er") för att returnera ett av tre värden beroende på värdet för PctComplete. Följande uttryck kan placeras i fyllningsfärgen i en textruta för att ändra bakgrundsfärgen beroende på värdet i textrutan.

    =IIF(Fields!PctComplete.Value >= 10, "Green", IIF(Fields!PctComplete.Value >= 1, "Blue", "Red"))  
    

    Värden som är större än eller lika med 10 visas med en grön bakgrund, mellan 1 och 9 visas med en blå bakgrund och mindre än 1 skärm med röd bakgrund.

  • Ett annat sätt att få samma funktioner använder funktionen Switch . Switch-funktionen är användbar när det finns tre eller fler villkor att testa. Funktionen Switch returnerar värdet som är associerat med det första uttrycket i en serie som utvärderas till sant:

    =Switch(Fields!PctComplete.Value >= 10, "Green", Fields!PctComplete.Value >= 1, "Blue", Fields!PctComplete.Value = 1, "Yellow", Fields!PctComplete.Value <= 0, "Red")  
    

    Värden som är större än eller lika med 10 visas med en grön bakgrund, mellan 1 och 9 visas med en blå bakgrund, lika med 1 skärm med gul bakgrund och 0 eller mindre skärm med röd bakgrund.

  • Testa värdet för fältet ImportantDate och returnera "Red" om det är mer än en vecka gammalt och "Blå" annars. Det här uttrycket kan användas för att styra egenskapen Color för en textruta i ett rapportobjekt:

    =IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")  
    
  • Testa värdet för fältet Telefon Number och returnera "Inget värde" om det är null (Ingenting i Visual Basic), annars returnerar du telefonnumrets värde. Det här uttrycket kan användas för att styra värdet för en textruta i ett rapportobjekt.

    =IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)  
    
  • Testa värdet för fältet Avdelning och returnera antingen ett underrapportnamn eller ett null (Ingenting i Visual Basic). Det här uttrycket kan användas för underrapporter för villkorsstyrd visning av detaljerad information.

    =IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)  
    
  • Testa om ett fältvärde är null. Det här uttrycket kan användas för att styra egenskapen Dold för ett bildrapportobjekt. I följande exempel visas den bild som anges av fältet LargePhoto endast om värdet för fältet inte är null.

    =IIF(IsNothing(Fields!LargePhoto.Value),True,False)  
    
  • Funktionen MonthName returnerar ett strängvärde som innehåller namnet på den angivna månaden. I följande exempel visas NA i fältet Månad när fältet innehåller värdet 0.

    IIF(Fields!Month.Value=0,"NA",MonthName(IIF(Fields!Month.Value=0,1,Fields!Month.Value)))  
    
    

Rapportfunktioner

I ett uttryck kan du lägga till en referens till ytterligare rapportfunktioner som manipulerar data i en rapport. Det här avsnittet innehåller exempel på två av dessa funktioner.

Sum

  • Funktionen Sum kan summera värdena i en grupp eller dataregion. Den här funktionen kan vara användbar i sidhuvud eller sidfot för en grupp. Följande uttryck visar summan av data i gruppen Order eller dataregionen:

    =Sum(Fields!LineTotal.Value, "Order")  
    
  • Du kan också använda funktionen Sum för villkorsstyrda aggregeringsberäkningar. Om en datauppsättning till exempel har ett fält med namnet Tillstånd med möjliga värden Inte startad, Startad, Slutförd, beräknar följande uttryck, när det placeras i en grupprubrik, den sammanlagda summan för endast värdet Slutfört:

    =Sum(IIF(Fields!State.Value = "Finished", 1, 0))  
    

Radnummer

  • Funktionen RowNumber visar radnumret för varje instans av textrutan där uttrycket visas när den används i en textruta i en dataregion. Den här funktionen kan vara användbar för att numrera rader i en tabell. Det kan också vara användbart för mer komplexa uppgifter, till exempel att tillhandahålla sidbrytningar baserat på antalet rader. Mer information finns i Sidbrytningar i den här artikeln.

    Omfånget som du anger för RowNumber-kontroller när omnumreringen börjar. Nyckelordet Ingenting anger att funktionen börjar räkna på den första raden i den yttersta dataregionen. Om du vill börja räkna i kapslade dataregioner använder du namnet på dataregionen. Om du vill börja räkna inom en grupp använder du namnet på gruppen.

    =RowNumber(Nothing)  
    

Utseende på rapportdata

Du kan använda uttryck för att ändra hur data visas i en rapport. Du kan till exempel visa värdena för två fält i en enda textruta, visa information om rapporten eller påverka hur sidbrytningar infogas i rapporten.

Sidhuvuden och sidfötter

När du utformar en rapport kan du visa namnet på rapporten och sidnumret i rapportsidfoten. För att göra detta kan du använda följande uttryck:

  • Följande uttryck innehåller namnet på rapporten och den tid då den kördes. Den kan placeras i en textruta i rapportens sidfot eller i rapportens brödtext. Tiden formateras med formateringssträngen .NET Framework för kort datum:

    =Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")  
    
  • Följande uttryck, som placeras i en textruta i sidfoten för en rapport, innehåller sidnummer och totalt antal sidor i rapporten:

    =Globals.PageNumber & " of " & Globals.TotalPages  
    

I följande exempel beskrivs hur du visar de första och sista värdena från en sida i sidhuvudet, ungefär som i en kataloglista. Exemplet förutsätter en dataregion som innehåller en textruta med namnet LastName.

  • Följande uttryck, som placeras i en textruta till vänster i sidhuvudet, ger det första värdet för textrutan LastName på sidan:

    =First(ReportItems("LastName").Value)  
    
  • Följande uttryck, som placeras i en textruta till höger i sidhuvudet, innehåller det sista värdet för textrutan LastName på sidan:

    =Last(ReportItems("LastName").Value)  
    

I följande exempel beskrivs hur du visar en sidsumma. Exemplet förutsätter en dataregion som innehåller en textruta med namnet Cost.

  • Följande uttryck, som placeras i sidhuvudet eller sidfoten, innehåller summan av värdena i textrutan Kostnad för sidan:

    =Sum(ReportItems("Cost").Value)  
    

Kommentar

Du kan bara referera till ett rapportobjekt per uttryck i sidhuvud eller sidfot. Du kan också referera till textrutans namn, men inte det faktiska datauttrycket i textrutan, i sidhuvud- och sidfotsuttryck.

Sidbrytningar

I vissa rapporter kan du placera en sidbrytning i slutet av ett angivet antal rader i stället för, eller utöver, på grupper eller rapportobjekt. Skapa en grupp som innehåller de grupper eller detaljposter som du vill använda, lägg till en sidbrytning i gruppen och lägg sedan till ett grupputtryck i gruppen med ett angivet antal rader.

  • Följande uttryck, när det placeras i grupputtrycket, tilldelar ett tal till varje uppsättning med 25 rader. När en sidbrytning har definierats för gruppen resulterar det här uttrycket i en sidbrytning var 25:e rad.

    =Ceiling(RowNumber(Nothing)/25)  
    

    Om du vill att användaren ska kunna ange ett värde för antalet rader per sida skapar du en parameter med namnet RowsPerPage och baserar grupputtrycket på parametern enligt följande uttryck:

    =Ceiling(RowNumber(Nothing)/Parameters!RowsPerPage.Value)  
    

Egenskaper

Uttryck används inte bara för att visa data i textrutor. De kan också användas för att ändra hur egenskaper tillämpas på rapportobjekt. Du kan ändra formatinformation för ett rapportobjekt eller ändra dess synlighet.

Formatera

  • Följande uttryck, när det används i egenskapen Color i en textruta, ändrar textens färg beroende på värdet för fältet Vinst :

    =Iif(Fields!Profit.Value < 0, "Red", "Black")  
    

    Du kan också använda Visual Basic-objektvariabeln Me. Den här variabeln är ett annat sätt att referera till värdet för en textruta.

    =Iif(Me.Value < 0, "Red", "Black")

  • Följande uttryck, när det används i egenskapen BackgroundColor för ett rapportobjekt i en dataregion, växlar bakgrundsfärgen för varje rad mellan ljusgrönt och vitt:

    =Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")  
    

    Om du använder ett uttryck för ett angivet omfång kan du behöva ange datauppsättningen för den aggregerade funktionen:

    =Iif(RowNumber("Employees") Mod 2, "PaleGreen", "White")  
    

Kommentar

Tillgängliga färger kommer från .NET Framework KnownColor-uppräkningen.

Diagramfärger

Om du vill ange färger för ett formdiagram kan du använda anpassad kod för att styra ordningen som färger mappas till datapunktsvärden. Detta hjälper dig att använda konsekventa färger för flera diagram som har samma kategorigrupper.

Synlighet

Du kan visa och dölja objekt i en rapport med hjälp av synlighetsegenskaperna för rapportobjektet. I en dataregion, till exempel en tabell, kan du först dölja detaljrader baserat på värdet i ett uttryck.

  • Följande uttryck, när det används för inledande synlighet av detaljrader i en grupp, visar informationsrader för all försäljning som överstiger 90 procent i fältet PctQuota :

    =IIF(Fields!PctQuota.Value>.9, False, True)  
    
  • Följande uttryck, när det anges i egenskapen Dold i en tabell, visar tabellen endast om den har fler än 12 rader:

    =IIF(CountRows()>12,false,true)  
    
  • Följande uttryck, när det anges i egenskapen Dold för en kolumn, visar kolumnen endast om fältet finns i rapportdatauppsättningen efter att data hämtats från datakällan:

    =IIF(Fields!Column_1.IsMissing, true, false)  
    

Du kan anpassa URL:er med hjälp av rapportdata och även villkorligt styra om URL:er läggs till som en åtgärd för en textruta.

  • Följande uttryck, när det används som en åtgärd i en textruta, genererar en anpassad URL som anger datauppsättningsfältet EmployeeID som en URL-parameter.

    ="https://adventure-works/MyInfo?ID=" & Fields!EmployeeID.Value  
    
  • Följande uttryck styr villkorligt om du vill lägga till en URL i en textruta. Det här uttrycket beror på en parameter med namnet IncludeURLs som gör att en användare kan bestämma om aktiva URL:er ska inkluderas i en rapport. Det här uttrycket anges som en åtgärd i en textruta. Genom att ange parametern till False och sedan visa rapporten kan du exportera rapporten till Microsoft Excel utan hyperlänkar.

    =IIF(Parameters!IncludeURLs.Value,"https://adventure-works.com/productcatalog",Nothing)  
    

Kommentar

Sidnumrerade Power BI-rapporter stöder inte användning av JavaScript i ett Go To URL-uttryck .

Rapportdata

Uttryck kan användas för att ändra de data som används i rapporten. Du kan referera till parametrar och annan rapportinformation. Du kan till och med ändra frågan som används för att hämta data för rapporten.

Parametrar

Du kan använda uttryck i en parameter för att variera standardvärdet för parametern. Du kan till exempel använda en parameter för att filtrera data till en viss användare baserat på användar-ID:t som används för att köra rapporten.

  • Följande uttryck, när det används som standardvärde för en parameter, samlar in användar-ID för den person som kör rapporten:

    =User!UserID  
    
  • Om du vill referera till en parameter i en frågeparameter, filteruttryck, textruta eller något annat område i rapporten använder du den globala samlingen Parametrar . I det här exemplet förutsätts att parametern heter Department:

    =Parameters!Department.Value  
    
  • Parametrar kan skapas i en rapport men anges till dolda. När rapporten körs på rapportservern visas inte parametern i verktygsfältet och rapportläsaren kan inte ändra standardvärdet. Du kan använda en dold parameter inställd på ett standardvärde för en anpassad konstant. Du kan använda det här värdet i valfritt uttryck, inklusive ett fältuttryck. Följande uttryck identifierar det fält som anges av standardparametervärdet för parametern ParameterField:

    =Fields(Parameters!ParameterField.Value).Value  
    

Anpassad kod

Du kan använda anpassad kod inbäddad i en rapport.

Använda gruppvariabler för anpassad aggregering

Du kan initiera värdet för en gruppvariabel som är lokal för ett visst gruppomfång och sedan inkludera en referens till variabeln i uttryck. Ett sätt att använda en gruppvariabel med anpassad kod är att implementera en anpassad aggregering.

Utelämna null- eller nollvärden vid körning

Vissa värden i ett uttryck kan utvärderas till null eller odefinierat vid rapportbearbetning. Detta kan skapa körningsfel som resulterar i #Error visas i textrutan i stället för det utvärderade uttrycket. IIF-funktionen är särskilt känslig för det här beteendet eftersom varje del av IIF-instruktionen utvärderas (inklusive funktionsanrop) till skillnad från en If-Then-Else-instruktion innan den skickas till den rutin som testar sant eller falskt. =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) Instruktionen genererar #Error i den renderade rapporten om Fält! Sales.Value är INGENTING.

Undvik det här villkoret genom att använda någon av följande strategier:

  • Ange täljaren till 0 och nämnaren till 1 om värdet för fält B är 0 eller odefinierat. Annars anger du täljaren till värdet för fält A och nämnaren till värdet för fält B.

    =IIF(Field!B.Value=0, 0, Field!A.Value / IIF(Field!B.Value =0, 1, Field!B.Value))  
    
  • Använd en anpassad kodfunktion för att returnera värdet för uttrycket. I följande exempel returneras den procentuella skillnaden mellan ett aktuellt värde och ett tidigare värde. Detta kan användas för att beräkna skillnaden mellan två efterföljande värden och hanterar kantfallet för den första jämförelsen (när det inte finns något tidigare värde) och fall där antingen det tidigare värdet eller det aktuella värdet är null (Ingenting i 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  
    

    Följande uttryck visar hur du anropar den här anpassade koden från en textruta för containern ColumnGroupByYear (grupp eller dataregion).

    =Code.GetDeltaPercentage(Previous(Sum(Fields!Sales.Value),"ColumnGroupByYear"), Sum(Fields!Sales.Value))  
    

    Den här koden hjälper till att undvika körningsfel. Nu kan du använda ett uttryck som =IIF(Me.Value < 0, "red", "black") i egenskapen Color i textrutan för att villkorligt visa text baserat på om värdena är större än eller mindre än 0.

Nästa steg