Příklady výrazů (Tvůrce sestav 3.0)

SQL Server 2008 R2

Výrazy se často používají v sestavách k řízení obsahu a vzhledu sestavy. Výrazy se zadávají v jazyce Microsoft Visual Basic a mohou používat integrované funkce, vlastní kód, globální proměnné a proměnné definované uživatelem. Výrazy začínají rovnítkem (=). Další informace o editoru výrazů a typech odkazů, které je možné použít, naleznete v tématech Použití výrazů (Tvůrce sestav 3.0) a Postup: Přidání výrazu (Tvůrce sestav 3.0).

Toto téma obsahuje příklady výrazů, které lze použít pro běžné úlohy v sestavě.

  • Funkce Visual Basic   Příklady pro funkce data, řetězce či převodu a podmíněné funkce jazyka Visual Basic.

  • Funkce sestavy   Příklady pro agregace a další integrované funkce sestavy.

  • Vzhled dat sestavy   Příklady změny vzhledu sestavy.

  • Vlastnosti   Příklady nastavení vlastností položek sestavy umožňujících řízení formátu nebo viditelnosti.

  • Parametry   Příklady použití parametrů ve výrazu.

  • Vlastní kód   Příklady použití vloženého vlastního kódu.

Pokud pomocí návrháře dotazů modelu sestav vytváříte dotaz pro datovou sadu, který používá model sestavy jako zdroj dat, budete namísto výrazů používat vzorce. Tyto vzorce pomáhají určit data sestavy pomocí vlastních výpočtů integrovaných v dotazu, který určuje, jaká data mají být vrácena ze zdroje dat modelu sestavy. Další informace naleznete v tématu Vzorce (Tvůrce sestav 3.0).

Mnoho výrazů v sestavě obsahuje funkce. Pomocí těchto funkcí je možné formátovat data, použít logiku nebo získat přístup k metadatům sestavy. Můžete zadat výraz, který používá funkce z knihovny runtime MicrosoftVisual Basic a z oborů názvů System..::..Convert a System..::..Math. Je možné připojit odkazy na funkce z jiných sestavení nebo vlastního kódu. Zároveň můžete použít třídy z Microsoft.NET Framework, včetně System.Text.RegularExpressions. Další informace o funkcích Visual Basic naleznete v tématu Visual Basic Run-Time Library (Knihovna runtime jazyka Visual Basic) na webu msdn.microsoft.com.

Funkce Visual Basic

Pomocí funkcí Visual Basic je možné pracovat s daty zobrazenými v textových polích nebo daty použitými pro parametry, vlastnosti či další oblasti sestavy. Tato část obsahuje příklady s ukázkami některých z uvedených funkcí. Další informace o funkcích Visual Basic naleznete v dokumentaci pro Visual Basic.

Matematické funkce

  • Funkce Round je užitečná k zaokrouhlení čísel na nejbližší celé číslo. Následující výraz zaokrouhlí hodnotu 1.3 na 1.

    = Round(1.3)
    

    Také můžete napsat výraz pro zaokrouhlení hodnoty na násobek zadaného čísla, podobně jako u funkce MRound v aplikaci Excel. Vynásobte hodnotu faktorem, který vytvoří celé číslo, zaokrouhlete hodnotu a následně ji vydělte stejným faktorem. Když například chcete zaokrouhlit číslo 1.3 na nejbližší násobek 0.2 (1.4), použijte následující výraz:

    = Round(1.3*5)/5
    

Funkce data

  • Funkce Today poskytuje aktuální datum. Tento výraz lze využít v textovém poli k zobrazení data v sestavě nebo v parametru umožňujícím filtrování dat na základě aktuálního data.

    =Today()
    
  • Funkce DateAdd je vhodná pro zadání rozsahu dat na základě jediného parametru. Následující výraz zadává datum, které následuje šest měsíců po datu z parametru s názvem StartDate.

    =DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
    
  • Funkce Year umožňuje zobrazit rok určitého data. Pomocí uvedené funkce je možné dohromady seskupit data nebo zobrazit rok jako popisek sady dat. Následující výraz uvádí rok dané skupiny dat prodejních objednávek. Při práci s daty lze také použít funkci Month a další funkce. Další informace naleznete v dokumentaci pro Visual Basic.

    =Year(Fields!OrderDate.Value)
    
  • Kombinací funkcí ve výrazu lze upravit formát. Následující výraz změní formát data z tvaru měsíc-den-rok na tvar měsíc-týden-týden. Například 12/23/2009 na prosinec, 3. týden:

    =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
    

    Při použití jako vypočítané pole v datové sadě můžete použít tento výraz v grafu k agregaci hodnot podle týdnů v rámci každého měsíce.

Funkce pro řetězce

  • Je možné kombinovat více polí pomocí operátorů zřetězení a konstant Visual Basic. Následující výraz vrátí dvě pole, každé na samostatném řádku ve stejném textovém poli:

    =Fields!FirstName.Value & vbCrLf & Fields!LastName.Value 
    
  • Pomocí funkce Format lze formátovat data a čísla v řetězci. Následující výraz zobrazí hodnoty parametrů StartDate a EndDate ve dlouhém formátu data:

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

    Jestliže textové pole obsahuje pouze datum nebo číslo, neměli byste v něm nastavit formátování pomocí funkce Format, ale pomocí vlastnosti textového pole Format.

  • Funkce Right, Len a InStr umožňují vrácení dílčího řetězce. Mohou například zkrátit řetězec DOMÉNA\uživatelské_jméno jen na uživatelské jméno. Následující výraz vrátí část řetězce napravo od znaku lomítka (\) z parametru s názvem User:

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

    Výsledná hodnota následujícího výrazu se shoduje s hodnotou předchozího výrazu. Místo funkcí Visual Basic však používá členy třídy .NET FrameworkSystem..::..String:

    =Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)
    
  • Je možné zobrazit vybrané hodnoty parametru s více hodnotami. V následujícím příkladu jsou pomocí funkce Join zřetězeny vybrané hodnoty parametru MySelection do jediného řetězce, který lze nastavit jako výraz pro hodnotu textového pole položky sestavy:

    = Join(Parameters!MySelection.Value)
    
  • Funkce Regex.NET FrameworkSystem.Text.RegularExpressions jsou užitečné při změně formátu existujících řetězců, například při formátování telefonního čísla. V následujícím výrazu je pomocí funkce Replace změněn formát deseticiferného telefonního čísla v poli z formátu nnn-nnn-nnnn na formát (nnn) nnn-nnnn:

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

Funkce pro převod

Funkce Visual Basic lze použít k převodu pole z jednoho datového typu na jiný. Funkce pro převod můžete využít při převodu výchozího datového typu pole na datový typ potřebný k výpočtům nebo ke kombinaci s textem. 

  • Následující výraz umožňuje převést konstantu 500 na desetinné číslo za účelem jeho porovnání s peněžním datovým typem Transact-SQL v poli Hodnota pro výraz filtru. 

    =CDec(500)
    
  • Následující výraz zobrazí počet hodnot vybraných pro parametr s více hodnotami MySelection.

    =CStr(Parameters!MySelection.Count)
    

Rozhodovací funkce

  • Funkce Iif vrací jednu ze dvou hodnot v závislosti na tom, zda je výraz pravdivý. V následujícím výrazu je pomocí funkce Iif vrácena logická hodnota True v případě, že prametr LineTotal překročí hodnotu 100. V opačném případě je vrácena hodnota False:

    =IIF(Fields!LineTotal.Value > 100, True, False)
    
  • Pomocí několika funkcí IIF (označované také jako vnořené funkce IIF) je možné vrátit jednu ze tří hodnot v závislosti na hodnotě PctComplete. Následující výraz lze umístit do barevné výplně textového pole za účelem změny barvy pozadí v závislosti na hodnotě textového pole.

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

    Hodnoty vyšší nebo rovny hodnotě 10 se zobrazí se zeleným pozadím, hodnoty v rozmezí 1 až 9 se zobrazí s modrým pozadím a hodnoty nižší než 1 se zobrazí s červeným pozadím.

  • Jiný způsob dosažení uvedeného výsledku představuje použití funkce Switch. Funkce Switch je vhodná v případě, že je nutné otestovat nejméně tři podmínky. Funkce Switch vrátí hodnotu přidruženou k prvnímu výrazu v řadě, která je vyhodnocena jako pravdivá:

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

    Hodnoty vyšší nebo rovny hodnotě 10 se zobrazí se zeleným pozadím, hodnoty v rozmezí 1 až 9 se zobrazí s modrým pozadím, hodnoty rovny hodnotě 1 se zobrazí se žlutým pozadím a hodnoty 0 a nižší se zobrazí s červeným pozadím.

  • Můžete otestovat hodnotu pole ImportantDate, přičemž je vrácena červená barva, pokud je datum starší než jeden týden. V opačném případě je vrácena modrá barva. Pomocí následujícího výrazu lze řídit vlastnost pro barvu textového pole položky sestavy:

    =IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")
    
  • Můžete otestovat hodnotu pole PhoneNumber, přičemž je vrácen řetězec Prázdné, pokud je rovno hodnotě null (Nothing v jazyce Visual Basic). V opačném případě je vrácena hodnota telefonního čísla. Pomocí následujícího výrazu lze řídit hodnotu textového pole položky sestavy.

    =IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)
    
  • Můžete otestovat hodnotu pole Department, přičemž je vrácen název podsestavy nebo hodnota null (Nothing v jazyce Visual Basic). Tento výraz lze použít pro podmíněné podsestavy sestav podrobností.

    =IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)
    
  • Můžete otestovat, zda je pole nastaveno na hodnotu null. Pomocí následujícího výrazu lze řídit vlastnost Hidden pro obrázkovou položku sestavy: V následujícím příkladu se obrázek určený polem [LargePhoto] zobrazí pouze v případě, že pole není nastaveno na hodnotu null.

    =IIF(IsNothing(Fields!LargePhoto.Value),True,False)
    

Funkce sestavy

Reporting Services nabízí další funkce sestavy, které lze použít při práci s daty v sestavě. Tato část obsahuje příklady dvou z uvedených funkcí. Další informace o funkcích sestavy a jejich příklady naleznete v tématu Informace o agregačních funkcích (Tvůrce sestav 3.0).

Součet

  • Funkce Sum umožňuje sečíst hodnoty ve skupině nebo oblasti dat. Tato funkce může být užitečná v záhlaví nebo zápatí skupiny. Následující výraz umožňuje zobrazit součet dat ve skupině či oblasti dat s názvem Order (Objednávka):

    =Sum(Fields!LineTotal.Value, "Order")
    
  • Funkci Sum je také možné využít při podmíněných výpočtech agregací. Jestliže například datová sada obsahuje pole s názvem State (Stav) s možnými hodnotami Not Started (Nezahájeno), Started (Zahájeno) a Finished (Dokončeno), bude pomocí následujícího výrazu po jeho vložení do záhlaví skupiny vypočten agregovaný součet pouze pro hodnotu Finished:

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

RowNumber

  • Pokud je funkce RowNumber použita v textovém poli v rámci oblasti dat, zobrazuje počet řádků každé instance textového pole, která daný výraz obsahuje. Tuto funkci lze využít při číslování řádků v tabulce. Zároveň může být vhodná i pro složitější úlohy, jako je nastavení konců stránek na základě počtu řádků. Další informace naleznete v části Konce stránek tohoto tématu.

    Rozsah zadaný pro funkci RowNumber řídí začátek nového číslování. Klíčové slovo Nothing označuje, že funkce zahájí číslování na prvním řádku první oblasti dat. Chcete-li zahájit číslování ve vnořených oblastech dat, zadejte název příslušné oblasti dat. Jestliže chcete číslování zahájit v rámci skupiny, zadejte název příslušné skupiny.

    =RowNumber(Nothing)
    

Pomocí výrazů můžete ovlivnit vzhled dat v sestavě. Je například možné zobrazit hodnoty dvou polí v jediném textovém poli, zobrazit informace o sestavě nebo upravit způsob vložení konců stránek do sestavy.

Záhlaví a zápatí stránky

Při navrhování sestavy budete pravděpodobně chtít v jejím zápatí zobrazit název sestavy a číslo stránky. Uvedený krok vám umožní následující výrazy:

  • Následující výraz umožňuje zobrazit název sestavy a čas, kdy byla spuštěna. Lze jej umístit do textového pole v zápatí či těle sestavy. Čas je naformátován pomocí formátovacího řetězce .NET Framework na krátký formát data:

    =Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")
    
  • Pokud vložíte následující výraz do textového pole v zápatí sestavy, zobrazí číslo stránky a celkový počet stránek v sestavě:

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

Následující příklady popisují způsob zobrazení první a poslední hodnoty stránky v záhlaví stránky podobně jako u výpisu adresáře. Příklad předpokládá oblast dat, která obsahuje textové pole s názvem LastName.

  • Následující výraz umožňuje v případě umístění v textovém poli na levé straně záhlaví stránky zobrazit první hodnotu textového pole LastName na stránce:

    =First(ReportItems("LastName").Value)
    
  • Následující výraz umožňuje v případě umístění v textovém poli na pravé straně záhlaví stránky zobrazit poslední hodnotu textového pole LastName na stránce:

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

Následující příklad popisuje způsob zobrazení celkového součtu stránky. Příklad předpokládá oblast dat, která obsahuje textové pole s názvem Cost.

  • Jestliže vložíte následující výraz do záhlaví či zápatí stránky, zobrazí součet hodnot v textovém poli Cost stránky:

    =Sum(ReportItems("Cost").Value)
    
Poznámka Poznámka

V záhlaví či zápatí stránky je možné odkazovat pouze na jednu položku sestavy v rámci jednoho výrazu. Ve výrazech záhlaví a zápatí stránky zároveň můžete odkazovat na název textového pole, ale nikoli na skutečný datový výraz v rámci daného textového pole.

Konce stránek

V některých sestavách budete pravděpodobně chtít vložit konec stránky za určitý počet řádků namísto (nebo kromě) konce za skupinami či za položkami sestavy. Chcete-li uvedený krok provést, vytvořte skupinu obsahující požadované skupiny nebo záznamy podrobností, připojte ke skupině konec stránky a pak k ní připojte skupinový výraz na základě určitého počtu řádků.

  • Následující výraz umožňuje v případě umístění ve skupinovém výrazu přiřadit číslo každé sadě 25 řádků. Jakmile je pro skupinu definován konec stránky, bude výsledkem daného výrazu vložení konce stránky po každých 25 řádcích.

    =Ceiling(RowNumber(Nothing)/25)
    

    Pokud uživateli chcete umožnit nastavení hodnoty pro počet řádků na stránce, vytvořte parametr s názvem RowsPerPage a založte na něm skupinový výraz, jak ukazuje následující výraz:

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

    Další informace o nastavení konců stránek u skupiny naleznete v tématu Postup: Přidání zalomení stránky (Tvůrce sestav 3.0).

Výrazy neslouží jen k zobrazení dat v textových polích. Lze je také využít ke změně způsobu použití vlastností u položek sestavy. Můžete změnit informace o stylu položky sestavy nebo je možné změnit viditelnost této položky.

Formátování

  • Jestliže použijete následující výraz ve vlastnosti Color textového pole, změní barvu textu v závislosti na hodnotě pole Profit:

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

    Můžete také použít proměnnou Me objektu Visual Basic. Tato proměnná představuje jiný způsob odkazování na hodnotu textového pole.

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

  • Následující výraz umožňuje v případě použití ve vlastnosti BackgroundColor položky sestavy v oblasti dat měnit barvu pozadí každého řádku ze světle zelené na bílou a naopak:

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

    Pokud používáte výraz pro zadaný rozsah, může být nutné označit datovou sadu pro agregační funkci:

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

Dostupné barvy pochází z výčtu .NET FrameworkKnownColor.

Barvy grafu

Chcete-li zadat barvy do tvarového grafu, můžete použít vlastní kód pro ovládání pořadí, v jakém jsou barvy mapovány na hodnoty datových bodů. To pomůže zajistit používání konzistentních barev pro více grafů, které mají stejné skupiny kategorií. Další informace naleznete v tématu Postup: Zadání konzistentních barev napříč více tvarovými grafy (Tvůrce sestav 3.0).

Viditelnost

Položky v sestavě můžete zobrazit či skrýt pomocí vlastností viditelnosti položky sestavy. V oblasti dat, jako je tabulka, můžete při prvním zobrazení skrýt řádky s podrobnostmi na základě hodnoty ve výrazu.

  • Jestliže použijete následující výraz pro počáteční viditelnost řádků podrobností ve skupině, zobrazí řádky s podrobnostmi pro veškerý prodej přesahující 90 procent v poli PctQuota:

    =Iif(Fields!PctQuota.Value>.9, False, True)
    
  • Pokud následující výraz nastavíte ve vlastnosti Hidden tabulky, zobrazí se daná tabulka pouze v případě, že obsahuje více než 12 řádků:

    =IIF(CountRows()>12,true,false)
    
  • Jestliže následující výraz nastavíte ve vlastnosti Hidden sloupce, zobrazí se daný sloupec pouze v případě, že datová sada sestavy obsahuje pole po získání dat ze zdroje dat:

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

Adresy URL

Můžete přizpůsobit adresy URL pomocí dat sestavy a zároveň podmíněně řídit, zda budou tyto adresy přidány jako akce pro textové pole.

  • Pokud následující výraz použijete jako akci u textového pole, generuje přizpůsobenou adresu URL, která jako parametr adresy URL určuje pole datové sady s názvem EmployeeID.

    ="http://adventure-works/MyInfo?ID=" & Fields!EmployeeID.Value
    

    Další informace naleznete v tématu Postup: Přidání hypertextového odkazu na adresu URL (Tvůrce sestav 3.0).

  • Následující výraz podmíněně řídí přidání adresy URL do textového pole. Tento výraz závisí na parametru s názvem IncludeURLs, který uživateli umožňuje rozhodnout, zda chce do sestavy zahrnout aktivní adresy URL. Výraz je nastaven jako akce u textového pole. Jestliže nastavíte parametr na hodnotu False (Nepravda) a sestavu zobrazíte, můžete ji exportovat do aplikace Microsoft Excel bez hypertextových odkazů.

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

Výrazy lze využít při práci s daty použitými v sestavě. Můžete odkazovat na parametry a další informace sestavy. Dokonce je možné změnit dotaz umožňující získání dat pro sestavu.

Parametry

Výrazy můžete použít v parametru za účelem nastavení různé výchozí hodnoty parametru. Pomocí parametru je například možné filtrovat data pro určitého uživatele na základě jeho ID, které je použito pro spuštění sestavy.

  • Pokud použijete následující výraz jako výchozí hodnotu parametru, bude získávat ID uživatele spouštějícího sestavu:

    =User!UserID
    
  • Chcete-li na parametr odkazovat v parametru dotazu, výrazu filtru, textovém poli nebo jiné oblasti sestavy, použijte globální kolekci Parameters. Tento příklad předpokládá parametr s názvem Department:

    =Parameters!Department.Value
    
  • Parametry lze vytvořit v sestavě a nastavit je jako skryté. Po spuštění sestavy na serveru sestav se parametr nezobrazí na panelu nástrojů a čtenář sestavy nebude moci změnit výchozí hodnotu. Skrytý parametr nastavený na výchozí hodnotu je možné použít jako vlastní konstantu. Tuto hodnotu můžete použít v libovolném výrazu, včetně výrazu pole. Následující výraz označuje pole určené výchozí hodnotou parametru s názvem ParameterField:

    =Fields(Parameters!ParameterField.Value).Value
    

V sestavě můžete použít vlastní kód. Vlastní kód je vložen v sestavě nebo uložen ve vlastním sestavení používaném v sestavě. Další informace o vlastním kódu najdete v tématu Používání vlastních odkazů na kód ve výrazu (Tvůrce sestav 3.0).

  • V následujícím příkladu je volána metoda vloženého kódu s názvem ToUSD, která umožňuje převést hodnotu pole StandardCost na hodnotu v dolarech:

    =Code.ToUSD(Fields!StandardCost.Value)
    
  • V následujícím příkladu se seznámíte se způsobem definování některých vlastních konstant a proměnných.

    [Visual Basic]

    Public Const MyNote = "Authored by Bob"
    Public Const NCopies As Int32 = 2
    Public Dim  MyVersion As String = "123.456"
    Public Dim MyDoubleVersion As Double = 123.456
    

    Přestože se vlastní konstanty a proměnné nezobrazují v zobrazení konstant editoru výrazů (najdete zde pouze integrované konstanty), můžete na ně vložit odkazy z libovolného výrazu, jak ukazují následující příklady. Jedná se o varianty.

    [Visual Basic]

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

Nahrazení textu v poli při spuštění

V následujícím příkladu je volána vložená metoda s názvem FixSpelling, která slovem Bicycle (Kolo) nahrazuje všechny výskyty textu Bike (Bicykl) v rámci podkategorie SubCategory.Value.

=Code.FixSpelling(Fields!SubCategory.Value)

Jestliže následující kód vložíte do definice sestavy, zobrazí implementaci metody FixSpelling. Tento příklad ukazuje způsob odkazování na třídu .NET FrameworkSystem.Text..::..StringBuilder. Další informace naleznete v tématu Postup: Přidání kódu do sestavy (Tvůrce sestav 3.0).

Public Function FixSpelling(ByVal s As String) As String
   Dim strBuilder As New System.Text.StringBuilder(s)
   If s.Contains("Bike") Then
      strBuilder.Replace("Bike", "Bicycle")
      Return strBuilder.ToString()
      Else : Return s
   End If
End Function

Potlačení hodnoty null nebo hodnoty nula při spuštění

Některé hodnoty výrazu mohou být v době zpracování sestavy vyhodnoceny jako hodnoty null nebo nedefinované hodnoty. Uvedená situace může způsobit chyby spuštění, v jejichž důsledku se v textovém poli namísto vyhodnoceného výrazu zobrazí text #Chyba. Funkce IIF je na takové chování zvláště citlivá, protože na rozdíl od příkazu If-Then-Else je každá část příkazu IIF vyhodnocena (včetně volání funkcí) ještě před předáním do procesu, který testuje hodnoty true nebo false. Příkaz =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) zobrazí ve vygenerované sestavě hodnotu #Chyba v případě hodnoty NOTHING u položky Fields!Sales.Value.

Chcete-li se uvedené situaci vyhnout, zvolte některý z následujících přístupů:

  • Pokud je hodnota pole B rovna 0 nebo není definována, nastavte čitatel na hodnotu 0 a jmenovatel na hodnotu 1. V opačném případě nastavte čitatel na hodnotu pole A a jmenovatel na hodnotu pole B.

    =IIF(Field!B.Value=0, 0, Field!A.Value / IIF(Field!B.Value =0, 1, Field!B.Value))
    
  • Nastavte vrácení hodnoty výrazu pomocí funkce vlastního kódu. Následující příklad vrátí procentuální rozdíl mezi aktuální hodnotou a předchozí hodnotou. Tímto způsobem lze v jazyce Visual Basic vypočítat rozdíl mezi libovolnými dvěma po sobě následujícími hodnotami a zpracovat hraniční případ prvního porovnání (pokud neexistuje předchozí hodnota) a případy, kdy je předchozí či aktuální hodnota rovna hodnotě null (Nothing).

    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
    

    Následující výraz ukazuje způsob volání vlastního kódu z textového pole:

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

    Tímto způsobem se vyhnete výjimkám při spuštění a budete moci použít výraz, jako je =IIF(Me.Value < 0, "red", "black"), ve vlastnosti Color textového pole za účelem podmíněného zobrazení textu na základě daných hodnot.

Obsah vytvořený komunitou

Přidat
Zobrazit: