Udostępnij za pośrednictwem


Praca z typami danych w wyrażeniach (program Report Builder 3.0 i usługi SSRS)

Typy danych reprezentują różne rodzaje danych, dzięki czemu można je efektywnie przechowywać i przetwarzać.Typowe typy danych obejmują tekst (znany też pod nazwą „ciąg”), liczby z miejscami dziesiętnymi i bez nich, daty i godziny oraz obrazy.Wartości w raporcie muszą mieć typ danych zgodny z językiem RDL (Report Definition Language).Wartość wyświetlaną w raporcie można formatować zgodnie z preferencjami.Na przykład pole reprezentujące wartość walutową jest przechowywane w definicji raportu w postaci liczby zmiennoprzecinkowej, ale może być wyświetlane w różnych formatach, w zależności od wybranej właściwości formatu.

Aby uzyskać więcej informacji dotyczących formatów wyświetlania, zobacz Formatowanie elementów 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.

Typ danych języka RDL (Report Definition Language) i typy danych środowiska CLR (Common Language Runtime)

Wartości określane w pliku języka RDL muszą mieć typ danych języka RDL.Podczas kompilowania i przetwarzania raportu typy danych języka RDL są konwertowane na typy danych środowiska CLR.W poniższej tabeli pokazano konwersję domyślną:

Typ języka RDL

Typy środowiska CLR

String

Wartość domyślna: Ciąg

Chart, GUID, Timespan

Boolean

Wartość domyślna: Wartość logiczna

Liczba całkowita

Wartość domyślna: Int64

Int16, Int32, Uint16, Uint64, Byte, Sbyte

DateTime

Wartość domyślna: DateTime

DateTimeOffset

Float

Wartość domyślna: Podwójne

Single, Decimal

Binary

Wartość domyślna: Byte]

Variant

Dowolny z powyższych oprócz typu Byte[]

VariantArray

Tablica wartości typu Variant

Serializable

Typ Variant lub typy o właściwości Serializable lub implementujące interfejs ISerializable.

Opis typów danych i informacje dotyczące pisania wyrażeń

Ważne jest, aby znać typy danych podczas pisania wyrażeń służących do porównywania lub łączenia wartości, na przykład podczas definiowania wyrażeń grupy lub filtru albo obliczania wartości zagregowanych.Porównania i obliczenia można wykonywać tylko z użyciem danych tego samego typu.Jeśli typy danych są niezgodne, należy jawnie przekonwertować typ danych w elemencie raportu za pomocą wyrażenia.

Na poniższej liście opisano przypadki, w których może być konieczne przekonwertowanie danych na inny typ danych:

  • Porównywanie wartości parametru raportu należącego do jednego typu danych z polem zestawu danych należącym do innego typu danych.

  • Pisanie wyrażeń filtru porównujących wartości należące do różnych typów danych.

  • Pisanie wyrażeń sortowania łączących pola należące do różnych typów danych.

  • Pisanie wyrażeń grupy łączących pola należące do różnych typów danych.

  • Konwertowanie wartości pobranej ze źródła danych z jednego typu danych na inny typ danych.

Ustalanie typu danych dla danych raportu

Aby ustalić typ danych elementu raportu, można napisać wyrażenie zwracającego jego typ danych.Na przykład, aby wyświetlić typ danych dla pole MyField, Dodaj następujące wyrażenie komórka tabela: =Fields!MyField.Value.GetType().ToString().The result displays the CLR data type used to represent MyField, for example, System.String or System.DateTime.

Konwertowanie pól zestawu danych na inny typ danych

Pola zestawu danych można też przekonwertować przed użyciem ich w raporcie.Na poniższej liście opisano metody, jakich można użyć w celu przekonwertowania istniejącego pola zestawu danych:

  • Zmodyfikuj zapytanie zestawu danych, aby dodać nowe pole zapytania z przekonwertowanymi danymi.W przypadku relacyjnych lub wielowymiarowych źródeł danych to zapytanie używa zasobów źródła danych w celu wykonania konwersji.

  • Utwórz pole obliczeniowe na podstawie istniejącego pola zestawu danych raportu, pisząc wyrażenie konwertujące wszystkie dane w jednej kolumnie zestawu wyników na nową kolumnę z danymi innego typu.Na przykład, następujące wyrażenie konwertuje pole Year z całkowitą wartość ciąg: =CStr(Fields!Year.Value).For more information, see Jak Dodawanie, edytowanie, Odśwież pól w okienku danych raportu (Konstruktora raportów 3.0 i SSRS).

  • Sprawdź, czy używane rozszerzenie przetwarzania danych zawiera metadane służące do pobierania wstępnie sformatowanych danych.For example, a SQL Server Usługi Analysis Services MDX query includes a FORMATTED_VALUE extended property for cube values that have already been formatted when processing the cube.Aby uzyskać więcej informacji, zobacz Rozszerzone właściwości pola dla Analysis Services bazy danych (SSRS).

Opis typów danych parametrów

Parametry raportu musi być jedną z pięciu typów: wartość logiczna, DateTime, liczba całkowita, Float lub tekst (również znany jako ciąg).Gdy zapytanie zestawu danych zawiera parametry zapytania, parametry raportu są automatycznie tworzone i łączone z parametrami zapytania.Domyślnym typem danych dla parametru raportu jest Ciąg.Aby zmienić domyślny typ danych parametru raportu, wybierz poprawną wartość z Typ danych drop -niedziałający listy na Ogólne strona Właściwości raportu parametr okno dialogowe.

Ostrzeżenie

Parametry raportu, które mają typ danych Data/godzina, nie obsługują milisekund.Mimo że można utworzyć parametr oparty na wartościach zawierających milisekundy, z listy rozwijanej z dostępnymi wartościami, która zawiera wartości daty lub godziny, nie można wybrać wartości zawierającej milisekundy.

Pisanie wyrażeń konwertujących typy danych lub wyodrębniających części danych

Podczas łączenie pól typu tekst i zestawu danych przy użyciu operator konkatenacji (&), common language runtime (CLR) zazwyczaj zawiera domyślnych formatów.Gdy trzeba jawnie przekonwertować pole zestawu danych lub parametr na określony typ danych, należy użyć metody aparatu plików wykonywalnych języka wspólnego lub funkcji biblioteki wykonawczej języka Visual Basic, aby przekonwertować dane.

W poniższej tabela przedstawiono przykłady konwersji typów danych.

Typ konwersji

Przykład

Data/godzina na Ciąg

=CStr(Fields!Date.Value)

Ciąg na Data/godzina

=DateTime.Parse(Fields!DateTimeinStringFormat.Value)

Ciąg na Przesunięcie daty/godziny

=DateTimeOffset.Parse(Fields!DateTimeOffsetinStringFormat.Value)

Wyodrębnianie roku

=Year(Fields!TimeinStringFormat.Value)

-- or --

=Year(Fields!TimeinDateTimeFormat.Value)

Wartość logiczna na Liczba całkowita

=CInt(Parameters!BooleanField.Value)

-1 to Prawda, a 0 to Fałsz.

Wartość logiczna na Liczba całkowita

=System.Convert.ToInt32(Fields!BooleanFormat.Value)

1 ma wartość PRAWDA i FAŁSZ jest 0.

Część Data/godzina z wartości Przesunięcie daty/godziny

=Fields!MyDatetimeOffset.Value.DateTime

Część Przesunięcie z wartości Przesunięcie daty/godziny

=Fields!MyDatetimeOffset.Value.Offset

Aby sterować formatem wyświetlania wartości, można też użyć funkcji Format.Aby uzyskać więcej informacji, zobacz funkcje (Visual Basic).

Przykłady zaawansowane

Podczas nawiązywania połączenia ze źródłem danych za pomocą dostawcy danych, który nie oferuje obsługi konwersji dla wszystkich typów danych w źródle danych, domyślnym typem danych dla nieobsługiwanych typów źródła danych jest Ciąg.Poniższe przykłady zawierają rozwiązania dotyczące określonych typów danych zwracanych jako typ Ciąg.

Łączenie typu danych Ciąg i typu danych Przesunięcie daty/godziny aparatu plików wykonywalnych języka wspólnego

Dla większości typów danych środowiska CLR oferuje konwersje domyślny, dzięki czemu można łączyć wartości, które są różne typy danych w jeden ciąg przy użyciu & operator.Na przykład, następujące wyrażenie łączy tekst "Data i czas są: " pole elementu dataset StartDate, który jest System.DateTime wartość: ="The date and time are: " & Fields!StartDate.Value.

W przypadku niektórych typów danych może być konieczne użycie funkcji ToString.Na przykład, następujące wyrażenie zawiera sam przykład typu CLR System.DateTimeOffset, które zawierają data, czas i przesunięcie względem strefy czasowej UTC strefę czasową: ="The time is: " & Fields!StartDate.Value.ToString().

Konwertowanie typu danych Ciąg na typ danych Przesunięcie daty/godziny aparatu plików wykonywalnych języka wspólnego

Jeśli rozszerzenie przetwarzania danych nie obsługuje wszystkich typów danych zdefiniowanych w źródle danych, można pobierać dane w postaci tekstu.Na przykład datetimeoffset(7) można pobrać wartość typu danych jako typ danych String.In Perth, Australia, the string value for July 1, 2008, at 6:05:07.9999999 A.M.would resemble:

2008-07-01 06:05:07.9999999 +08:00

W tym przykładzie pokazano datę (1 lipca 2008), po której występuje godzina określona z 7-cyfrową dokładnością (06:05:07.9999999) i przesunięcie strefy czasowej uniwersalnego czasu koordynowanego wyrażone w godzinach i minutach (plus 8 godzin, 0 minut).W poniższych przykładach wartość ta została umieszczona w String pole o nazwie MyDateTime.Value.

Można użyć jednej z następujących strategii, aby przekonwertować te dane na co najmniej jedną wartość aparatu plików wykonywalnych języka wspólnego:

  • W polu tekstowym użyj wyrażenia w celu wyodrębnienia części ciągu.Na przykład:

    • Następujące wyrażenie wyodrębnia tylko czas część strefy czasowej UTC przesunięcie i konwertuje minut: =CInt(Fields!MyDateTime.Value.Substring(Fields!MyDateTime.Value.Length-5,2)) * 60

      Wynik jest 480.

    • Następujące wyrażenie Konwertuje ciąg na datę i czas wartość: =DateTime.Parse(Fields!MyDateTime.Value)

      Jeśli MyDateTime.Value ciąg ma przesunięcie czasu UTC DateTime.Parse Funkcja najpierw dopasowuje przesunięcie czasu UTC (7.00- [+08:00] to the UTC time of 11 P.M.the night before).DateTime.Parse funkcja następnie stosuje lokalnym serwer raportów UTC przesunięcie, a w razie potrzeby dostosowuje czas ponownie dla czasu letniego.Na przykład w Redmond, Washington, lokalnym czas przesunięcia dostosowane do zapisywania letni czas jest [-07:00], lub wcześniejszej niż 11 PM. 7 godzinWynik jest następujący DateTime wartość: 2007-07-06 04:07:07 PM (6 Lipca 2007 w godzinach 4:07).

Więcej informacji na temat konwersji ciągów DateTime typów danych, zobacz podczas analizy daty i czasu ciągów, formatowania daty i godziny dla określonej kultury, i Wybór między DateTime, DateTimeOffset i TimeZoneInfo w witrynie MSDN.

  • Dodaj nowe pole obliczeniowe do zestawu danych raportu, w którym jest używane wyrażenie służące do wyodrębniania części ciągu.Aby uzyskać więcej informacji, zobacz Jak Dodawanie, edytowanie, Odśwież pól w okienku danych raportu (Konstruktora raportów 3.0 i SSRS).

  • Zmienić kwerendę dataset raportu, aby użyć Transact-SQL Funkcje wyodrębnić Data i czas wartości niezależnie, aby utworzyć osobne kolumny.Poniższy przykład ilustruje sposób użycia funkcja DatePart do dodania kolumna w roku oraz kolumna dla UTC czas strefy są konwertowane na minut:

    SELECT

    MyDateTime,

    DATEPART(year, MyDateTime) AS Year,

    DATEPART(tz, MyDateTime) AS OffsetinMinutes

    FROM MyDates

    Zestaw wyników zawiera trzy kolumny.W pierwszej kolumnie znajduje się data i godzina, w drugiej kolumnie znajduje się rok, a w trzeciej kolumnie znajduje się przesunięcie uniwersalnego czasu koordynowanego w minutach.W poniższym wierszu pokazano przykładowe dane:

    2008-07-01 06:05:07 2008 480

Aby uzyskać więcej informacji na temat typów baz danych programu SQL Server, zobacz "Typów danych" i "Data i godzina dane typy i funkcje" w SQL Server Books Online.