Working with Data Types in Expressions (Reporting Services)
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.Dane można przechowywać, używając jednego typu danych w celu zapewnienia odpowiedniej wydajności, ale formatować je zgodnie z preferencjami podczas wyświetlania w raporcie.Na przykład pole reprezentujące wartość walutową może być przechowywane 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 na temat formatów wyświetlania Zobacz Formatting Reports and Report Items.
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, dodać do komórka tabela na następujące wyrażenie: =Fields!MyField.Value.GetDataType().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 rok z wartością całkowitą wartość ciąg: =CStr(Fields!Year.Value).For more information, see How to: Add, Edit, or Delete a Field in the Report Data Pane.
- Sprawdź, czy używane rozszerzenie przetwarzania danych zawiera metadane służące do pobierania wstępnie sformatowanych danych.For example, a SQL Server 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 Using Extended Field Properties for an Analysis Services Dataset.
Opis typów danych parametrów
Parametry raportu musi mieć jedną z pięciu typów: logiczny, Data-Godzina, liczba całkowita, float lub tekst (znany także 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, należy wybrać prawidłową wartość z Typ danych listy rozwijanej na Ogólne stronaWłaściwości parametru raportu -okno dialogowe.
Uwaga
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 tekst i zestawu danych przy użyciu (operator łączenie&), plików wykonywalnych języka wspólnego (CLR) zazwyczaj zawiera formaty domyślne. 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ść true i 0 ma wartość FAŁSZ. |
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, do ś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ą: "z zestawu danych pole StartDate, czyliDateTime 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 tego samego przykładu, przy użyciu środowiska CLR typu danych DateTimeOffset, które zawierają data, czas i przesunięcie strefy czasowej względem czas 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) wartość typu danych może można pobrać jako typ danych typu ciąg. 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, ta wartość 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ęścią strefy czas UTC przesunięcie i konwertuje je na minut: =CInt(Fields!MyDateTime.Value.Substring(Fields!MyDateTime.Value.Length-5,2)) * 60
W rezultacie 480.
Następujące wyrażenie Konwertuje ciąg na datę i czas wartości: =DateTime.Parse(Fields!MyDateTime.Value)
Jeśli MyDateTime.Value ciąg zawiera przesunięcie czasu UTC, DateTime.Parse Funkcja najpierw dopasowuje przesunięcie czasu UTC (7 rano - [+08:00] to the UTC time of 11 P.M.the night before).The DateTime.Parse funkcja then applies the local serwer raportów UTC offset and, if necessary, adjusts the czas again for Daylight Saving czas. Na przykład Redmond, Washington, przesunięcie czasu lokalnego, skorygowaną o czas letni jest [-07:00], lub wcześniejszej niż 11 PM 7 godzin. Wynik jest następujący DateTime wartość: 2007-07-06 04:07:07 PM (Lipca 6 2007 na 4: 07 P.M).
Aby uzyskać więcej informacji na temat konwersji ciągów DateTime typy danych, zobacz Podczas analizy daty i czas ciągi and Formatowanie daty i czas dla kultury określony 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 How to: Add, Edit, or Delete a Field in the Report Data Pane.
Zmiana kwerendy raportu zestawu danych do używania Transact-SQL Funkcje wyodrębnić data i czas wartości niezależnie, aby utworzyć osobne kolumny. W poniższym przykładzie pokazano, jak korzystać z funkcja DatePart Aby dodać kolumna w roku oraz kolumna dla strefy czasowej UTC konwertowane do 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 Typy danych (aparat bazy danych) i Data i godzina, Data typy i funkcje (języka Transact-SQL).
See Also