Udostępnij za pośrednictwem


Przykłady wyrażeń (program Report Builder 3.0 i usługi SSRS)

Wyrażenia są często używane w raportach w celu sterowania zawartością oraz wyglądem raportu.Wyrażenia są pisane w języku Microsoft Visual Basic i można w nich używać funkcji wbudowanych, kodu niestandardowego, zmiennych raportu i grupy oraz zmiennych zdefiniowanych przez użytkownika.Wyrażenia rozpoczynają się od znaku równości (=).Aby uzyskać więcej informacji dotyczących edytora wyrażeń oraz typów odwołań, które można uwzględniać, zobacz tematy Używanie wyrażeń (program Report Builder 3.0 i usługi SSRS) i Jak Dodać wyrażenie (Konstruktora raportów 3.0 i SSRS).

W tym temacie przedstawiono przykłady wyrażeń, których można użyć w celu wykonania typowych zadań w raporcie.

  • Funkcje języka Visual Basic. Przykłady funkcji języka Visual Basic umożliwiających wykonywanie operacji na datach i ciągach, funkcji konwersji oraz funkcji warunkowych.

  • Funkcje raportu. Przykłady funkcji agregujących i innych wbudowanych funkcji raportu.

  • Wygląd danych raportu. Przykłady zmieniania wyglądu raportu.

  • Właściwości. Przykłady ustawiania właściwości elementów raportu w celu sterowania formatem lub widocznością.

  • Parametry. Przykłady użycia parametrów w wyrażeniu.

  • Kod niestandardowy. Przykłady osadzonego kodu niestandardowego.

Przykłady wyrażeń przystosowanych do określonych zastosowań znajdują się w następujących tematach:

Aby uzyskać więcej informacji dotyczących wyrażeń prostych i złożonych, miejsc, w których można używać wyrażeń, oraz typów odwołań, które można umieszczać w wyrażeniach, zobacz tematy w sekcji Wyrażenia (program Report Builder 3.0 i usługi SSRS).Aby uzyskać więcej informacji dotyczących kontekstu, w którym są obliczane wyrażenia służące do obliczania agregacji, zobacz temat Opis zakresu wyrażeń dla sum, wartości zagregowanych i kolekcji wbudowanych (program Report Builder 3.0 i usługi SSRS).

Aby dowiedzieć się, jak pisać wyrażenia, w których jest używanych wiele funkcji i operatorów, które są również używane w przykładowych wyrażeniach w tym temacie, ale w kontekście pisania raportu, zobacz temat Samouczek: Wprowadzenie wyrażenia.

Edytor wyrażeń zawiera hierarchiczny widok funkcji wbudowanych.Po wybraniu funkcji w okienku Wartości jest wyświetlany przykład kodu.Aby uzyskać więcej informacji, zobacz temat Okno dialogowe Wyrażenie lub Okno dialogowe Wyrażenie (program Report Builder 3.0).

W przypadku użycia projektanta zapytań modelu raportów w celu zaprojektowania zapytania zestawu danych, w którym jako źródło danych jest używany model raportu, zamiast wyrażeń będą używane formuły.Te formuły ułatwią określenie danych raportu przy użyciu obliczeń niestandardowych zintegrowanych w zapytaniu określającym, które dane mają zostać zwrócone ze źródła danych modelu raportu.Aby uzyskać więcej informacji, zobacz temat Używanie formuł w zapytaniach modelu raportu (program Report Builder 3.0 i usługi SSRS).

Ostrzeżenie

Program Business Intelligence Development Studio umożliwia tworzenie i modyfikowanie definicji raportów (rdl) przy użyciu programów Report Builder 3.0 i Report Designer. Każde ze środowisk obsługuje różne sposoby tworzenia, otwierania i zapisywania raportów oraz powiązanych z nimi elementów. Aby uzyskać więcej informacji, zobacz temat Projektowanie raportów w programach Report Designer i Report Builder 3.0 (usługi SSRS) w witrynie sieci Web microsoft.com.

Funkcje

Wiele wyrażeń w raporcie zawiera funkcje.Za pomocą tych funkcji można formatować dane, stosować logikę i uzyskiwać dostęp do metadanych raportu.Można pisać wyrażenia, w których będą używane funkcje z biblioteki wykonawczej języka Microsoft Visual Basic oraz z obszarów nazw System.Convert i System.Math.Można dodawać odwołania do funkcji z innych zestawów lub kodu niestandardowego.Możliwe jest także używanie klas programu Microsoft .NET Framework, w tym System.Text.RegularExpressions.

Funkcje języka Visual Basic

Za pomocą funkcji języka Visual Basic można wykonywać operacje na danych wyświetlanych w polach tekstowych lub używanych w parametrach, właściwościach lub innych obszarach raportu.W tej sekcji zamieszczono przykłady pokazujące niektóre z tych funkcji.Aby uzyskać więcej informacji, zobacz Elementy członkowskie biblioteki wykonawczej języka Visual Basic w witrynie MSDN.

Program .NET Framework oferuje wiele niestandardowych opcji formatu, na przykład dla określonych formatów dat.Aby uzyskać więcej informacji, zobacz temat Typy formatowania w witrynie MSDN.

Funkcje matematyczne

  • Funkcja Round umożliwia zaokrąglanie liczb do najbliższej liczby całkowitej.Poniższe wyrażenie zaokrągla wartość 1,3 do liczby 1:

    = Round(1.3)
    

    Można także napisać wyrażenie w celu zaokrąglenia wartości do określonej wielokrotności, które będzie działać podobnie jak funkcja MRound w programie Excel.Wartość zostanie pomnożona przez czynnik tworzący liczbę całkowitą, wynikowa liczba zostanie zaokrąglona, a następnie podzielona przez ten sam współczynnik.Na przykład aby zaokrąglić wartość 1,3 do najbliższej wielokrotności 0,2 (1,4), należy użyć następującego wyrażenia:

    = Round(1.3*5)/5
    

Funkcje daty

  • Funkcja Today zwraca bieżącą datę.Tego wyrażenia można użyć w polu tekstowym, aby wyświetlić datę w raporcie, albo w parametrze, aby filtrować dane na podstawie bieżącej daty.

    =Today()
    
  • Funkcja DateAdd jest użyteczna w sytuacjach, gdy trzeba dostarczyć zakres dat na podstawie pojedynczego parametru.Poniższe wyrażenie zwraca datę, która wypada sześć miesięcy po dacie podanej w parametrze o nazwie StartDate.

    =DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
    
  • Funkcja Year wyświetla rok z określonej daty.Można jej używać w celu grupowania dat lub wyświetlania roku jako etykiety zbioru dat.To wyrażenie dostarcza rok dla danej grupy dat zamówień sprzedaży.Funkcji Month i innych funkcji można również używać w celu wykonywania operacji na datach.Aby uzyskać więcej informacji, zobacz dokumentację języka Visual Basic.

    =Year(Fields!OrderDate.Value)
    
  • Funkcje można łączyć w wyrażeniu w celu dostosowania formatu.Poniższe wyrażenie zmienia format daty z format miesiąc-dzień-rok na format miesiąc-tydzień-numer tygodnia.Na przykład data 12/23/2009 odpowiada wartości 3 tygodnia grudnia (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
    

    Gdy to wyrażenie będzie używane jako pole obliczeniowe w zestawie danych, za jego pomocą będzie można agregować wartości na wykresie według tygodni w każdym miesiącu.

Funkcje ciągów

  • Operatory łączenia oraz stałe języka Visual Basic umożliwiają łączenie kilku pól.Poniższe wyrażenie zwraca dwa pola, z których każde znajduje się w osobnym wierszu jednego pola tekstowego:

    =Fields!FirstName.Value & vbCrLf & Fields!LastName.Value 
    
  • Funkcja Format umożliwia formatowanie dat i liczb znajdujących się w ciągu.Poniższe wyrażenie wyświetla wartości parametrów StartDate i EndDate w formacie daty długiej:

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

    Jeśli pole tekstowe zawiera tylko datę lub liczbę, w celu zastosowania formatowania należy użyć właściwości Format pola tekstowego, a nie funkcji Format.

  • Funkcje Right, Len i InStr są użyteczne w sytuacjach, gdy trzeba zwrócić podciąg, na przykład gdy trzeba przyciąć ciąg DOMAIN\username tylko do części nazwa_użytkownika.Poniższe wyrażenie zwraca część ciągu, która znajduje się po prawej stronie znaku ukośnika odwrotnego (\), zawartego w parametrze o nazwie User.

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

    Poniższe wyrażenie zwraca taką samą wartość jak poprzednie, ale wynik jest tworzony za pomocą elementów członkowskich klasy .NET Framework System.String, a nie funkcji języka Visual Basic:

    =Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)
    
  • Można wyświetlić wybrane wartości z parametru wielowartościowego.W poniższym przykładzie użyto funkcji Join w celu połączenia wybranych wartości parametru MySelection w jeden ciąg, który można ustawić jako wyrażenie wartości pola tekstowego w elemencie raportu:

    = Join(Parameters!MySelection.Value)
    
  • Funkcje Regex z klasy System.Text.RegularExpressions programu .NET Framework są użyteczne w sytuacjach, gdy trzeba zmienić format istniejących ciągów, na przykład formatowanie numeru telefonu.W poniższym wyrażeniu użyto funkcji Replace w celu zmiany formatu dziesięciocyfrowego numeru telefonu w polu z formatu „nnn-nnn-nnnn” na format „(nnn) nnn-nnnn”:

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

    Ostrzeżenie

    Sprawdź, czy wartość Fields!Phone.Value nie zawiera niepotrzebnych spacji i jest typu String.

Funkcja Lookup

  • Określając pole klucza, można użyć funkcji Lookup w celu pobrania wartości z zestawu danych dla relacji jeden-do-jednego, na przykład pary klucz-wartość.Poniższe wyrażenie wyświetla nazwę produktu z zestawu danych, do której pasuje podany identyfikator produktu:

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

Funkcja LookupSet

  • Określając pole klucza, można użyć funkcji LookupSet w celu pobrania zestawu wartości z zestawu danych dla relacji jeden-do-wielu.Na przykład osoba może mieć przypisanych wiele numerów telefonów.W poniższym przykładzie przyjęto założenie, że w każdym wierszu zestawu danych PhoneList znajduje się identyfikator osoby i numer telefonu.Funkcja LookupSet zwraca tablicę wartości.Poniższe wyrażenie łączy zwracane wartości w jeden ciąg i wyświetla listę numerów telefonów dla osoby określonej przez wartość ContactID:

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

Funkcje konwersji

Funkcje konwersji języka Visual Basic służą do konwertowania typów danych w polach.Za pomocą funkcji konwersji można przekonwertować domyślny typ danych pola na typ danych wymagany do wykonania obliczeń lub połączenia tekstu.

  • Poniższe wyrażenie konwertuje stałą o wartości 500 na wartość typu dziesiętnego w celu porównania jej z danymi języka Transact-SQL typu walutowego w polu Wartość wyrażenia filtru. 

    =CDec(500)
    
  • Następujące wyrażenie wyświetla liczbę wartości wybranych dla parametru wielowartościowego MySelection.

    =CStr(Parameters!MySelection.Count)
    

Funkcje decyzji

  • Funkcja Iif zwraca jedną z dwóch wartości, w zależności od tego, czy wyrażenie jest prawdziwe czy nie.W poniższym wyrażeniu funkcja Iif zwraca wartość logiczną True, jeśli wartość LineTotal jest większa niż 100.W przeciwnym razie funkcja zwraca wartość False:

    =IIF(Fields!LineTotal.Value > 100, True, False)
    
  • Używając wielu funkcji IIF (nazywanych także „zagnieżdżonymi funkcjami IIF”), można zwrócić jedną z trzech wartości, w zależności od wartości PctComplete.Poniższe wyrażenie można umieścić we właściwości koloru wypełnienia pola tekstowego, aby kolor tła był zmieniany w zależności od wartości w polu tekstowym.

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

    Wartości większe lub równe 10 będą wyświetlane na zielonym tle, wartości z zakresu od 1 do 9 na niebieskim tle, a wartości mniejsze od 1 na czerwonym tle.

  • Inną metodę uzyskania tego samego efektu stanowi użycie funkcji Switch.Funkcja Switch jest użyteczna w sytuacjach, gdy trzeba przetestować co najmniej trzy warunki.Funkcja Switch zwraca wartość skojarzoną z pierwszym wyrażeniem w serii, które będzie prawdziwe:

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

    Wartości większe lub równe 10 będą wyświetlane na zielonym tle, wartości z zakresu od 1 do 9 będą wyświetlane na niebieskim tle, wartość równa 1 będzie wyświetlana na żółtym tle, a wartości mniejsze lub równe 0 będą wyświetlane na czerwonym tle.

  • Po przetestowaniu wartości pola ImportantDate jest zwracana wartość „Red”, jeśli data wypada co najmniej 8 dni temu, lub wartość „Blue” w innym przypadku.Za pomocą tego wyrażenia można sterować właściwością Kolor pola tekstowego w elemencie raportu:

    =IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")
    
  • Po przetestowaniu wartości pola PhoneNumber jest zwracana wartość „No Value”, jeśli w tym polu znajduje się wartość null (Nothing w języku Visual Basic); w przeciwnym razie jest zwracany numer telefonu.Za pomocą tego wyrażenia można sterować wartością pola tekstowego w elemencie raportu.

    =IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)
    
  • Po przetestowaniu wartości pola Department jest zwracana nazwa podraportu lub wartość null (Nothing w języku Visual Basic).Tego wyrażenia można używać w celu tworzenia warunkowych podraportów szczegółowych.

    =IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)
    
  • Sprawdzenie, czy pole ma wartość null.Za pomocą tego wyrażenia można sterować właściwością Hidden obrazu będącego elementem raportu.W poniższym przykładzie obraz określony przez pole [LargePhoto] jest wyświetlany tylko wtedy, gdy wartość w tym polu jest inna niż null.

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

Funkcje raportu

Do wyrażenia można dodać odwołanie do dodatkowych funkcji raportu, za pomocą których można wykonywać operacje na danych znajdujących się w raporcie.W tej sekcji zamieszczono przykłady dotyczące dwóch z tych funkcji.Aby uzyskać więcej informacji dotyczących funkcji raportu i zapoznać się z przykładami, zobacz Kompendium funkcji agregujących (program Report Builder 3.0 i usługi SSRS).

Sum

  • Funkcja Sum umożliwia sumowanie wartości w grupie lub obszarze danych.Ta funkcja może być przydatna w nagłówku lub stopce grupy.Poniższe wyrażenie wyświetla sumę danych w grupie lub obszarze danych Order:

    =Sum(Fields!LineTotal.Value, "Order")
    
  • Funkcji Sum można też używać w celu wykonywania warunkowych obliczeń agregujących.Na przykład jeśli zestaw danych zawiera pole o nazwie State, które może zawierać wartości Not Started, Started, Finished, poniższe wyrażenie, jeśli zostanie umieszczone w nagłówku grupy, obliczy zagregowaną sumę tylko dla wartości Finished:

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

RowNumber

  • Użycie funkcji RowNumber w polu tekstowym w obszarze danych spowoduje wyświetlenie liczby wierszy dla każdego wystąpienia pola tekstowego, w którym znajduje się wyrażenie.Ta funkcja może być przydatna w sytuacji, gdy trzeba ponumerować wiersze w tabeli.Można jej też używać w celu wykonywania bardziej skomplikowanych zadań, takich jak wstawianie podziałów strony na podstawie liczby wierszy.Aby uzyskać więcej informacji, zobacz sekcję Podziały strony w tym temacie.

    Zakres określony dla funkcji RowNumber wskazuje, kiedy rozpocznie się ponowne numerowanie.Słowo kluczowe Nothing wskazuje, że funkcja rozpocznie zliczanie od pierwszego wiersza w najbardziej zewnętrznym obszarze danych.Aby rozpocząć zliczanie w obrębie zagnieżdżonych obszarów danych, należy użyć nazwy obszaru danych.Aby rozpocząć zliczanie w obrębie grupy, należy użyć nazwy grupy.

    =RowNumber(Nothing)
    

Wygląd danych raportu

Za pomocą wyrażeń można określić wygląd danych w raporcie.Na przykład można wyświetlić wartości z dwóch pól w jednym polu tekstowym, wyświetlić informacje o raporcie lub określić sposób wstawiania podziałów strony do raportu.

Nagłówki i stopki stron

Podczas projektowania raportu można dojść do wniosku, że warto wyświetlić w stopce raportu nazwę raportu i numer strony.W tym celu można użyć następujących wyrażeń:

  • Poniższe wyrażenie dostarcza nazwę raportu oraz godzinę jego uruchomienia.Można je umieścić w polu tekstowym w stopce lub treści raportu.Godzina jest formatowana za pomocą ciągu formatowania programu .NET Framework do formatu daty krótkiej:

    =Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")
    
  • Poniższe wyrażenie, umieszczone w polu tekstowym w stopce raportu, dostarcza numer strony oraz łączną liczbę stron w raporcie:

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

W poniższych przykładach opisano sposób wyświetlania w nagłówku strony pierwszej i ostatniej wartości ze strony, co przypomina sposób wyświetlania listy katalogów.W przykładzie przyjęto założenie, że obszar danych zawiera pole tekstowe o nazwie LastName.

  • Poniższe wyrażenie, umieszczone w polu tekstowym po lewej stronie nagłówka strony, dostarcza pierwszą wartość pola tekstowego LastName na stronie:

    =First(ReportItems("LastName").Value)
    
  • Poniższe wyrażenie, umieszczone w polu tekstowym po prawej stronie nagłówka strony, dostarcza ostatnią wartość pola tekstowego LastName na stronie:

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

W poniższym przykładzie opisano sposób wyświetlania łącznej liczby stron.W przykładzie przyjęto założenie, że obszar danych zawiera pole tekstowe o nazwie Cost.

  • Poniższe wyrażenie, umieszczone w nagłówku lub stopce strony, dostarcza sumę wartości w polu tekstowym Cost dla strony:

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

Ostrzeżenie

W nagłówku lub stopce strony w wyrażeniu można odwoływać się tylko do jednego elementu raportu.Wyrażenia nagłówka lub stopki strony mogą też zawierać odwołania do nazwy pola tekstowego, ale nie do rzeczywistego wyrażenia danych w polu tekstowym.

Podziały strony

W niektórych raportach może być konieczne umieszczenie podziału strony po określonej liczbie wierszy zamiast (lub oprócz) w grupach lub elementach raportu.W tym celu należy utworzyć grupę zawierającą odpowiednie grupy lub rekordy szczegółowe, dodać podział strony do grupy, a następnie dodać wyrażenie grupy służące do grupowania według określonej liczby wierszy.

  • Umieszczenie w wyrażeniu grupy poniższego wyrażenia spowoduje, że będzie ono przypisywać numer każdemu zestawowi 25 wierszy.Gdy zostanie zdefiniowany podział strony dla grupy, użycie tego wyrażenia spowoduje wstawianie podziału strony co 25 wierszy.

    =Ceiling(RowNumber(Nothing)/25)
    

    Aby umożliwić użytkownikowi ustawienie wartości odpowiadającej liczbie wierszy na stronie, należy utworzyć parametr o nazwie RowsPerPage i utworzyć wyrażenie grupy oparte na tym parametrze, tak jak pokazano w poniższym wyrażeniu:

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

    Aby uzyskać więcej informacji dotyczących ustawiania podziałów strony dla grupy, zobacz Jak Dodawanie podziału strony (Konstruktora raportów 3.0 i SSRS).

Właściwości

Wyrażenia służą nie tylko do wyświetlania danych w polach tekstowych.Za ich pomocą można również zmieniać sposób stosowania właściwości do elementów raportu.Można zmienić informacje dotyczące stylu elementu raportu albo zmienić jego widoczność.

Formatowanie

  • Użycie poniższego wyrażenia we właściwości Color pola tekstowego spowoduje, że kolor tekstu będzie się zmieniał w zależności od wartości pola Profit:

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

    Można także użyć zmiennej obiektu języka Visual Basic Me.Ta zmienna stanowi inny sposób odwoływania się do wartości pola tekstowego.

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

  • Użycie poniższego wyrażenia we właściwości BackgroundColor elementu raportu w obszarze danych spowoduje, że wiersze będą mieć na przemian tło w kolorze bladozielonym i białym:

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

    Jeśli wyrażenie ma być używane dla określonego zakresu, może być konieczne wskazanie zestawu danych dla funkcji agregującej:

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

Ostrzeżenie

Dostępne kolory pochodzą z wyliczenia KnownColor programu .NET Framework.

Kolory wykresu

Aby określić kolory wykresu kształtowego, można użyć kodu niestandardowego w celu sterowania kolejnością mapowania kolorów na wartości punktów danych.Dzięki temu będzie można używać spójnych kolorów na wielu wykresach zawierających takie same grupy kategorii.Aby uzyskać więcej informacji, zobacz temat Jak Określić spójne kolory w wielu wykresów kształtu (Konstruktora raportów 3.0 i SSRS).

Widoczność

Elementy w raporcie można pokazywać i ukrywać, używając właściwości widoczności elementu raportu.W obszarze danych, takim jak tabela, można początkowo ukryć wiersze szczegółów na podstawie wartości wyrażenia.

  • Użycie poniższego wyrażenia w celu określenia początkowej widoczności wierszy szczegółów w grupie spowoduje pokazanie wierszy szczegółów dotyczących wszystkich sprzedaży, dla których wartość w polu PctQuota będzie większa niż 90 procent:

    =Iif(Fields!PctQuota.Value>.9, False, True)
    
  • Ustawienie poniższego wyrażenia we właściwości Hidden tabeli spowoduje, że tabela będzie widoczna tylko wtedy, gdy będzie zawierać ponad 12 wierszy:

    =IIF(CountRows()>12,true,false)
    
  • Ustawienie poniższego wyrażenia we właściwości Ukryte kolumny spowoduje, że kolumna będzie widoczna tylko wtedy, gdy po pobraniu danych ze źródła danych w zestawie danych raportu będzie znajdować się pole:

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

Adresy URL

Używając danych raportu, można dostosowywać adresy URL. Można również warunkowo określać, czy adresy URL będą dodawane jako akcja pola tekstowego.

  • Użycie poniższego wyrażenia jako akcji w polu tekstowym spowoduje wygenerowanie dostosowanego adresu URL, w którym pole zestawu danych EmployeeID będzie parametrem adresu URL.

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

    Aby uzyskać więcej informacji, zobacz temat Jak Dodaj hiperłącze do adresu URL (Konstruktora raportów 3.0 i SSRS).

  • Poniższe wyrażenie warunkowo określa, czy adres URL ma zostać dodany do pola tekstowego.To wyrażenie jest zależne od parametru o nazwie IncludeURLs, który umożliwia użytkownikowi określenie, czy do raportu mają być włączane aktywne adresy URL.To wyrażenie jest ustawione jako akcja w polu tekstowym.Ustawienie dla tego parametru wartości False i wyświetlenie raportu umożliwia wyeksportowanie raportu do programu Microsoft Excel bez hiperłączy.

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

Dane raportu

Za pomocą wyrażeń można wykonywać operacje na danych używanych w raporcie.Można tworzyć odwołania do parametrów i innych informacji raportu.Można nawet zmienić zapytanie służące do pobierania danych do raportu.

Parametry

Używając wyrażeń w parametrze, można zmienić jego wartość domyślną.Na przykład za pomocą parametru można filtrować dane dla określonego użytkownika na podstawie identyfikatora użytkownika, którego użyto w celu uruchomienia raportu.

  • Gdy poniższe wyrażenie będzie używane jako wartość domyślna parametru, będzie ono gromadzić identyfikatory użytkowników uruchamiających raport:

    =User!UserID
    
  • Aby odwoływać się do parametru w parametrze zapytania, wyrażeniu filtru, polu tekstowym lub innym obszarze raportu, należy użyć kolekcji globalnej Parameters.W tym przykładzie przyjęto założenie, że parametr ma nazwę Department:

    =Parameters!Department.Value
    
  • W raporcie można tworzyć parametry i ustawiać je jako ukryte.Gdy raport zostanie uruchomiony na serwerze raportów, parametr nie będzie widoczny na pasku narzędzi, a osoba czytająca raport nie będzie mogła zmienić jego wartości domyślnej.Parametru ukrytego, dla którego ustawiono wartość domyślną, można używać jako stałej niestandardowej.Tej wartości można użyć w dowolnym wyrażeniu, w tym w wyrażeniu pola.Poniższe wyrażenie identyfikuje pole określone przez wartość domyślną parametru o nazwie ParameterField:

    =Fields(Parameters!ParameterField.Value).Value
    

Kod niestandardowy

W raporcie można używać kodu niestandardowego.Kod niestandardowy jest osadzony w raporcie lub przechowywany w zestawie niestandardowym, który jest używany w raporcie.Aby uzyskać więcej informacji dotyczących kodu niestandardowego, zobacz Kod niestandardowy i odwołania do zestawów w wyrażeniach w Projektant raportów (SSRS).

  • W poniższym przykładzie pokazano wywołanie metody osadzonego kodu o nazwie ToUSD, która konwertuje wartość pola StandardCost na wartość w dolarach:

    =Code.ToUSD(Fields!StandardCost.Value)
    
  • W poniższym przykładzie pokazano sposób definiowania niestandardowych stałych i zmiennych.

    [Język 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
    

    Mimo że niestandardowe stałe i zmienne nie są widoczne w widoku stałych edytora wyrażeń (w którym są wyświetlane tylko stałe wbudowane), odwołania do nich można dodawać do dowolnych wyrażeń, tak jak pokazano w poniższych przykładach.Są one traktowane jak warianty.

    [Język Visual Basic]

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

Używanie zmiennych grupy w agregacji niestandardowej

Można zainicjować wartość zmiennej grupy, która jest lokalna dla określonego zakresu grupy, a następnie używać w wyrażeniach odwołań do tej zmiennej.Jednym ze sposobów użycia zmiennej grupy w kodzie niestandardowym jest implementacja agregacji niestandardowej.Aby uzyskać więcej informacji, zobacz temat Używanie zmiennych grupy w usługach Reporting Services 2008 w celu utworzenia agregacji niestandardowej.

Aby uzyskać więcej informacji dotyczącej zmiennych, zobacz temat Używanie odwołań do kolekcji zmiennych raportu i zmiennych grupy (program Report Builder i usługi SSRS).

Zamienianie tekstu w polu w czasie wykonywania

W poniższym przykładzie pokazano wywołanie osadzonej metody o nazwie FixSpelling, która zamienia wszystkie wystąpienia wyrazu „Bike” w polu SubCategory.Value na wyraz „Bicycle”.

=Code.FixSpelling(Fields!SubCategory.Value)

Osadzenie poniższego kodu w definicji raportu umożliwia pokazanie implementacji metody FixSpelling.W tym przykładzie pokazano sposób odwoływania się do klasy System.Text.StringBuilder programu .NET Framework.Aby uzyskać więcej informacji, zobacz temat Jak Dodawanie kodu do raportu (SSRS).

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

Pomijanie wartości null i zero w czasie wykonywania

W czasie przetwarzania raportu wynikiem obliczania niektórych wyrażeń może być wartość null lub wartość niezdefiniowana.Może to powodować błędy w czasie wykonywania, z powodu których w polu tekstowym będzie wyświetlany ciąg #Błąd zamiast wyniku wyrażenia.Na to zachowanie szczególnie wrażliwa jest funkcja IIF, ponieważ w przeciwieństwie do instrukcje If-Then-Else każda część instrukcji IIF jest obliczana (obejmuje to również wywołania funkcji) przed przejściem do procedury sprawdzającej, czy wynikiem jest wartość true czy false.Instrukcja =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) wygeneruje wartość #Błąd w renderowanym raporcie, jeśli wartość Fields!Sales.Value będzie równa NOTHING.

Aby uniknąć tego stanu, należy zastosować jedną z następujących strategii:

  • Jeśli wartość pola B będzie równa 0 lub będzie niezdefiniowana, należy ustawić licznik na 0, a mianownik na 1; w przeciwnym razie należy ustawić licznik na wartość pola A, a mianownik na wartość pola B.

    =IIF(Field!B.Value=0, 0, Field!A.Value / IIF(Field!B.Value =0, 1, Field!B.Value))
    
  • Należy użyć funkcji kodu niestandardowego, aby zwrócić wartość wyrażenia.W poniższym przykładzie jest zwracana procentowa różnica między wartością bieżącą a wartością poprzednią.Za pomocą tego kodu można obliczać różnicę między dwiema kolejnym wartościami. Obsługuje on przypadek graniczny pierwszego porównania (gdy nie ma wartości poprzedniej) oraz przypadki, w których poprzednia lub bieżąca wartość jest równa null (Nothing w języku 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
    

    Poniższy przykład pokazuje sposób wywoływania tego kodu niestandardowego z poziomu pola tekstowego:

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

    Pomaga to uniknąć wyjątków w czasie wykonywania.Teraz można używać wyrażeń, takich jak =IIF(Me.Value < 0, "red", "black"), we właściwości Color pola tekstowego w celu wyświetlania tekstu w zależności od tego, czy wartości są większe, czy mniejsze od zera.