Udostępnij za pośrednictwem


Przykłady wyrażeń (program Report Builder 2.0)

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 globalnych oraz zmiennych zdefiniowanych przez użytkownika.Aby uzyskać więcej informacji na temat edytora wyrażenie i typy odwołań, które można dołączyć zobacz Używanie wyrażeń (program Report Builder 2,0), a Jak Należy dodać wyrażenie (Konstruktora raportów 2.0).

W tym temacie przedstawiono przykłady wyrażeń, które mogą być używane do wykonywania 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 zagregowanych i innych funkcji wbudowanych raportu.

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

  • Właściwości   Przykłady ustawiania właściwości element raportu do formatu formantu lub widoczności.

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

  • Kod niestandardowy   Przykłady osadzonego kodu niestandardowego.

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.You can write expressions that use functions from the Microsoft Visual Basic run-time library, and from the Convert and Math namespaces.Można dodawać odwołania do funkcji z innych zestawów lub kodu niestandardowego.You can also use classes from the Microsoft .NET Framework, including RegularExpressions.Aby uzyskać więcej informacji na temat Visual Basicfunkcji, zobacz temat "Visual Basic Run-czas Library" w msdn.microsoft.com.

Funkcje języka Visual Basic

Można użyć Visual Basic funkcje do manipulowania danymi, które jest wyświetlane w polach tekstowych lub który jest używany dla parametrów, właściwości lub innych obszarów w raporcie. W tej sekcji zamieszczono przykłady pokazujące niektóre z tych funkcji.Aby uzyskać więcej informacji na temat Visual Basic funkcji, zobacz temat Visual Basic dokumentację.

Funkcje daty

  • The Today funkcja provides the current data. 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()
    
  • The DateAdd funkcja is useful for supplying a zakres of dates based on a single parameter. Następujące wyrażenie zawiera data, która jest sześć miesięcy po nazwie data zgodnie z parametrem StartDate.

    =DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
    
  • The Year funkcja displays the year for a particular data. 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.The Month funkcja and other functions can also be used to manipulate dates. Aby uzyskać więcej informacji, zobacz temat Visual Basic dokumentację.

    =Year(Fields!OrderDate.Value)
    

Funkcje ciągów

  • Łączenie wielu pole za pomocą operatorów łączenia tekstu i Visual Basic stałe. 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 
    
  • Formatowanie dat i liczb w ciąg z Format Funkcja. Następujące wyrażenie wyświetla wartości StartDate i EndDate Parametry w formacie data długiej:

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

    Jeśli pole tekstowe zawiera tylko data lub numeru, należy użyć Format właściwość pola tekstowego, aby zastosować formatowanie zamiast Format Funkcja w polu tekstowym.

  • The Right, Len, and InStr functions are useful for returning a substring, for example, trimming domena\username to just the user name.Następujące wyrażenie zwraca część ciąg po prawej stronie znaku kreski ułamkowej odwróconej (\) z parametr o nazwie User:

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

    The following expression results in the same value as the previous one, using members of the .NET FrameworkString class instead of Visual Basic functions:

    =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 Join Funkcja Aby złączyć wybranych wartości parametru MySelection w jeden ciąg znaków, które zestaw jako wyrażenie dla wartości pola tekstowego w elemencie raportu:

    = Join(Parameters!MySelection.Value)
    
  • The Regex functions from the .NET FrameworkRegularExpressions are useful for changing the format of existing strings, for example, formatting a telephone number.Następujące wyrażenie używa ReplaceFunkcja do zmiany formatu liczby 10 cyfrowy telefonu pole od"nnn-nnn-NNNN" to "(nnn) nnn-NNNN":

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

Funkcje konwersji

Można użyć Visual Basic funkcje do konwersji pole z danych jednego typu do innego typu danych. Za pomocą funkcji konwersji można przekonwertować domyślny typ danych pola na typ danych wymagany do wykonania obliczeń lub połączenia tekstu.

  • Następujące wyrażenie konwertuje stała 500 wpisanie dziesiętne w celu porównania jej Transact-SQL Typ danych Money pole wartość wyrażenia filtru.

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

    =CStr(Parameters!MySelection.Count)
    

Funkcje decyzji

  • The Iif funkcja returns one of two values depending on whether the wyrażenie is true or not. W następującym wyrażeniu Iif funkcja zwracająca logiczny True Jeśli wartość LineTotal przekracza 100. W przeciwnym razie zwraca False:

    =IIF(Fields!LineTotal.Value > 100, True, False)
    
  • Za pomocą wielu IIFZwraca jedną z trzech wartości w zależności od wartości funkcji (nazywane także „ zagnieżdżonych IIFs") 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.

  • Inny sposób, aby uzyskać tę samą funkcję, używa Switch Funkcja. The Switch funkcja is useful when you have three or more conditions to test. The Switch funkcja returns the value associated with the first wyrażenie in a series that evaluates to true:

    =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 niż lub równą 10 ekranu z zielonym tłem między 1 a 9 ekranu z niebieskim tłem, równą 1 wyświetlane na żółtym tle i wyświetlania 0 lub mniej ze czerwone tło.

  • Testowanie wartości ImportantDatepole, a następnie zwraca "Red", jeśli jest więcej niż jednego tygodnia stary i "niebieski" inaczej. 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")
    
  • Testowanie wartości PhoneNumberPole zwrotu „ nr wartość i "Jeśli jest on null (Nothing w Visual Basic); w przeciwnym razie zwraca wartość numeru 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)
    
  • Testowanie wartości Department pole, a następnie zwraca nazwę podraport lub null (Nothing w 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.To wyrażenie może służyć do kontrolowania Hidden Właściwość element raportu obrazu. 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

Reporting Services oferuje funkcje raportu dodatkowe, których można użyć do operowania na danych w raporcie.W tej sekcji zamieszczono przykłady dotyczące dwóch z tych funkcji.Aby uzyskać więcej informacji o funkcjach raportu i przykłady Zobacz Używanie wbudowanych funkcji raportu i funkcji agregujących w wyrażeniach (program Report Builder 2.0).

Sum

  • The Sum funkcja can total the values in a group or obszar 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")
    
  • Można również użyć Sum Funkcja warunkowego obliczenia agregacja. 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

  • The RowNumber funkcja, when used in a text box within a obszar danych, displays the row number for each wystąpienie of the text box in which the wyrażenie appears. 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 strona Podziały stron w tym temacie.

    Określ dla zakres RowNumber kontroluje ponowne numerowanie rozpoczyna się. The Nothing keyword indicates that the funkcja will start counting at the first row in the outermost obszar 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.Czas jest sformatowany przy użyciu .NET Framework Formatowanie ciąg data krótkiej:

    =Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")
    
  • Następujące wyrażenie w polu tekstowym w stopce raportu, zawiera numer strona oraz całkowitą 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 założono danych region zawierający pola tekstowego o nazwie LastName.

  • Następujące wyrażenie w polu tekstowym po lewej stronie nagłówka strona zawiera wartość pierwszego LastName pole tekstowe strona:

    =First(ReportItems("LastName").Value)
    
  • Ostatnia wartość zawiera następujące wyrażenie w polu tekstowym po prawej stronie nagłówka strona LastName pole tekstowe strona:

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

W poniższym przykładzie opisano sposób wyświetlania łącznej liczby stron.W przykładzie założono danych region zawierający pola tekstowego o nazwie Cost.

  • Następujące wyrażenie umieścić w nagłówku lub stopce, zawiera sumę wartości w polach Cost pole tekstowe, strona:

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

Uwaga

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 zezwolić użytkownikowi na wartość Liczba wierszy na strona, utworzyć parametr o nazwie RowsPerPage i jako podstawy wyrażenie grupy na parametr, jak pokazano na następujące wyrażenie:

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

    Aby uzyskać więcej informacji o ustawieniu strona podziały stron dla grupy, zobacz Jak Dodawanie podziału strona (Konstruktora raportów 2.0).

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

  • Następujące wyrażenie w Color właściwość pola tekstowego umożliwia zmianę koloru tekstu, w zależności od wartości Profit pole:

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

    Można również użyć zmienna 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")

  • Następujące wyrażenie w BackgroundColor Właściwość element raportu w danych region, kolor tła każdego wiersza między jasnego zielony, biały przełączany:

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

    Jeśli korzystasz z wyrażenie dla określonego zakres, należy wskazać zestawu danych dla funkcja agregującej:

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

Uwaga

Available colors come from the .NET FrameworkKnownColor enumeration.

Visibility

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.

  • Następujące wyrażenie używany dla wstępnej widoczność wierszy szczegółów w grupie, zawiera wiersze szczegółów dla całej sprzedaży przekraczających 90 procent w PctQuota pole:

    =Iif(Fields!PctQuota.Value>.9, False, True)
    
  • Następujące wyrażenie, jeśli zestaw w Hidden właściwość tabela, pokazuje tylko tabela ma więcej niż 12 wierszy:

    =IIF(CountRows()>12,true,false)
    
  • Następujące wyrażenie, po ustawieniu Ukryte właściwość kolumna, pokazuje tylko kolumna, jeśli pole istnieje zestaw danych raportu po dane są pobierane ze urządzenie źródłowe danych:

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

Adresy URL

Można dostosować adresów URL przy użyciu danych w raporcie i warunkowo także kontrolować, czy adresy URL są dodawane jako akcja dla pola tekstowego.

  • Następujące wyrażenie, gdy służy jako akcja w polu tekstowym, wygeneruje niestandardowy adres URL, który określa pole zestawu danych EmployeeID jako parametr adresu URL.

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

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

  • Poniższe wyrażenie warunkowo określa, czy adres URL ma zostać dodany do pola tekstowego.To wyrażenie zależy od parametru o nazwie IncludeURLs które pozwala użytkownikowi zdecydować, czy mają być uwzględniane w raporcie aktywnych adresów 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.

Parameters

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.

  • Następujące wyrażenie, gdy używana jako wartość domyślna dla parametru, gromadzi identyfikator użytkownika osoby, do uruchamiania raportu:

    =User!UserID
    
  • Aby odwołać się do parametru, parametr kwerendy, wyrażenie filtru, pola tekstowego lub innego obszaru raportu, należy użyć Parameters Kolekcja globalne. W tym przykładzie założono, że parametr o nazwie 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 Określa pole określonego przez parametr o nazwie domyślnej wartości parametru 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 na temat niestandardowego kodu zobacz Używanie odwołań do kodu niestandardowego w wyrażeniach (program Report Builder 2,0).

  • W poniższym przykładzie wywoła metoda kodu osadzonego o nazwie ToUSD, które konwertuje StandardCost wartość pole wartość dolara:

    =Code.ToUSD(Fields!StandardCost.Value)
    
  • W poniższym przykładzie pokazano, jak zdefiniować niektóre niestandardowe 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
    

Zamienianie tekstu w polu w czasie wykonywania

W poniższym przykładzie wywoła metoda osadzonego o nazwie FixSpelling, który zastępuje "rowery" () dla wszystkich wystąpień tekstu "Bike" w SubCategory.Value.

=Code.FixSpelling(Fields!SubCategory.Value)

Poniższy kod, gdy osadzona w definicja raportu, pokazuje implementację FixSpelling Metoda. This example shows you how to refer to the .NET FrameworkStringBuilder class.Aby uzyskać więcej informacji zobaczJak Dodawanie kodu do raportu (Report Builder 2.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

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.Umożliwi to błędy czas wykonania, które powodują # Błąd do wyświetlenia w polu tekstowym, zamiast wyliczonego wyrażenie.The IIF funkcja is particularly sensitive to this behavior because, unlike an If-Then-Else instrukcja, each part of the IIF instrukcja is evaluated (including funkcja calls) before being passed to the routine that tests for true or false. W instrukcja =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) generuje # Błąd w raporcie renderowane Jeśli Fields!Sales.Value nic nie jest.

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ą.Ta opcja może służyć do obliczenia różnicy między dwa kolejne wartości i obsługi przypadek krawędź pierwszego porównania (gdy brak poprzedniej wartości) oraz przypadków czy poprzedniej wartości lub bieżącej wartości 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))
    

    Pozwala to uniknąć wykonywania-czas wyjątki, a służy wyrażenie, takie jak =IIF(Me.Value < 0, "red", "black") w Color Właściwość warunkowo tekst wyświetlany na podstawie wartości pola tekstowego.