Udtrykseksempler i Power BI Report Builder
GÆLDER FOR: Power BI Report Builder Power BI Desktop
Udtryk bruges ofte i sideinddelte rapporter i Power BI Report Builder til at styre indhold og rapportudseende. Udtryk skrives i Microsoft Visual Basic og kan bruge indbyggede funktioner, brugerdefineret kode, rapport- og gruppevariabler og brugerdefinerede variabler. Udtryk begynder med et lighedstegn (=).
Denne artikel indeholder eksempler på udtryk, der kan bruges til almindelige opgaver i en rapport.
Visual Basic-funktioner: Eksempler på dato-, streng-, konverterings- og betingede Visual Basic-funktioner.
Rapportfunktioner: Eksempler på aggregeringer og andre indbyggede rapportfunktioner.
Udseendet af rapportdata: Eksempler på ændring af udseendet af en rapport.
Egenskaber: Eksempler på angivelse af egenskaber for rapportelement til at styre format eller synlighed.
Parametre: Eksempler på brug af parametre i et udtryk.
Brugerdefineret kode: Eksempler på integreret brugerdefineret kode.
Du kan få flere oplysninger om enkle og komplekse udtryk, hvor du kan bruge udtryk, og de referencetyper, du kan inkludere i et udtryk, under Udtryk i Power BI Report Builder.
Funktioner
Mange udtryk i en rapport indeholder funktioner. Du kan formatere data, anvende logik og få adgang til rapportmetadata ved hjælp af disse funktioner. Du kan skrive udtryk, der bruger funktioner fra Kørselsbiblioteket i Microsoft Visual Basic og fra xref:System.Convert
navneområderne og xref:System.Math
. Du kan føje referencer til funktioner i brugerdefineret kode. Du kan også bruge klasser fra Microsoft Microsoft .NET Framework, herunder xref:System.Text.RegularExpressions
.
Visual Basic-funktioner
Du kan bruge Visual Basic-funktioner til at manipulere de data, der vises i tekstfelter eller bruges til parametre, egenskaber eller andre områder i rapporten. Dette afsnit indeholder eksempler, der demonstrerer nogle af disse funktioner. Du kan få flere oplysninger under Medlemmer af Visual Basic-kørselsbiblioteket på MSDN.
Microsoft .NET Framework indeholder mange brugerdefinerede formatindstillinger, f.eks. for bestemte datoformater. Du kan få flere oplysninger under Formateringstyper.
Matematiske funktioner
Funktionen Round er nyttig til at afrunde tal til det nærmeste heltal. Følgende udtryk runder 1,3 til 1:
=Round(1.3)
Du kan også skrive et udtryk for at afrunde en værdi til et multiplum, som du angiver, på samme måde som funktionen MRound i Excel. Multiplicer værdien med en faktor, der opretter et heltal, afrunder tallet og derefter dividerer med den samme faktor. Hvis du f.eks. vil afrunde 1,3 til det nærmeste multiplum af 0,2, som er 1,4, skal du bruge følgende udtryk:
=Round(1.3*5)/5
Datofunktioner
Funktionen Today leverer den aktuelle dato. Dette udtryk kan bruges i et tekstfelt til at vise datoen i rapporten eller i en parameter til at filtrere data baseret på den aktuelle dato.
=Today()
Brug funktionen DateInterval til at trække en bestemt del af en dato ud. Her er nogle gyldige DateInterval-parametre :
- Datointerval.sekund
- Datointerval.minut
- Datointerval.time
- DateInterval.Weekday
- Datointerval.dag
- DateInterval.DayOfYear
- DateInterval.WeekOfYear
- Datointerval.måned
- DateInterval.Quarter
- Datointerval.år
Dette udtryk viser f.eks. ugenummeret i det aktuelle år for dags dato:
=DatePart(DateInterval.WeekOfYear, today())
Funktionen DateAdd er nyttig til at levere et datointerval baseret på en enkelt parameter. Følgende udtryk indeholder en dato, der er seks måneder efter datoen fra en parameter med navnet StartDate.
=DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
Funktionen Year viser året for en bestemt dato. Du kan gruppere datoer sammen eller vise året som et navn for et sæt datoer. Dette udtryk angiver året for en bestemt gruppe af salgsordredatoer. Funktionen Month og andre funktioner kan også bruges til at manipulere datoer. Du kan få flere oplysninger i dokumentationen til Visual Basic.
=Year(Fields!OrderDate.Value)
Du kan kombinere funktioner i et udtryk for at tilpasse formatet. Følgende udtryk ændrer formatet af en dato i formatet måned-dag-år til måned-uge-ugenummer. Du kan f.eks. ændre "18/12/2022" til "December Week 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 bruges som et beregnet felt i et datasæt, kan du bruge dette udtryk i et diagram til at aggregere værdier efter uge inden for hver måned.
Følgende udtryk formaterer værdien SellStartDate som MMM-yyy. Feltet SellStartDate er en datetime-datatype.
=FORMAT(Fields!SellStartDate.Value, "MMM-yy")
Følgende udtryk formaterer værdien SellStartDate som dd/MM/åååå. Feltet SellStartDate er en datetime-datatype.
=FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")
Funktionen CDate konverterer værdien til en dato. Funktionen Now returnerer en datoværdi, der indeholder den aktuelle dato og det aktuelle klokkeslæt i henhold til dit system. DateDiff returnerer en lang værdi, der angiver antallet af tidsintervaller mellem to datoværdier .
I følgende eksempel vises startdatoen for det aktuelle år
=DateAdd(DateInterval.Year,DateDiff(DateInterval.Year,CDate("01/01/1900"),Now()),CDate("01/01/1900"))
I følgende eksempel vises startdatoen for den forrige måned baseret på den aktuelle måned.
=DateAdd(DateInterval.Month,DateDiff(DateInterval.Month,CDate("01/01/1900"),Now())-1,CDate("01/01/1900"))
Følgende udtryk genererer intervalårene mellem SellStartDate og LastReceiptDate. Disse felter er i to forskellige datasæt, DataSet1 og DataSet2.
=DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value, "DataSet2"))
Funktionen DatePart returnerer en heltalsværdi , der indeholder den angivne komponent for en given datoværdi . Følgende udtryk returnerer året for den første værdi af SellStartDate i DataSet1. Datasætområdet er angivet, fordi der er flere datasæt i rapporten.
=Datepart("yyyy", First(Fields!SellStartDate.Value, "DataSet1"))
Funktionen DateSerial returnerer en datoværdi , der repræsenterer et angivet år, en angivet måned og en angivet dag, hvor klokkeslætsoplysningerne er angivet til midnat. I følgende eksempel vises slutdatoen for den foregående måned baseret på den aktuelle måned.
=DateSerial(Year(Now()), Month(Now()), "1").AddDays(-1)
Følgende udtryk viser forskellige datoer baseret på en datoparameterværdi, der er valgt af brugeren.
Eksempel på beskrivelse | Eksempel |
---|---|
I går | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-1) |
For to dage siden | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-2) |
For en måned siden | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-1,Day(Parameters!TodaysDate.Value)) |
For to måneder siden | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-2,Day(Parameters!TodaysDate.Value)) |
For et år siden | =DateSerial(Year(Parameters!TodaysDate.Value)-1,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)) |
For to år siden | =DateSerial(Year(Parameters!TodaysDate.Value)-2,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)) |
Strengfunktioner
Kombiner mere end ét felt ved hjælp af sammenkædningsoperatorer og Visual Basic-konstanter. Følgende udtryk returnerer to felter, hver på en separat linje i det samme tekstfelt:
=Fields!FirstName.Value & vbCrLf & Fields!LastName.Value
Formatér datoer og tal i en streng med funktionen Format . I følgende udtryk vises værdierne for parametrene StartDate og EndDate i langt datoformat:
=Format(Parameters!StartDate.Value, "D") & " through " & Format(Parameters!EndDate.Value, "D")
Hvis tekstfeltet kun indeholder en dato eller et tal, skal du bruge egenskaben Format for tekstfeltet til at anvende formatering i stedet for funktionen Format i tekstfeltet.
Funktionerne Right, Len og InStr er nyttige til returnering af en understreng, f.eks. trimning af DOMÆNE-brugernavn\ til kun brugernavnet. Følgende udtryk returnerer delen af strengen til højre for en omvendt skråstreg (\) fra en parameter med navnet User:
=Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))
Følgende udtryk resulterer i den samme værdi som den forrige ved hjælp af medlemmer af klassen Microsoft .NET Framework
xref:System.String
i stedet for Visual Basic-funktioner:=Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)
Vis de valgte værdier fra en parameter med flere værdier. I følgende eksempel bruges funktionen Join til at sammenkæde de valgte værdier for parameteren MySelection til en enkelt streng, der kan angives som et udtryk for værdien af et tekstfelt i et rapportelement:
= Join(Parameters!MySelection.Value)
Følgende eksempel gør det samme som i det forrige eksempel og viser en tekststreng før listen over valgte værdier.
="Report for " & JOIN(Parameters!MySelection.Value, " & ")
Funktionerne Regex fra Microsoft .NET Framework
xref:System.Text.RegularExpressions
er nyttige til at ændre formatet af eksisterende strenge, f.eks. formatering af et telefonnummer. I følgende udtryk bruges funktionen Replace til at ændre formatet af et ticifret telefonnummer i et felt fra "nnn-nnn-nnnnn" til "(nnn) nnn-nnnn":=System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")
Bemærk
Kontrollér, at værdien for Felter! Phone.Value har ingen ekstra mellemrum og er af typen
xref:System.String
.
Søg
Ved at angive et nøglefelt kan du bruge funktionen Lookup til at hente en værdi fra et datasæt for en en til en-relation, f.eks. et nøgleværdipar. I følgende udtryk vises produktnavnet fra et datasæt ("Produkt"), hvor produkt-id'et matcher:
=Lookup(Fields!PID.Value, Fields!ProductID.Value, Fields.ProductName.Value, "Product")
Opslagssæt
Ved at angive et nøglefelt kan du bruge funktionen LookupSet til at hente et værdisæt fra et datasæt for en en til mange-relation. En person kan f.eks. have flere telefonnumre. I følgende eksempel skal du antage, at datasættet PhoneList indeholder et person-id og et telefonnummer i hver række. LookupSet returnerer en matrix af værdier. Følgende udtryk kombinerer returværdierne i en enkelt streng og viser listen over telefonnumre for den person, der er angivet af ContactID:
=Join(LookupSet(Fields!ContactID.Value, Fields!PersonID.Value, Fields!PhoneNumber.Value, "PhoneList"),",")
Konverteringsfunktioner
Du kan bruge Visual Basic-funktioner til at konvertere et felt fra én datatype til en anden datatype. Konverteringsfunktioner kan bruges til at konvertere standarddatatypen for et felt til den datatype, der skal bruges til beregninger eller til at kombinere tekst.
Følgende udtryk konverterer konstanten 500 til typen Decimal for at sammenligne den med datatypen Transact-SQL penge i feltet Værdi for et filterudtryk.
=CDec(500)
I følgende udtryk vises antallet af værdier, der er valgt for parameteren MySelection med flere værdier.
=CStr(Parameters!MySelection.Count)
Beslutningsfunktioner
Funktionen IIF returnerer en af to værdier, afhængigt af om udtrykket er true eller ej. I følgende udtryk bruges funktionen IIF til at returnere en boolesk værdi af True , hvis værdien af LineTotal overstiger 100. Ellers returneres False:
=IIF(Fields!LineTotal.Value > 100, True, False)
Brug flere IIF-funktioner (også kendt som "indlejrede IIF'er ") til at returnere en af tre værdier, afhængigt af værdien af PctComplete. Følgende udtryk kan placeres i fyldfarven i et tekstfelt for at ændre baggrundsfarven, afhængigt af værdien i tekstfeltet.
=IIF(Fields!PctComplete.Value >= 10, "Green", IIF(Fields!PctComplete.Value >= 1, "Blue", "Red"))
Værdier, der er større end eller lig med 10, vises med en grøn baggrund, mellem 1 og 9 vises med en blå baggrund, og mindre end 1 vises med en rød baggrund.
En anden måde at få den samme funktionalitet på bruger funktionen Switch . Funktionen Switch er nyttig, når der er tre eller flere betingelser at teste. Funktionen Switch returnerer den værdi, der er knyttet til det første udtryk i en serie, der evalueres til sand:
=Switch(Fields!PctComplete.Value >= 10, "Green", Fields!PctComplete.Value >= 1, "Blue", Fields!PctComplete.Value = 1, "Yellow", Fields!PctComplete.Value <= 0, "Red")
Værdier, der er større end eller lig med 10, vises med en grøn baggrund, mellem 1 og 9 vises med en blå baggrund, lig med 1 skærm med en gul baggrund, og 0 eller mindre vises med en rød baggrund.
Test værdien af feltet ImportantDate , og returner "Red", hvis den er mere end en uge gammel, og "Blue" ellers. Dette udtryk kan bruges til at styre egenskaben Color for et tekstfelt i et rapportelement:
=IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")
Test værdien af feltet PhoneNumber, og returner "Ingen værdi", hvis den er null (Intet i Visual Basic). Ellers returneres telefonnummerværdien. Dette udtryk kan bruges til at styre værdien af et tekstfelt i et rapportelement.
=IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)
Test værdien af feltet Afdeling, og returner enten et underrapportnavn eller en null-værdi (Intet i Visual Basic). Dette udtryk kan bruges til betingede underrapporter for detaljeadgang.
=IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)
Test, om en feltværdi er null. Dette udtryk kan bruges til at styre egenskaben Hidden for et billedrapportelement. I følgende eksempel vises det billede, der er angivet i feltet LargePhoto , kun, hvis værdien af feltet ikke er null.
=IIF(IsNothing(Fields!LargePhoto.Value),True,False)
Funktionen MonthName returnerer en strengværdi, der indeholder navnet på den angivne måned. I følgende eksempel vises NA i feltet Måned, når feltet indeholder værdien 0.
IIF(Fields!Month.Value=0,"NA",MonthName(IIF(Fields!Month.Value=0,1,Fields!Month.Value)))
Rapportfunktioner
I et udtryk kan du føje en reference til yderligere rapportfunktioner, der manipulerer data i en rapport. Dette afsnit indeholder eksempler på to af disse funktioner.
Sum
Funktionen Sum kan sammentrække værdierne i en gruppe eller et dataområde. Denne funktion kan være nyttig i sidehovedet eller sidefoden i en gruppe. I følgende udtryk vises summen af data i gruppen Ordre eller dataområdet:
=Sum(Fields!LineTotal.Value, "Order")
Du kan også bruge funktionen Sum til betingede aggregeringsberegninger. Hvis et datasæt f.eks. har et felt med navnet State med de mulige værdier Not Started, Started, Finished, beregner følgende udtryk, når det placeres i en gruppeoverskrift, kun den samlede sum for værdien Afsluttet:
=Sum(IIF(Fields!State.Value = "Finished", 1, 0))
Rækkenummer
Når funktionen RowNumber bruges i et tekstfelt i et dataområde, vises rækkenummeret for hver forekomst af tekstfeltet, hvor udtrykket vises. Denne funktion kan være nyttig til at nummere rækker i en tabel. Det kan også være nyttigt til mere komplekse opgaver, f.eks. at angive sideskift baseret på antallet af rækker. Du kan få flere oplysninger under Sideskift i denne artikel.
Det område, du angiver for kontrolelementer af typen RowNumber , når omnummerering starter. Nøgleordet Intet angiver, at funktionen begynder at tælle ved den første række i det yderste dataområde. Hvis du vil begynde at tælle i indlejrede dataområder, skal du bruge navnet på dataområdet. Hvis du vil begynde at tælle i en gruppe, skal du bruge navnet på gruppen.
=RowNumber(Nothing)
Udseendet af rapportdata
Du kan bruge udtryk til at manipulere, hvordan data vises i en rapport. Du kan f.eks. få vist værdierne for to felter i et enkelt tekstfelt, få vist oplysninger om rapporten eller påvirke, hvordan sideskift indsættes i rapporten.
Sidehoveder og sidefødder
Når du designer en rapport, kan du få vist navnet på rapporten og sidetallet i rapportfoden. Det gør du ved at bruge følgende udtryk:
Følgende udtryk indeholder navnet på rapporten og den tid, den blev kørt. Den kan placeres i et tekstfelt i rapportfoden eller i rapportens brødtekst. Klokkeslættet er formateret med den Microsoft .NET Framework formateringsstreng til kort dato:
=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")
Følgende udtryk, der er placeret i et tekstfelt i sidefoden i en rapport, indeholder sidetal og sider i alt i rapporten:
=Globals.PageNumber & " of " & Globals.TotalPages
I følgende eksempler beskrives det, hvordan du får vist de første og sidste værdier fra en side i sidehovedet på samme måde som på en mappeliste. I eksemplet antages det, at der er et dataområde, der indeholder et tekstfelt med navnet Efternavn.
Følgende udtryk, der er placeret i et tekstfelt i venstre side af sidehovedet, indeholder den første værdi i tekstfeltet LastName på siden:
=First(ReportItems("LastName").Value)
Følgende udtryk, der er placeret i et tekstfelt i højre side af sidehovedet, indeholder den sidste værdi i tekstfeltet LastName på siden:
=Last(ReportItems("LastName").Value)
I følgende eksempel beskrives det, hvordan du får vist en sidetotal. I eksemplet antages det, at der er et dataområde, der indeholder et tekstfelt med navnet Omkostninger.
Følgende udtryk, der er placeret i sidehovedet eller sidefoden, indeholder summen af værdierne i tekstfeltet Omkostninger for siden:
=Sum(ReportItems("Cost").Value)
Bemærk
Du kan kun referere til ét rapportelement pr. udtryk i et sidehoved eller en sidefod. Du kan også referere til navnet på tekstfeltet, men ikke det faktiske dataudtryk i tekstfeltet, i udtryk for sidehoved og sidefod.
Sideskift
I nogle rapporter kan du placere et sideskift i slutningen af et angivet antal rækker i stedet for eller ud over grupper eller rapportelementer. Opret en gruppe, der indeholder de ønskede grupper eller detaljeposter, føj et sideskift til gruppen, og tilføj derefter et gruppeudtryk for at gruppere efter et angivet antal rækker.
Når følgende udtryk placeres i gruppeudtrykket, tildeles et tal til hvert sæt på 25 rækker. Når der er defineret et sideskift for gruppen, resulterer dette udtryk i et sideskift hver 25. række.
=Ceiling(RowNumber(Nothing)/25)
Hvis du vil tillade brugeren at angive en værdi for antallet af rækker pr. side, skal du oprette en parameter med navnet RowsPerPage og basere gruppeudtrykket på parameteren, som vist i følgende udtryk:
=Ceiling(RowNumber(Nothing)/Parameters!RowsPerPage.Value)
Egenskaber
Udtryk bruges ikke kun til at vise data i tekstfelter. De kan også bruges til at ændre, hvordan egenskaber anvendes på rapportelementer. Du kan ændre typografioplysninger for et rapportelement eller ændre dets synlighed.
Formatering
Når følgende udtryk bruges i egenskaben Color for et tekstfelt, ændres farven på teksten, afhængigt af værdien i feltet Profit :
=Iif(Fields!Profit.Value < 0, "Red", "Black")
Du kan også bruge objektvariablen Mig i Visual Basic. Denne variabel er en anden måde at referere til værdien af et tekstfelt på.
=Iif(Me.Value < 0, "Red", "Black")
Når følgende udtryk bruges i egenskaben BackgroundColor for et rapportelement i et dataområde, skiftes baggrundsfarven for hver række mellem lysegrøn og hvid:
=Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")
Hvis du bruger et udtryk for et angivet område, skal du muligvis angive datasættet for aggregeringsfunktionen:
=Iif(RowNumber("Employees") Mod 2, "PaleGreen", "White")
Bemærk
Tilgængelige farver kommer fra optællingen Microsoft .NET Framework KnownColor.
Diagramfarver
Hvis du vil angive farver for et figurdiagram, kan du bruge brugerdefineret kode til at styre den rækkefølge, farver knyttes til datapunktværdier. Dette hjælper dig med at bruge ensartede farver til flere diagrammer, der har de samme kategorigrupper.
Synlighed
Du kan få vist og skjule elementer i en rapport ved hjælp af egenskaberne for synlighed for rapportelementet. I et dataområde, f.eks. en tabel, kan du indledningsvist skjule detaljerækker baseret på værdien i et udtryk.
Når følgende udtryk bruges til indledende synlighed af detaljerækker i en gruppe, vises detaljerækkerne for alt salg, der overstiger 90 % i feltet PctQuota :
=IIF(Fields!PctQuota.Value>.9, False, True)
Når følgende udtryk er angivet i egenskaben Hidden for en tabel, vises tabellen kun, hvis den har mere end 12 rækker:
=IIF(CountRows()>12,false,true)
Når følgende udtryk er angivet i egenskaben Hidden for en kolonne, vises kolonnen kun, hvis feltet findes i rapportdatasættet, efter at dataene er hentet fra datakilden:
=IIF(Fields!Column_1.IsMissing, true, false)
URL-adresser
Du kan tilpasse URL-adresser ved hjælp af rapportdata og også betinget styre, om URL-adresser tilføjes som en handling for et tekstfelt.
Når følgende udtryk bruges som en handling i et tekstfelt, genereres der en brugerdefineret URL-adresse, der angiver datasætfeltet EmployeeID som en URL-parameter.
="https://adventure-works/MyInfo?ID=" & Fields!EmployeeID.Value
Følgende udtryk styrer betinget, om der skal tilføjes en URL-adresse i et tekstfelt. Dette udtryk afhænger af en parameter med navnet IncludeURLs , der gør det muligt for en bruger at beslutte, om aktive URL-adresser skal medtages i en rapport. Dette udtryk er angivet som en handling i et tekstfelt. Ved at angive parameteren til Falsk og derefter få vist rapporten kan du eksportere rapporten til Microsoft Excel uden links.
=IIF(Parameters!IncludeURLs.Value,"https://adventure-works.com/productcatalog",Nothing)
Bemærk
Sideinddelte rapporter i Power BI understøtter ikke brug af JavaScript i et Go To URL-udtryk .
Rapportdata
Udtryk kan bruges til at manipulere de data, der bruges i rapporten. Du kan referere til parametre og andre rapportoplysninger. Du kan endda ændre den forespørgsel, der bruges til at hente data til rapporten.
Parametre
Du kan bruge udtryk i en parameter til at variere standardværdien for parameteren. Du kan f.eks. bruge en parameter til at filtrere data til en bestemt bruger baseret på det bruger-id, der bruges til at køre rapporten.
Når følgende udtryk bruges som standardværdi for en parameter, indsamles bruger-id'et for den person, der kører rapporten:
=User!UserID
Hvis du vil referere til en parameter i en forespørgselsparameter, et filterudtryk, et tekstfelt eller et andet område i rapporten, skal du bruge den globale samling Parametre . I dette eksempel antages det, at parameteren hedder Afdeling:
=Parameters!Department.Value
Parametre kan oprettes i en rapport, men angives til skjult. Når rapporten kører på rapportserveren, vises parameteren ikke på værktøjslinjen, og rapportlæseren kan ikke ændre standardværdien. Du kan bruge en skjult parameter, der er angivet til en standardværdi, en brugerdefineret konstant. Du kan bruge denne værdi i et hvilket som helst udtryk, herunder et feltudtryk. Følgende udtryk identificerer det felt, der er angivet af standardparameterværdien for parameteren med navnet ParameterField:
=Fields(Parameters!ParameterField.Value).Value
Brugerdefineret kode
Du kan bruge brugerdefineret kode, der er integreret i en rapport.
Brug af gruppevariabler til brugerdefineret sammenlægning
Du kan initialisere værdien for en gruppevariabel, der er lokal for et bestemt gruppeområde, og derefter inkludere en reference til variablen i udtryk. En af de måder, du kan bruge en gruppevariabel med brugerdefineret kode på, er ved at implementere en brugerdefineret aggregering.
Undertrykker null- eller nulværdier på kørselstidspunktet
Nogle værdier i et udtryk kan evalueres til null eller udefineret på behandlingstidspunktet for rapporten. Dette kan medføre kørselsfejl, der medfører , at #Error vises i tekstfeltet i stedet for det evaluerede udtryk. Funktionen IIF er særligt følsom over for denne funktionsmåde, fordi hver del af IIF-sætningen i modsætning til en If-Then-Else-sætning evalueres (herunder funktionskald), før den overføres til den rutine, der tester for true eller false. Sætningen =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value)
genererer #Error i den gengivne rapport, hvis Felter! Sales.Value er INTET.
Hvis du vil undgå denne betingelse, skal du bruge en af følgende strategier:
Angiv tælleren til 0 og nævneren til 1, hvis værdien for felt B er 0 eller udefineret. Ellers skal du angive tælleren til værdien for felt A og nævneren til værdien for felt B.
=IIF(Field!B.Value=0, 0, Field!A.Value / IIF(Field!B.Value =0, 1, Field!B.Value))
Brug en brugerdefineret kodefunktion til at returnere værdien for udtrykket. I følgende eksempel returneres den procentvise forskel mellem en aktuel værdi og en tidligere værdi. Dette kan bruges til at beregne forskellen mellem to på hinanden følgende værdier, og den håndterer kantafstanden for den første sammenligning (når der ikke er nogen tidligere værdi) og tilfælde, hvor enten den forrige værdi eller den aktuelle værdi er null (Intet 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ølgende udtryk viser, hvordan du kalder denne brugerdefinerede kode fra et tekstfelt for objektbeholderen ColumnGroupByYear (gruppe eller dataområde).
=Code.GetDeltaPercentage(Previous(Sum(Fields!Sales.Value),"ColumnGroupByYear"), Sum(Fields!Sales.Value))
Denne kode hjælper med at undgå kørselsundtagelser. Du kan nu bruge et udtryk som
=IIF(Me.Value < 0, "red", "black")
i egenskaben Color for tekstfeltet til betinget visning af tekst baseret på, om værdierne er større end eller mindre end 0.