Delen via


Voorbeelden van expressies in gepagineerde Rapporten van Report Builder

Van toepassing op: Microsoft Report Builder (SSRS) Power BI Report Builder Report Designer in SQL Server Data Tools

Expressies worden vaak gebruikt in gepagineerde rapporten om de inhoud en het uiterlijk van rapporten te beheren. Expressies worden geschreven in Microsoft Visual Basic en kunnen ingebouwde functies, aangepaste code, rapport- en groepsvariabelen en door de gebruiker gedefinieerde variabelen gebruiken. Expressies beginnen met een gelijkteken (=). Zie Expressie gebruikt in gepagineerde rapporten (Report Builder) en Een expressie toevoegen aan een gepagineerd rapport (Report Builder) voor meer informatie over de expressie-editor en de typen verwijzingen die u kunt opnemen.

Belangrijk

Wanneer RDL Sandboxing is ingeschakeld, kunt u alleen bepaalde typen en leden gebruiken in expressietekst tijdens het publiceren van rapporten. Zie RDL-sandboxing in- en uitschakelen voor Reporting Services in de geïntegreerde modus van SharePoint voor meer informatie.

Zie de volgende artikelen voor voorbeelden van expressies voor specifieke toepassingen:

Zie de artikelen onder Expressies in een gepagineerd rapport (Report Builder) voor meer informatie over eenvoudige en complexe expressies, waar u expressies kunt gebruiken en de typen verwijzingen die u in een expressie kunt opnemen. Zie Het expressiebereik voor totalen, aggregaties en ingebouwde verzamelingen in een gepagineerd rapport (Report Builder) voor meer informatie over de context waarin expressies worden geëvalueerd voor het berekenen van aggregaties.

Zie Zelfstudie: Expressies introduceren voor meer informatie over het schrijven van expressies die gebruikmaken van veel functies en operators die ook worden gebruikt door expressievoorbeelden in dit artikel.

Functions

Veel expressies in een rapport bevatten functies. U kunt gegevens opmaken, logica toepassen en metagegevens van rapporten openen met behulp van deze functies. U kunt expressies schrijven die gebruikmaken van functies uit de runtimebibliotheek van Microsoft Visual Basic en vanuit de Convert en Math naamruimten. U kunt verwijzingen toevoegen aan functies uit andere assembly's of aangepaste code. U kunt ook klassen van Microsoft .NET Framework gebruiken, waaronder System.Text.RegularExpressions.

Visual Basic-functies

U kunt Visual Basic-functies gebruiken om de gegevens te bewerken die worden weergegeven in tekstvakken of uw parameters, eigenschappen of andere gebieden van uw rapport. In deze sectie vindt u voorbeelden waarin enkele van deze functies worden gedemonstreerd. Zie de leden van de Visual Basic Runtime-bibliotheek voor meer informatie.

Het .NET Framework biedt veel opties voor aangepaste indelingen, bijvoorbeeld voor specifieke datumnotaties.

Wiskundige functies

  • De functie Afronden is handig om getallen af te ronden op het dichtstbijzijnde gehele getal. Met de volgende expressie wordt 1,3 afgerond op 1:

    = Round(1.3)  
    

    U kunt ook een expressie schrijven om een waarde af te ronden op een veelvoud dat u opgeeft, vergelijkbaar met de functie MRound in Excel. Met deze functie kunt u een waarde vermenigvuldigen met een factor waarmee een geheel getal wordt gemaakt, het getal wordt afgerond en vervolgens door dezelfde factor wordt gedeeld. Als u bijvoorbeeld 1,3 wilt afronden op het dichtstbijzijnde veelvoud van 0,2 (1.4), gebruikt u de volgende expressie:

    = Round(1.3*5)/5  
    

Datumfuncties

  • De functie Vandaag geeft de huidige datum op. Deze expressie kan worden gebruikt in een tekstvak om de datum in het rapport of in een parameter weer te geven om gegevens te filteren op basis van de huidige datum:

    =Today()  
    
  • Gebruik de functie DateInterval om een bepaald deel van een datum op te halen. Hier volgen enkele geldige DateInterval-parameters :

    • DateInterval.Second

    • DateInterval.Minute

    • DateInterval.Hour

    • DateInterval.Weekday

    • DateInterval.Day

    • DateInterval.DayOfYear

    • DateInterval.WeekOfYear

    • DateInterval.Month

    • DateInterval.Quarter

    • DateInterval.Year

      In deze expressie ziet u bijvoorbeeld het aantal van de week in het huidige jaar voor de datum van vandaag:

      =DatePart(DateInterval.WeekOfYear, today()) 
      
  • De functie DateAdd is handig voor het opgeven van een datumbereik op basis van één parameter. De volgende expressie bevat een datum zes maanden na de datum vanaf een parameter met de naam StartDate:

    =DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)  
    
  • Met de functie Year wordt het jaar voor een bepaalde datum weergegeven. U kunt deze functie gebruiken om datums te groeperen of om het jaar weer te geven als label voor een set datums. Deze expressie bevat het jaar voor een bepaalde groep verkooporderdatums. De functie Month en andere functies kunnen ook worden gebruikt om datums te bewerken:

    =Year(Fields!OrderDate.Value)  
    
  • U kunt functies in een expressie combineren om de indeling aan te passen. Met de volgende expressie wordt de notatie van een datum in de notatie maand-dag-jaar gewijzigd in maand-week-weeknummer. Bijvoorbeeld 12/23/2009 naar 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  
    

    Wanneer u deze expressie gebruikt als een berekend veld in een gegevensset, kunt u deze expressie in een grafiek gebruiken om binnen elke maand waarden per week samen te voegen.

  • Met de volgende expressie wordt de waarde SellStartDate opgemaakt als MMM-JJ. Het veld SellStartDate is een datum/tijd-gegevenstype:

    =FORMAT(Fields!SellStartDate.Value, "MMM-yy")  
    
  • Met de volgende expressie wordt de waarde SellStartDate opgemaakt als dd/MM/jjjj. Het veld SellStartDate is een datum/tijd-gegevenstype:

    =FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")  
    
  • De functie CDate converteert de waarde naar een datum. De functie Now retourneert een datumwaarde met de huidige datum en tijd op basis van uw systeem. DateDiff retourneert een lange waarde die het aantal tijdsintervallen tussen twee datumwaarden aangeeft.

    In het volgende voorbeeld wordt de begindatum van het huidige jaar weergegeven:

    =DateAdd(DateInterval.Year,DateDiff(DateInterval.Year,CDate("01/01/1900"),Now()),CDate("01/01/1900"))  
    
  • In het volgende voorbeeld wordt de begindatum voor de vorige maand weergegeven op basis van de huidige maand:

    =DateAdd(DateInterval.Month,DateDiff(DateInterval.Month,CDate("01/01/1900"),Now())-1,CDate("01/01/1900"))  
    
  • Met de volgende expressie worden de intervaljaren tussen SellStartDate en LastReceiptDate gegenereerd. Deze velden bevinden zich in twee verschillende gegevenssets, DataSet1 en DataSet2. De rapportbouwerfuncties - eerste functie in een gepagineerd rapport (Report Builder), die een aggregatiefunctie is, retourneert de eerste waarde van SellStartDate in DataSet1 en de eerste waarde van LastReceiptDate in DataSet2:

    =DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value, "DataSet2"))  
    
  • De functie DatePart retourneert een geheel getal dat het opgegeven onderdeel van een bepaalde datumwaarde bevat. De volgende expressie retourneert het jaar voor de eerste waarde van de SellStartDate in DataSet1. Het bereik van de gegevensset is opgegeven omdat het rapport meerdere gegevenssets bevat:

    =Datepart("yyyy", First(Fields!SellStartDate.Value, "DataSet1"))  
    
    
  • De functie DateSerial retourneert een datumwaarde die een opgegeven jaar, maand en dag vertegenwoordigt, waarbij de tijdgegevens zijn ingesteld op middernacht. In het volgende voorbeeld wordt de einddatum voor de vorige maand weergegeven, op basis van de huidige maand:

    =DateSerial(Year(Now()), Month(Now()), "1").AddDays(-1)  
    
  • In de volgende expressies worden verschillende datums weergegeven op basis van een datumparameterwaarde die door de gebruiker is geselecteerd:

Voorbeeldbeschrijving Example
Gisteren =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-1)
Twee dagen geleden =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-2)
Eén maand geleden =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-1,Day(Parameters!TodaysDate.Value))
Twee maanden geleden =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-2,Day(Parameters!TodaysDate.Value))
Een jaar geleden =DateSerial(Year(Parameters!TodaysDate.Value)-1,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value))
Twee jaar geleden =DateSerial(Year(Parameters!TodaysDate.Value)-2,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value))

Stringfuncties

  • Combineer meer dan één veld met behulp van samenvoegingsoperatoren en Visual Basic-constanten. De volgende expressie retourneert twee velden, elk op een afzonderlijke regel in hetzelfde tekstvak:

    =Fields!FirstName.Value & vbCrLf & Fields!LastName.Value   
    
  • Datums en getallen in een tekenreeks opmaken met de functie Opmaak . De volgende expressie geeft waarden weer van de parameters StartDate en EndDate in lange datumnotatie:

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

    Als het tekstvak slechts een datum of getal bevat, moet u de eigenschap Opmaak van het tekstvak gebruiken om opmaak toe te passen in plaats van de functie Opmaak in het tekstvak.

  • De functies Right, Len en InStr zijn handig voor het retourneren van een subtekenreeks, bijvoorbeeld bijsnijden DOMAIN\username tot alleen de gebruikersnaam. De volgende expressie retourneert het deel van de tekenreeks rechts van een backslash (\) van een parameter met de naam Gebruiker:

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

    De volgende expressie resulteert in dezelfde waarde als de vorige, waarbij leden van de .NET Framework-klasse String worden gebruikt in plaats van Visual Basic-functies:

    =Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)  
    
  • De geselecteerde waarden uit een parameter met meerdere waarden weergeven. In het volgende voorbeeld wordt de functie Join gebruikt om de geselecteerde waarden van de parameter MySelection samen te voegen in één tekenreeks die kan worden ingesteld als een expressie voor de waarde van een tekstvak in een rapportitem:

    = Join(Parameters!MySelection.Value)  
    

    Het volgende voorbeeld doet hetzelfde als in het vorige voorbeeld en geeft een tekenreeks weer vóór de lijst met geselecteerde waarden:

    ="Report for " & JOIN(Parameters!MySelection.Value, " & ")  
    
    
  • De Regex-functies van .NET Framework System.Text.RegularExpressions zijn handig voor het wijzigen van de indeling van bestaande tekenreeksen, bijvoorbeeld het opmaken van een telefoonnummer. In de volgende expressie wordt de functie Vervangen gebruikt om de notatie van een telefoonnummer in een veld te wijzigen van nnn-nnn-nnnn in (nnn) nnn-nnnn:

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

    Opmerking

    Controleer of de waarde voor Velden! Phone.Value heeft geen extra spaties en is van het type String.

Lookup

  • Door een sleutelveld op te geven, kunt u de functie Opzoeken gebruiken om een waarde op te halen uit een gegevensset voor een een-op-een-relatie, bijvoorbeeld een sleutel-waardepaar. In de volgende expressie wordt de productnaam uit een gegevensset met de naam Product weergegeven, op voorwaarde dat de product-id overeenkomt met:

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

LookupSet

  • Door een sleutelveld op te geven, kunt u de functie LookupSet gebruiken om een set waarden op te halen uit een gegevensset voor een een-op-veel-relatie. Een persoon kan bijvoorbeeld meerdere telefoonnummers hebben. In het volgende voorbeeld wordt ervan uitgegaan dat de gegevensset PhoneList een persoons-id en een telefoonnummer in elke rij bevat. LookupSet retourneert een matrix met waarden. De volgende expressie combineert de retourwaarden in één tekenreeks en geeft de lijst met telefoonnummers weer voor de persoon die is opgegeven door ContactID:

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

Conversiefuncties

U kunt Visual Basic-functies gebruiken om een veld van het ene gegevenstype te converteren naar een ander gegevenstype. U kunt conversiefuncties gebruiken om het standaardgegevenstype voor een veld te converteren naar het gegevenstype dat nodig is voor berekeningen of om tekst te combineren.

  • Met de volgende expressie wordt de constante 500 geconverteerd naar het type Decimaal om deze te vergelijken met een Transact-SQL gegevenstype geld in het veld Waarde voor een filterexpressie:

    =CDec(500)  
    
  • In de volgende expressie wordt het aantal waarden weergegeven dat is geselecteerd voor de parameter MySelection met meerdere waarden:

    =CStr(Parameters!MySelection.Count)  
    

Beslissingsfuncties

  • De functie IIF retourneert een van de twee waarden, afhankelijk van of de expressie waar is of niet. De volgende expressie gebruikt de functie IIF om een Booleaanse waarde van True te retourneren als de waarde van LineTotal groter is dan 100. Anders wordt een waarde van 'Onwaar' geretourneerd:

    =IIF(Fields!LineTotal.Value > 100, True, False)  
    
  • Gebruik meerdere IIF-functies (ook wel 'geneste IIF-instructies ' genoemd) om een van de drie waarden te retourneren, afhankelijk van de waarde van PctComplete. De volgende expressie kan in de opvulkleur van een tekstvak worden geplaatst om de achtergrondkleur te wijzigen, afhankelijk van de waarde in het tekstvak:

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

    Waarden groter dan of gelijk aan 10 worden weergegeven met een groene achtergrond. Waarden tussen één en negen worden weergegeven met een blauwe achtergrond. waarden kleiner dan één worden weergegeven met een rode achtergrond.

  • Een andere manier om dezelfde functionaliteit te krijgen, maakt gebruik van de functie Switch . De schakelfunctie is handig wanneer u drie of meer voorwaarden hebt om te testen. De functie Schakelen retourneert de waarde die is gekoppeld aan de eerste uitdrukking in een reeks die als WAAR wordt geëvalueerd:

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

    Waarden groter dan of gelijk aan 10 worden weergegeven met een groene achtergrond. Waarden tussen één en negen worden weergegeven met een blauwe achtergrond. Waarden die gelijk zijn aan één weergave met een gele achtergrond. Waarden 0 of minder worden weergegeven met een rode achtergrond.

  • Test de waarde van het veld ImportantDate en retourneer 'Rood' als het meer dan een week oud is en 'Blauw' anders. Deze expressie kan worden gebruikt om de eigenschap Kleur van een tekstvak in een rapportitem te beheren:

    =IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")  
    
  • Test de waarde van het veld PhoneNumber en retourneer geen waarde als het een null-waarde is, met de naam Niets in Visual Basic. Anders retourneert u de waarde van het telefoonnummer. Deze expressie kan worden gebruikt om de waarde van een tekstvak in een rapportitem te bepalen:

    =IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)  
    
  • Test de waarde van het veld Afdeling en retourneer een subrapportnaam of een null-waarde, met de naam Niets in Visual Basic. Deze expressie kan worden gebruikt voor voorwaardelijke drillthrough-subrapporten.

    =IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)  
    
  • Test of een veldwaarde een null-waarde is. Deze expressie kan worden gebruikt om de eigenschap Verborgen van een afbeeldingsrapportitem te beheren. In het volgende voorbeeld wordt de afbeelding die is opgegeven door het veld LargePhoto alleen weergegeven als de waarde van het veld geen null-waarde is:

    =IIF(IsNothing(Fields!LargePhoto.Value),True,False)  
    
  • De functie MonthName retourneert een tekenreekswaarde met de naam van de opgegeven maand. In het volgende voorbeeld wordt NA weergegeven in het veld Maand wanneer het veld de waarde 0 bevat:

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

Rapportfuncties

In een expressie kunt u een verwijzing toevoegen naar meer rapportfuncties waarmee gegevens in een rapport worden bewerkt. Deze sectie bevat voorbeelden voor twee van deze functies. Zie Report Builder-functies - statistische functies in gepagineerde rapporten (Report Builder) voor meer informatie over rapportfuncties en voorbeelden.

Som

  • Met de functie Som kunnen de waarden in een groep of gegevensgebied worden opgeteld. Deze functie kan handig zijn in de kop- of voettekst van een groep. In de volgende expressie wordt de som van de gegevens in de groep Order of gegevensregio weergegeven:

    =Sum(Fields!LineTotal.Value, "Order")  
    
  • U kunt ook de functie Som gebruiken voor berekeningen voor voorwaardelijke statistische gegevens. Stel dat u een gegevensset hebt met een veld met de naam State met mogelijke waarden Niet gestart, Gestart en Voltooid. De volgende expressie, wanneer deze in een groepskoptekst wordt geplaatst, berekent de geaggregeerde som voor alleen de waarde Voltooid:

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

Rijnummer

  • De functie RowNumber , wanneer deze wordt gebruikt in een tekstvak binnen een gegevensgebied, geeft het rijnummer weer voor elk exemplaar van het tekstvak waarin de expressie wordt weergegeven. Deze functie kan handig zijn voor het nummeren van rijen in een tabel. Het kan ook nuttig zijn voor complexere taken, zoals het toevoegen van pagina-einden op basis van het aantal rijen. Voor meer informatie, zie Pagina-einden.

    Het bereik dat u opgeeft voor rownumber-besturingselementen bij het opnieuw nummeren begint. Het trefwoord Niets geeft aan dat de functie begint te tellen bij de eerste rij in het buitenste gegevensgebied. Als u wilt beginnen met tellen binnen geneste gegevensregio's, gebruikt u de naam van de gegevensregio. Als u wilt beginnen met tellen binnen een groep, gebruikt u de naam van de groep:

    =RowNumber(Nothing)  
    

Weergave van rapportgegevens

U kunt expressies gebruiken om te bewerken hoe gegevens in een rapport worden weergegeven. U kunt bijvoorbeeld de waarden van twee velden in één tekstvak weergeven, informatie over het rapport weergeven of van invloed zijn op de wijze waarop pagina-einden in het rapport worden ingevoegd.

Kop- en voetteksten van pagina's

Wanneer u een rapport ontwerpt, wilt u mogelijk de naam van het rapport en het paginanummer in de rapportvoettekst weergeven. U kunt de volgende expressies gebruiken:

  • De volgende expressie bevat de naam van het rapport en de tijd waarop het is uitgevoerd. Het kan in een tekstvak in de voettekst van het rapport of in de hoofdtekst van het rapport worden geplaatst. De tijd is opgemaakt met de .NET Framework-opmaaktekenreeks voor korte datum:

    =Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")  
    
  • De volgende expressie, geplaatst in een tekstvak in de voettekst van een rapport, bevat paginanummer en totaal aantal pagina's in het rapport:

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

In de volgende voorbeelden wordt beschreven hoe u de eerste en laatste waarden van een pagina in de paginakoptekst weergeeft, vergelijkbaar met wat u in een adreslijstvermelding kunt vinden. In het voorbeeld wordt ervan uitgegaan dat een gegevensgebied een tekstvak bevat met de naam LastName.

  • De volgende expressie, geplaatst in een tekstvak aan de linkerkant van de paginakoptekst, biedt de eerste waarde van het tekstvak Achternaam op de pagina:

    =First(ReportItems("LastName").Value)  
    
  • De volgende expressie, geplaatst in een tekstvak aan de rechterkant van de paginakoptekst, biedt de laatste waarde van het tekstvak Achternaam op de pagina:

    =Last(ReportItems("LastName").Value)  
    
  • In het volgende voorbeeld wordt beschreven hoe u een paginatotaal weergeeft. In het voorbeeld wordt ervan uitgegaan dat een gegevensgebied een tekstvak met de naam Kosten bevat. Wanneer u deze expressie in de kop- of voettekst van de pagina plaatst, wordt de som van de waarden in het tekstvak Kosten voor de pagina weergegeven:

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

Opmerking

U kunt slechts één rapportitem per expressie in een kop- of voettekst van een pagina raadplegen. U kunt ook verwijzen naar de naam van het tekstvak, maar niet naar de werkelijke gegevensexpressie in het tekstvak, in kop- en voettekstexpressies van de pagina.

Pagina-einden

In sommige rapporten wilt u mogelijk een pagina-einde aan het einde van een opgegeven aantal rijen plaatsen in plaats van of naast groepen of rapportitems. Maak een groep die de gewenste groepen of detailrecords bevat. Voeg een pagina-einde toe aan de groep en voeg vervolgens een groepsexpressie toe om te groeperen op een opgegeven aantal rijen.

  • De volgende expressie wijst, wanneer deze in de groepsexpressie wordt geplaatst, een getal toe aan elke set van 25 rijen. Wanneer een pagina-einde voor de groep is gedefinieerd, resulteert deze expressie in een pagina-einde om de 25 rijen:

    =Ceiling(RowNumber(Nothing)/25)  
    

    Als u wilt toestaan dat de gebruiker een waarde instelt voor het aantal rijen per pagina, maakt u een parameter met de naam RowsPerPage en baseeert u de groepsexpressie op de parameter, zoals wordt weergegeven in de volgende expressie:

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

    Zie Een pagina-einde toevoegen aan een gepagineerd rapport (Report Builder) voor meer informatie over het instellen van pagina-einden voor een groep.

Eigenschappen

Expressies worden niet alleen gebruikt om gegevens in tekstvakken weer te geven. Ze kunnen ook worden gebruikt om te wijzigen hoe eigenschappen worden toegepast op rapportitems. U kunt stijlgegevens voor een rapportitem wijzigen of de zichtbaarheid ervan wijzigen.

Formatting

  • De volgende expressie, wanneer deze wordt gebruikt in de eigenschap Kleur van een tekstvak, wijzigt de kleur van de tekst, afhankelijk van de waarde van het veld Winst :

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

    U kunt ook de Visual Basic-objectvariabele Megebruiken. Deze variabele is een andere manier om te verwijzen naar de waarde van een tekstvak.

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

  • De volgende expressie, wanneer deze wordt gebruikt in de eigenschap BackgroundColor van een rapportitem in een gegevensgebied, wisselt de achtergrondkleur van elke rij af tussen lichtgroen en wit:

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

    Als u een expressie gebruikt voor een opgegeven bereik, moet u mogelijk de gegevensset voor de statistische functie aangeven:

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

Opmerking

Beschikbare kleuren zijn afkomstig uit de opsomming .NET Framework KnownColor.

Grafiekkleuren

Als u kleuren voor een vormdiagram wilt opgeven, kunt u aangepaste code gebruiken om de volgorde waarin kleuren worden toegewezen aan gegevenspunten te bepalen. Met deze aangepaste code kunt u consistente kleuren gebruiken voor meerdere grafieken met dezelfde categoriegroepen. Zie Consistente kleuren opgeven in meerdere shapediagrammen in een gepagineerd rapport (Report Builder) voor meer informatie.

Zichtbaarheid

U kunt items in een rapport weergeven en verbergen met behulp van de zichtbaarheidseigenschappen voor het rapportitem. In een gegevensgebied, zoals een tabel, kunt u in eerste instantie detailrijen verbergen op basis van de waarde in een expressie.

  • In de volgende expressie, wanneer deze wordt gebruikt voor de eerste zichtbaarheid van detailrijen in een groep, worden de detailrijen weergegeven voor alle verkopen van meer dan 90 procent in het veld PctQuota :

    =Iif(Fields!PctQuota.Value>.9, False, True)  
    
  • In de volgende expressie wordt, wanneer deze is ingesteld in de eigenschap Verborgen van een tabel, alleen de tabel weergegeven als deze meer dan 12 rijen bevat:

    =IIF(CountRows()>12,false,true)  
    
  • De volgende expressie, wanneer deze is ingesteld in de eigenschap Verborgen van een kolom, geeft alleen de kolom weer als het veld bestaat in de rapportgegevensset nadat de gegevens zijn opgehaald uit de gegevensbron:

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

U kunt URL's aanpassen met behulp van rapportgegevens en ook voorwaardelijk bepalen of URL's worden toegevoegd als actie voor een tekstvak.

  • Met de volgende expressie wordt, wanneer deze wordt gebruikt als een actie voor een tekstvak, een aangepaste URL gegenereerd waarmee het veld EmployeeID van de gegevensset wordt opgegeven als een URL-parameter:

    ="https://contoso/MyInfo?ID=" & Fields!EmployeeID.Value  
    

    Zie Een hyperlink toevoegen aan een URL in een gepagineerd rapport (Report Builder) voor meer informatie.

  • Met de volgende expressie bepaalt u voorwaardelijk of u een URL in een tekstvak wilt toevoegen. Deze expressie is afhankelijk van een parameter met de naam IncludeURLs waarmee een gebruiker kan bepalen of actieve URL's in een rapport moeten worden opgenomen. Deze expressie wordt ingesteld als een actie in een tekstvak. Door de parameter in te stellen op FALSE en vervolgens het rapport weer te geven, kunt u het rapport microsoft Excel exporteren zonder hyperlinks:

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

Rapportgegevens

Expressies kunnen worden gebruikt om de gegevens te bewerken die in het rapport worden gebruikt. U kunt verwijzen naar parameters en andere rapportgegevens. U kunt zelfs de query wijzigen die wordt gebruikt om gegevens voor het rapport op te halen.

Parameterwaarden

U kunt expressies in een parameter gebruiken om de standaardwaarde voor de parameter te variëren. U kunt bijvoorbeeld een parameter gebruiken om gegevens te filteren op een bepaalde gebruiker op basis van de gebruikers-id die wordt gebruikt om het rapport uit te voeren.

  • De volgende expressie, wanneer deze wordt gebruikt als de standaardwaarde voor een parameter, verzamelt de gebruikers-id van de persoon die het rapport uitvoert:

    =User!UserID  
    
  • Als u wilt verwijzen naar een parameter in een queryparameter, filterexpressie, tekstvak of een ander gebied van het rapport, gebruikt u de algemene verzameling Parameters . In dit voorbeeld wordt ervan uitgegaan dat de parameter afdeling heet:

    =Parameters!Department.Value  
    
  • Parameters kunnen worden gemaakt in een rapport, maar worden ingesteld op verborgen. Wanneer het rapport wordt uitgevoerd op de rapportserver, wordt de parameter niet weergegeven op de werkbalk en kan de rapportlezer de standaardwaarde niet wijzigen. U kunt een verborgen parameter gebruiken die is ingesteld op een standaardwaarde als aangepaste constante. U kunt deze waarde gebruiken in elke expressie, inclusief een veldexpressie. De volgende expressie identificeert het veld dat is opgegeven met de standaardparameterwaarde voor de parameter ParameterField:

    =Fields(Parameters!ParameterField.Value).Value  
    

Aangepaste code

U kunt aangepaste code in een rapport gebruiken. Aangepaste code wordt ingesloten in een rapport of opgeslagen in een aangepaste assembly die in het rapport wordt gebruikt. Zie Aangepaste code en assemblyverwijzingen in expressies in een gepagineerd rapport in Report Designer (SSRS) voor meer informatie over aangepaste code.

Groepsvariabelen gebruiken voor aangepaste aggregatie

U kunt de waarde initialiseren voor een groepsvariabele die lokaal is voor een bepaald groepsbereik en vervolgens een verwijzing naar die variabele opnemen in expressies. Een van de manieren waarop u een groepsvariabele met aangepaste code kunt gebruiken, is door een aangepaste statistische functie te implementeren. Zie Groepsvariabelen gebruiken in Reporting Services 2008 voor aangepaste aggregatie voor meer informatie.

Zie Verwijzingen naar rapport- en groepsvariabelen in een gepagineerd rapport (Report Builder) voor meer informatie over variabelen.

Null- of nulwaarden tijdens runtime onderdrukken

Sommige waarden in een expressie kunnen worden geëvalueerd als null of niet gedefinieerd tijdens de verwerkingstijd van het rapport. Met deze waarden kunnen runtimefouten worden gemaakt die resulteren in '#Error' die worden weergegeven in het tekstvak in plaats van de geëvalueerde expressie. De functie IIF is gevoelig voor dit gedrag. In tegenstelling tot een If-Then-Else-instructie wordt elk deel van de IIF-instructie geëvalueerd, inclusief functieaanroepen, voordat deze wordt doorgegeven aan de routine waarmee WAAR of ONWAAR wordt getest. De instructie =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) genereert '#Error' in het weergegeven rapport als Fields!Sales.Value dit een waarde Niets is.

Gebruik een van de volgende strategieën om deze voorwaarde te voorkomen:

  • Stel de teller in op 0 en de noemer op 1 als de waarde voor veld B 0 of niet gedefinieerd is. Anders stelt u de teller in op de waarde voor veld A en de noemer op de waarde voor veld B:

    =IIF(Field!B.Value=0, 0, Field!A.Value / IIF(Field!B.Value =0, 1, Field!B.Value))  
    
  • Gebruik een aangepaste codefunctie om de waarde voor de expressie te retourneren. In het volgende voorbeeld wordt het percentageverschil tussen een huidige waarde en een vorige waarde geretourneerd. Deze waarde kan worden gebruikt om het verschil tussen twee opeenvolgende waarden te berekenen. Het verwerkt het edge-geval van de eerste vergelijking wanneer er geen vorige waarde is en werkt in gevallen waarin de vorige waarde of de huidige waarde een null-waarde is, met de naam Niets in 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  
    

    In de volgende expressie ziet u hoe u deze aangepaste code aanroept vanuit een tekstvak, voor de container ColumnGroupByYear, een groep of gegevensregio:

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

    Deze code helpt bij het voorkomen van runtime-uitzonderingen. U kunt nu een expressie zoals =IIF(Me.Value < 0, "red", "black") in de eigenschap Kleur van het tekstvak gebruiken om de weergavetekst voorwaardelijk weer te geven op basis van of de waarden groter zijn dan of kleiner dan 0.