Del via


Uttrykkseksempler i Power BI Report Builder

GJELDER FOR: Power BI Report Builder Power BI Desktop

Uttrykk brukes ofte i paginerte rapporter i Power BI Report Builder for å kontrollere innhold og rapportutseende. Uttrykk er skrevet i Microsoft Visual Basic, og kan bruke innebygde funksjoner, egendefinert kode, rapport- og gruppevariabler og brukerdefinerte variabler. Uttrykk begynner med et likhetstegn (=).

Denne artikkelen inneholder eksempler på uttrykk som kan brukes til vanlige oppgaver i en rapport.

Hvis du vil ha mer informasjon om enkle og komplekse uttrykk, hvor du kan bruke uttrykk og referansetypene du kan inkludere i et uttrykk, kan du se Uttrykk i Power BI Report Builder.

Funksjoner

Mange uttrykk i en rapport inneholder funksjoner. Du kan formatere data, bruke logikk og få tilgang til rapportmetadata ved hjelp av disse funksjonene. Du kan skrive uttrykk som bruker funksjoner fra Microsoft Visual Basic-kjøretidsbiblioteket, og fra og xref:System.Math navneområdenexref:System.Convert. Du kan legge til referanser til funksjoner i egendefinert kode. Du kan også bruke klasser fra Microsoft .NET Framework, inkludert xref:System.Text.RegularExpressions.

Visual Basic-funksjoner

Du kan bruke Visual Basic-funksjoner til å manipulere dataene som vises i tekstbokser eller brukes for parametere, egenskaper eller andre områder i rapporten. Denne delen inneholder eksempler som viser noen av disse funksjonene. Hvis du vil ha mer informasjon, kan du se Medlemmer av Visual Basic-kjøretidsbiblioteket på MSDN.

.NET Framework inneholder mange egendefinerte formatalternativer, for eksempel for bestemte datoformater. Hvis du vil ha mer informasjon, kan du se Formateringstyper.

Matematiske funksjoner

  • Avrund-funksjonen er nyttig for å runde av tall til nærmeste heltall. Følgende uttrykk runder av 1,3 til 1:

    =Round(1.3)  
    

    Du kan også skrive et uttrykk for å runde av en verdi til et multiplum som du angir, på samme måte som MRound-funksjonen i Excel. Multipliser verdien med en faktor som oppretter et heltall, runde av tallet og deretter dividere med samme faktor. Hvis du for eksempel vil runde 1,3 til nærmeste multiplum av 0,2, som er 1,4, bruker du følgende uttrykk:

    =Round(1.3*5)/5  
    

Datofunksjoner

  • I dag-funksjonen inneholder gjeldende dato. Dette uttrykket kan brukes i en tekstboks til å vise datoen i rapporten, eller i en parameter for å filtrere data basert på gjeldende dato.

    =Today()  
    
  • Bruk DateInterval-funksjonen til å trekke ut en bestemt del av en dato. Her er noen gyldige DateInterval-parametere :

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

    Dette uttrykket viser for eksempel antall uker i gjeldende år for dagens dato:

    =DatePart(DateInterval.WeekOfYear, today()) 
    
  • DateAdd-funksjonen er nyttig for å angi et datoområde basert på én enkelt parameter. Følgende uttrykk gir en dato som er seks måneder etter datoen fra en parameter med navnet StartDato.

    =DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)  
    
  • År-funksjonen viser året for en bestemt dato. Du kan gruppere datoer sammen eller vise året som en etikett for et sett med datoer. Dette uttrykket gir året for en gitt gruppe salgsordredatoer. Måned-funksjonen og andre funksjoner kan også brukes til å manipulere datoer. Hvis du vil ha mer informasjon, kan du se dokumentasjonen for Visual Basic.

    =Year(Fields!OrderDate.Value)  
    
  • Du kan kombinere funksjoner i et uttrykk for å tilpasse formatet. Følgende uttrykk endrer formatet for en dato i skjemaet måned-dag-år til måned-uke-ukenummer. Endre for eksempel «18.12.2022» til «Uke 3» desember:

    =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 brukes som et beregnet felt i et datasett, kan du bruke dette uttrykket i et diagram til å aggregere verdier etter uke i hver måned.

  • Følgende uttrykk formaterer SellStartDate-verdien som MMM-yy. SellStartDate-feltet er en datetime-datatype.

    =FORMAT(Fields!SellStartDate.Value, "MMM-yy")  
    
  • Følgende uttrykk formaterer SellStartDate-verdien som dd/MM/ååååå. SellStartDate-feltet er en datetime-datatype.

    =FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")  
    
  • CDate-funksjonen konverterer verdien til en dato. Nå-funksjonen returnerer en datoverdi som inneholder gjeldende dato og klokkeslett i henhold til systemet. DateDiff returnerer en lang verdi som angir antall tidsintervaller mellom to datoverdier .

    Eksemplet nedenfor viser startdatoen for gjeldende år

    =DateAdd(DateInterval.Year,DateDiff(DateInterval.Year,CDate("01/01/1900"),Now()),CDate("01/01/1900"))  
    
  • Eksemplet nedenfor viser startdatoen for forrige måned basert på gjeldende måned.

    =DateAdd(DateInterval.Month,DateDiff(DateInterval.Month,CDate("01/01/1900"),Now())-1,CDate("01/01/1900"))  
    
  • Følgende uttrykk genererer intervallårene mellom SellStartDate og LastReceiptDate. Disse feltene er i to forskjellige datasett, DataSet1 og DataSet2.

    =DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value, "DataSet2"))  
    
  • DatePart-funksjonen returnerer en heltallsverdi som inneholder den angitte komponenten for en gitt datoverdi. Følgende uttrykk returnerer året for den første verdien av SellStartDate i DataSet1. Datasettområdet er angitt fordi det er flere datasett i rapporten.

    =Datepart("yyyy", First(Fields!SellStartDate.Value, "DataSet1"))  
    
    
  • DateSerial-funksjonen returnerer en datoverdi som representerer et angitt år, måned og dag, med klokkeslettinformasjonen satt til midnatt. Følgende eksempel viser sluttdatoen for forrige måned, basert på gjeldende måned.

    =DateSerial(Year(Now()), Month(Now()), "1").AddDays(-1)  
    
  • Følgende uttrykk viser ulike datoer basert på en datoparameterverdi valgt av brukeren.

Eksempelbeskrivelse Eksempel
I går =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-1)
For to dager siden =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-2)
For én 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 ett å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))

Strengfunksjoner

  • Kombiner mer enn ett felt ved hjelp av sammenkoblingsoperatorer og Visual Basic-konstanter. Følgende uttrykk returnerer to felt, hver på en egen linje i samme tekstboks:

    =Fields!FirstName.Value & vbCrLf & Fields!LastName.Value   
    
  • Formater datoer og tall i en streng med Format-funksjonen . Følgende uttrykk viser verdier for startdato - og sluttdatoparameterne i langt datoformat:

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

    Hvis tekstboksen bare inneholder en dato eller et tall, bør du bruke formategenskapen for tekstboksen til å bruke formatering i stedet for Format-funksjonen i tekstboksen.

  • Funksjonene Høyre, Lengde og InStr er nyttige for å returnere en delstreng, for eksempel trimming av DOMENE-brukernavn\til bare brukernavnet. Følgende uttrykk returnerer delen av strengen til høyre for et omvendt skråstrek (\) tegn fra en parameter med navnet Bruker:

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

    Følgende uttrykk resulterer i samme verdi som den forrige, ved hjelp av medlemmer av .NET Framework-klassen xref:System.String i stedet for Visual Basic-funksjoner:

    =Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)  
    
  • Vis de valgte verdiene fra en parameter med flere verdier. Følgende eksempel bruker Sammenføyning-funksjonen til å kjede sammen de valgte verdiene i parameteren MySelection til én enkelt streng som kan angis som et uttrykk for verdien til en tekstboks i et rapportelement:

    = Join(Parameters!MySelection.Value)  
    

    Følgende eksempel gjør det samme som det forrige eksemplet, og viser en tekststreng før listen over valgte verdier.

    ="Report for " & JOIN(Parameters!MySelection.Value, " & ")  
    
    
  • Regex-funksjonene fra .NET Framework xref:System.Text.RegularExpressions er nyttige for å endre formatet på eksisterende strenger, for eksempel formatering av et telefonnummer. Følgende uttrykk bruker Erstatt-funksjonen til å endre formatet på et tisifret telefonnummer i et felt fra "nnn-nnn-nnnn" til "(nnn) nnn-nnnn":

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

    Merk

    Kontroller at verdien for Felter! Phone.Value har ingen ekstra mellomrom og er av typen xref:System.String.

Lookup

  • Ved å angi et nøkkelfelt kan du bruke oppslagsfunksjonen til å hente en verdi fra et datasett for en én-til-én-relasjon, for eksempel et nøkkelverdipar. Følgende uttrykk viser produktnavnet fra et datasett («Produkt»), gitt produktidentifikatoren som samsvarer med:

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

Oppslagssett

  • Ved å angi et nøkkelfelt kan du bruke lookupSet-funksjonen til å hente et sett med verdier fra et datasett for en én-til-mange-relasjon. En person kan for eksempel ha flere telefonnumre. I eksemplet nedenfor kan du anta at datasettet PhoneList inneholder en personidentifikator og et telefonnummer i hver rad. Oppslagssett returnerer en matrise med verdier. Følgende uttrykk kombinerer returverdiene til én enkelt streng og viser listen over telefonnumre for personen som er angitt av ContactID:

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

Konverteringsfunksjoner

Du kan bruke Visual Basic-funksjoner til å konvertere et felt fra én datatype til en annen datatype. Konverteringsfunksjoner kan brukes til å konvertere standard datatype for et felt til datatypen som kreves for beregninger eller for å kombinere tekst.

  • Følgende uttrykk konverterer konstanten 500 til å skrive inn Desimal for å sammenligne den med datatypen Transact-SQL-penger i Verdi-feltet for et filteruttrykk.

    =CDec(500)  
    
  • Følgende uttrykk viser antall verdier som er valgt for parameteren MySelection med flere verdier.

    =CStr(Parameters!MySelection.Count)  
    

Beslutningsfunksjoner

  • IIF-funksjonen returnerer én av to verdier avhengig av om uttrykket er sant eller ikke. Følgende uttrykk bruker IIF-funksjonen til å returnere en boolsk verdi av Sann hvis verdien for LineTotal overskrider 100. Ellers returneres Usann:

    =IIF(Fields!LineTotal.Value > 100, True, False)  
    
  • Bruk flere IIF-funksjoner (også kalt "nestede IIF-er") til å returnere én av tre verdier avhengig av verdien til PctComplete. Følgende uttrykk kan plasseres i fyllfargen på en tekstboks for å endre bakgrunnsfargen avhengig av verdien i tekstboksen.

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

    Verdier som er større enn eller lik 10, vises med en grønn bakgrunn, mellom 1 og 9, med en blå bakgrunn og mindre enn 1 visning med rød bakgrunn.

  • En annen måte å få den samme funksjonaliteten på , bruker Switch-funksjonen . Switch-funksjonen er nyttig når det er tre eller flere betingelser å teste. Switch-funksjonen returnerer verdien som er knyttet til det første uttrykket i en serie som evalueres til sann:

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

    Verdier som er større enn eller lik 10 visninger med grønn bakgrunn, mellom 1 og 9, vises med blå bakgrunn, lik 1 visning med gul bakgrunn og 0 eller færre visninger med rød bakgrunn.

  • Test verdien for ImportantDate-feltet , og returner «Rød» hvis den er mer enn én uke gammel, og «Blå» ellers. Dette uttrykket kan brukes til å kontrollere fargeegenskapen for en tekstboks i et rapportelement:

    =IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")  
    
  • Test verdien for PhoneNumber-feltet , og returner «Ingen verdi» hvis den er null (Ingenting i Visual Basic), ellers returnerer du telefonnummerverdien. Dette uttrykket kan brukes til å kontrollere verdien for en tekstboks i et rapportelement.

    =IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)  
    
  • Test verdien for Avdeling-feltet, og returner enten et delrapportnavn eller en null (Ingenting i Visual Basic). Dette uttrykket kan brukes for delrapporter for betinget ekstrahering.

    =IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)  
    
  • Test om en feltverdi er null. Dette uttrykket kan brukes til å kontrollere egenskapen Skjult for et bilderapportelement. I eksemplet nedenfor vises bildet som er angitt av feltet LargePhoto , bare hvis verdien i feltet ikke er null.

    =IIF(IsNothing(Fields!LargePhoto.Value),True,False)  
    
  • MonthName-funksjonen returnerer en strengverdi som inneholder navnet på den angitte måneden. Følgende eksempel viser NA i Måned-feltet når feltet inneholder verdien 0.

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

Rapportfunksjoner

I et uttrykk kan du legge til en referanse til flere rapportfunksjoner som manipulerer data i en rapport. Denne delen inneholder eksempler på to av disse funksjonene.

Sum

  • Summer-funksjonen kan summere verdiene i en gruppe eller et dataområde. Denne funksjonen kan være nyttig i toppteksten eller bunnteksten i en gruppe. Følgende uttrykk viser summen av data i Ordre-gruppen eller dataområdet:

    =Sum(Fields!LineTotal.Value, "Order")  
    
  • Du kan også bruke Sum-funksjonen for betingede mengdeberegninger. Hvis et datasett for eksempel har et felt som heter Delstat med mulige verdier Ikke startet, Startet, Ferdig, beregner følgende uttrykk, når det plasseres i en gruppeoverskrift, aggregeringssummen bare for verdien Fullført:

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

Radnummer

  • RowNumber-funksjonen, når den brukes i en tekstboks i et dataområde, viser radnummeret for hver forekomst av tekstboksen der uttrykket vises. Denne funksjonen kan være nyttig for å nummerere rader i en tabell. Det kan også være nyttig for mer komplekse oppgaver, for eksempel å gi sideskift basert på antall rader. Hvis du vil ha mer informasjon, kan du se Sideskift i denne artikkelen.

    Omfanget du angir for RowNumber-kontroller når omnummereringen begynner. Nøkkelordet Ingenting indikerer at funksjonen begynner å telle på den første raden i det ytterste dataområdet. Hvis du vil begynne å telle i nestede dataområder, bruker du navnet på dataområdet. Hvis du vil begynne å telle i en gruppe, bruker du navnet på gruppen.

    =RowNumber(Nothing)  
    

Utseendet til rapportdata

Du kan bruke uttrykk til å manipulere hvordan data vises i en rapport. Du kan for eksempel vise verdiene for to felt i én enkelt tekstboks, vise informasjon om rapporten eller påvirke hvordan sideskift settes inn i rapporten.

Topptekst og bunntekst på side

Når du utformer en rapport, kan du vise navnet på rapporten og sidetallet i bunnteksten i rapporten. Hvis du vil gjøre dette, kan du bruke følgende uttrykk:

  • Følgende uttrykk angir navnet på rapporten og tidspunktet den ble kjørt. Den kan plasseres i en tekstboks i bunnteksten i rapporten eller i brødteksten i rapporten. Klokkeslettet er formatert med formateringsstrengen .NET Framework for kort dato:

    =Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")  
    
  • Følgende uttrykk, plassert i en tekstboks i bunnteksten i en rapport, gir sidetall og totalt antall sider i rapporten:

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

Eksemplene nedenfor beskriver hvordan du viser de første og siste verdiene fra en side i toppteksten på siden, på samme måte som i en katalogoppføring. Eksemplet forutsetter et dataområde som inneholder en tekstboks kalt Etternavn.

  • Følgende uttrykk, plassert i en tekstboks på venstre side av toppteksten på siden, gir den første verdien i tekstboksen Etternavn på siden:

    =First(ReportItems("LastName").Value)  
    
  • Følgende uttrykk, plassert i en tekstboks på høyre side av toppteksten på siden, gir den siste verdien i tekstboksen Etternavn på siden:

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

Følgende eksempel beskriver hvordan du viser en sidesum. Eksemplet forutsetter et dataområde som inneholder en tekstboks kalt Kostnad.

  • Følgende uttrykk, plassert i toppteksten eller bunnteksten på siden, angir summen av verdiene i tekstboksen Kostnader for siden:

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

Merk

Du kan bare referere til ett rapportelement per uttrykk i toppteksten eller bunnteksten på en side. Du kan også referere til tekstboksnavnet, men ikke det faktiske datauttrykket i tekstboksen, i sideoverskrifts- og bunntekstuttrykk.

Sideskift

I noen rapporter kan du plassere et sideskift på slutten av et angitt antall rader i stedet for, eller i tillegg til, på grupper eller rapportelementer. Opprett en gruppe som inneholder gruppene eller detaljpostene du vil bruke, legg til et sideskift i gruppen, og legg deretter til et gruppeuttrykk for å gruppere etter et angitt antall rader.

  • Følgende uttrykk tilordner et tall til hvert sett med 25 rader når det plasseres i gruppeuttrykket. Når et sideskift er definert for gruppen, resulterer dette uttrykket i et sideskift hver 25. rad.

    =Ceiling(RowNumber(Nothing)/25)  
    

    Hvis du vil tillate at brukeren angir en verdi for antall rader per side, oppretter du en parameter med navnet RowsPerPage og baserer gruppeuttrykket på parameteren, som vist i følgende uttrykk:

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

Egenskaper

Uttrykk brukes ikke bare til å vise data i tekstbokser. De kan også brukes til å endre hvordan egenskaper brukes på rapportelementer. Du kan endre stilinformasjon for et rapportelement eller endre synligheten.

Formatering

  • Følgende uttrykk, når det brukes i fargeegenskapen for en tekstboks, endrer fargen på teksten avhengig av verdien i Fortjeneste-feltet:

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

    Du kan også bruke Visual Basic-objektvariabelen Me. Denne variabelen er en annen måte å referere til verdien i en tekstboks på.

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

  • Følgende uttrykk, når det brukes i BackgroundColor-egenskapen for et rapportelement i et dataområde, veksler bakgrunnsfargen på hver rad mellom blek grønn og hvit:

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

    Hvis du bruker et uttrykk for et angitt omfang, må du kanskje angi datasettet for mengdefunksjonen:

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

Merk

Tilgjengelige farger kommer fra .NET Framework KnownColor-opplistingen.

Diagramfarger

Hvis du vil angi farger for et figurdiagram, kan du bruke egendefinert kode til å kontrollere rekkefølgen fargene er tilordnet til datapunktverdier. Dette hjelper deg med å bruke konsekvente farger for flere diagrammer som har de samme kategorigruppene.

Synlighet

Du kan vise og skjule elementer i en rapport ved hjelp av synlighetsegenskapene for rapportelementet. I et dataområde, for eksempel en tabell, kan du i utgangspunktet skjule detaljrader basert på verdien i et uttrykk.

  • Følgende uttrykk, når det brukes for innledende synlighet av detaljrader i en gruppe, viser detaljradene for alle salg som overskrider 90 prosent i PctQuota-feltet :

    =IIF(Fields!PctQuota.Value>.9, False, True)  
    
  • Følgende uttrykk, når det er angitt i egenskapen Skjult i en tabell, viser tabellen bare hvis den har mer enn 12 rader:

    =IIF(CountRows()>12,false,true)  
    
  • Følgende uttrykk, når det angis i skjult egenskap for en kolonne, viser bare kolonnen hvis feltet finnes i rapportdatasettet etter at dataene er hentet fra datakilden:

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

Du kan tilpasse nettadresser ved hjelp av rapportdata og også betingede kontroller om nettadresser legges til som en handling for en tekstboks.

  • Følgende uttrykk, når det brukes som en handling i en tekstboks, genererer en tilpasset URL-adresse som angir datasettfeltet EmployeeID som en NETTADRESSE-parameter.

    ="https://adventure-works/MyInfo?ID=" & Fields!EmployeeID.Value  
    
  • Følgende uttrykk kontrollerer betinget om du vil legge til en nettadresse i en tekstboks. Dette uttrykket avhenger av en parameter med navnet IncludeURLs som gjør det mulig for en bruker å bestemme om de skal inkludere aktive nettadresser i en rapport. Dette uttrykket er angitt som en handling i en tekstboks. Ved å sette parameteren til Usann og deretter vise rapporten, kan du eksportere rapporten til Microsoft Excel uten hyperkoblinger.

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

Merk

Sideformaterte rapporter i Power BI støtter ikke bruk av JavaScript i et Go To URL-uttrykk .

Rapportdata

Uttrykk kan brukes til å manipulere dataene som brukes i rapporten. Du kan referere til parametere og annen rapportinformasjon. Du kan til og med endre spørringen som brukes til å hente data for rapporten.

Parametere

Du kan bruke uttrykk i en parameter til å variere standardverdien for parameteren. Du kan for eksempel bruke en parameter til å filtrere data til en bestemt bruker basert på bruker-ID-en som brukes til å kjøre rapporten.

  • Følgende uttrykk, når det brukes som standardverdi for en parameter, samler inn bruker-ID-en til personen som kjører rapporten:

    =User!UserID  
    
  • Hvis du vil referere til en parameter i en spørringsparameter, et filteruttrykk, en tekstboks eller et annet område i rapporten, bruker du den globale samlingen parametere . Dette eksemplet forutsetter at parameteren heter Avdeling:

    =Parameters!Department.Value  
    
  • Parametere kan opprettes i en rapport, men settes til skjult. Når rapporten kjøres på rapportserveren, vises ikke parameteren på verktøylinjen, og rapportleseren kan ikke endre standardverdien. Du kan bruke en skjult parameter satt til en standardverdi som en egendefinert konstant. Du kan bruke denne verdien i et hvilket som helst uttrykk, inkludert et feltuttrykk. Følgende uttrykk identifiserer feltet som er angitt av standard parameterverdi for parameteren ParameterField:

    =Fields(Parameters!ParameterField.Value).Value  
    

Egendefinert kode

Du kan bruke egendefinert kode innebygd i en rapport.

Bruke gruppevariabler for egendefinert aggregasjon

Du kan initialisere verdien for en gruppevariabel som er lokal for et bestemt gruppeomfang, og deretter inkludere en referanse til denne variabelen i uttrykk. En av måtene du kan bruke en gruppevariabel med egendefinert kode på, er å implementere et egendefinert aggregat.

Undertrykke nullverdier eller nullverdier ved kjøretid

Noen verdier i et uttrykk kan evalueres til null eller udefinert ved behandlingstidspunktet for rapporten. Dette kan opprette kjøretidsfeil som resulterer i at #Error vises i tekstboksen i stedet for det evaluerte uttrykket. IIF-funksjonen er spesielt følsom for denne virkemåten fordi, i motsetning til en If-Then-Else-setning, evalueres hver del av IIF-setningen (inkludert funksjonskall) før de sendes til rutinen som tester for sann eller usann. =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) Setningen genererer #Error i den gjengitte rapporten hvis Felter! Sales.Value er INGENTING.

Bruk én av følgende strategier for å unngå denne betingelsen:

  • Angi telleren til 0 og nevneren til 1 hvis verdien for felt B er 0 eller ikke definert. Ellers setter du telleren til verdien for felt A og nevneren til verdien for felt B.

    =IIF(Field!B.Value=0, 0, Field!A.Value / IIF(Field!B.Value =0, 1, Field!B.Value))  
    
  • Bruk en egendefinert kodefunksjon til å returnere verdien for uttrykket. Følgende eksempel returnerer prosentforskjellen mellom en gjeldende verdi og en tidligere verdi. Dette kan brukes til å beregne forskjellen mellom to etterfølgende verdier, og den håndterer kanttilfellet for den første sammenligningen (når det ikke finnes noen tidligere verdi) og tilfeller der enten den forrige verdien eller den gjeldende verdien er 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ølgende uttrykk viser hvordan du kaller opp denne egendefinerte koden fra en tekstboks, for ColumnGroupByYear-beholderen (gruppe eller dataområde).

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

    Denne koden bidrar til å unngå kjøretidsunntak. Nå kan du bruke et uttrykk som =IIF(Me.Value < 0, "red", "black") i fargeegenskapen for tekstboksen til å vise tekst betinget basert på om verdiene er større enn eller mindre enn 0.

Neste trinn