Datentypen in Ausdrücken (Berichts-Generator und SSRS)Data Types in Expressions (Report Builder and SSRS)

Datentypen stellen verschiedene Arten von Daten dar, die auf diese Weise effizient gespeichert und verarbeitet werden können.Data types represent different kinds of data so that it can be stored and processed efficiently. Zu den gängigen Datentypen gehören Text (auch String oder Zeichenfolge genannt), Zahlen mit oder ohne Dezimalstellen, Datum und Uhrzeit sowie Bilder.Typical data types include text (also known as strings), numbers with and without decimal places, dates and times, and images. Werte in einem Bericht müssen dem RDL-Datentyp (Report Definition Language) entsprechen.Values in a report must be an Report Definition Language (RDL) data type. Sie können einen Wert beliebig formatieren, wenn Sie ihn in einem Bericht anzeigen.You can format a value according to your preference when you display it in a report. So kann ein Feld, das eine Währung darstellt, als Gleitkommazahl in der Berichtsdefinition gespeichert, jedoch je nach gewählter Formatierungseigenschaft in verschiedenen Formaten angezeigt werden.For example, a field that represents currency is stored in the report definition as a floating point number, but can be displayed in a variety of formats depending on the format property you choose.

Weitere Informationen zu Anzeigeformaten finden Sie unter Formatieren von Berichtselementen (Berichts-Generator und SSRS).For more information about display formats, see Formatting Report Items (Report Builder and SSRS).

Hinweis

Sie können paginierte Berichtsdefinitionsdateien (.rdl) im Berichts-Generator und im Berichts-Designer in SQL Server-Datentools erstellen und ändern.You can create and modify paginated report definition (.rdl) files in Report Builder and in Report Designer in SQL Server Data Tools. Jede Erstellungsumgebung bietet verschiedene Methoden zum Erstellen, Öffnen und Speichern von Berichten und verwandten Elementen.Each authoring environment provides different ways to create, open, and save reports and related items.

RDL-Datentypen (Report Definition Language) und CLR-Datentypen (Common Language Runtime)Report Definition Language (RDL) Data Types and Common Language Runtime (CLR) Data Types

Werte, die in einer RDL-Datei angegeben werden, müssen dem RDL-Datentyp entsprechen.Values that are specified in an RDL file must be an RDL data type. Wenn der Bericht kompiliert und verarbeitet wird, werden RDL-Datentypen in CLR-Datentypen konvertiert.When the report is compiled and processed, RDL data types are converted to CLR data types. In der folgenden Tabelle wird die Konvertierung angezeigt, die als Standardeinstellung markiert ist:The following table displays the conversion, which is marked Default:

RDL-TypRDL Type CLR-TypenCLR Types
StringString Standardwert: StringDefault: String

Chart, GUID, TimespanChart, GUID, Timespan
BooleanBoolean Standardwert: BooleanDefault: Boolean
IntegerInteger Standardwert: Int64Default: Int64

Int16, Int32, Uint16, Uint64, Byte, SbyteInt16, Int32, Uint16, Uint64, Byte, Sbyte
DatetimeDateTime Standardwert: DatetimeDefault: DateTime

DateTimeOffsetDateTimeOffset
FloatFloat Standardwert: DoubleDefault: Double

Single, DecimalSingle, Decimal
BinaryBinary Standardwert: Byte[]Default: Byte[]
VariantVariant Beliebiger Wert von oben außer Byte []Any of the above except Byte[]
VariantArrayVariantArray Array von VariantArray of Variant
SerialisierbarSerializable Variant oder Typen, die mit Serializable markiert sind oder ISerializable implementieren.Variant or types marked with Serializable or that implement ISerializable.

Grundlegendes zu Datentypen und zum Schreiben von AusdrückenUnderstanding Data Types and Writing Expressions

Es ist wichtig, dass Sie mit Datentypen vertraut sind, wenn Sie Ausdrücke zum Vergleichen oder Kombinieren von Werten schreiben, zum Beispiel, wenn Sie Gruppierungs- oder Filterausdrücke definieren oder Aggregate berechnen.It is important to understand data types when you write expressions to compare or combine values, for example, when you define group or filter expressions, or calculate aggregates. Vergleiche und Berechnungen können nur mit Elementen des gleichen Datentyps durchgeführt werden.Comparisons and calculations are valid only between items of the same data type. Wenn die Datentypen nicht übereinstimmen, müssen sie explizit in den Berichtselementen durch einen Ausdruck konvertiert werden.If the data types do not match, you must explicitly convert the data type in the report item by using an expression.

In den folgenden Situationen müssen Sie möglicherweise Daten in einen anderen Datentyp konvertieren:The following list describes cases when you may need to convert data to a different data type:

  • Vergleichen des Werts eines Berichtsparameters mit einem Datentyp mit einem Datasetfeld eines anderen DatentypsComparing the value of a report parameter of one data type to a dataset field of a different data type.

  • Schreiben von Filterausdrücken, die Werte mit unterschiedlichen Datentypen vergleichenWriting filter expressions that compare values of different data types.

  • Schreiben von Sortierungsausdrücken, die Felder mit unterschiedlichen Datentypen kombinierenWriting sort expressions that combine fields of different data types.

  • Schreiben von Gruppierungsausdrücken, die Felder mit unterschiedlichen Datentypen kombinierenWriting group expressions that combine fields of different data types.

  • Konvertieren eines aus der Datenquelle abgerufenen Werts von einem Datentyp in einen anderen DatentypConverting a value retrieved from the data source from one data type to a different data type.

Ermitteln des Datentyps von BerichtsdatenDetermining the Data Type of Report Data

Zum Ermitteln des Datentyps von Berichtselementen können Sie einen Ausdruck schreiben, der den Datentyp zurückgibt.To determine the data type of a report item, you can write an expression that returns its data type. Wenn Sie beispielsweise den Datentyp des Felds MyFieldanzeigen möchten, fügen Sie einer Tabellenzelle den folgenden Ausdruck hinzu: =Fields!MyField.Value.GetType().ToString().For example, to show the data type for the field MyField, add the following expression to a table cell: =Fields!MyField.Value.GetType().ToString(). Das Ergebnis zeigt den CLR-Datentyp an, der MyFielddarstellt, zum Beispiel System.String oder System.DateTime.The result displays the CLR data type used to represent MyField, for example, System.String or System.DateTime.

Konvertieren von Datasetfeldern in einen anderen DatentypConverting Dataset Fields to a Different Data Type

Sie können auch Datasetfelder konvertieren, bevor sie in einem Bericht verwendet werden.You can also convert dataset fields before you use them in a report. Im Folgenden werden Methoden beschrieben, mit denen Sie ein vorhandenes Datasetfeld konvertieren können:The following list describes ways that you can convert an existing dataset field:

  • Ändern Sie die Datasetabfrage so, dass ein neues Abfragefeld mit den konvertierten Daten hinzugefügt wird.Modify the dataset query to add a new query field with the converted data. Bei relationalen oder mehrdimensionalen Datenquellen werden in diesem Fall Datenquellenressourcen zum Durchführen der Konvertierung verwendet.For relational or multidimensional data sources, this uses data source resources to perform the conversion.

  • Erstellen Sie ein berechnetes, auf einem bestehenden Berichtsdatasetfeld basierendes Feld, indem Sie einen Ausdruck schreiben, durch den alle Daten in einer Resultsetspalte in eine neue Spalte mit einem anderen Datentyp konvertiert werden.Create a calculated field based on an existing report dataset field by writing an expression that converts all the data in one result set column to a new column with a different data type. So wird beispielsweise durch den folgenden Ausdruck das Feld Year von einer Ganzzahl in eine Zeichenfolge konvertiert: =CStr(Fields!Year.Value).For example, the following expression converts the field Year from an integer value to a string value: =CStr(Fields!Year.Value). Weitere Informationen finden Sie unter Hinzufügen, Bearbeiten und Aktualisieren von Feldern im Berichtsdatenbereich (Berichts-Generator und SSRS).For more information, see Add, Edit, Refresh Fields in the Report Data Pane (Report Builder and SSRS).

  • Überprüfen Sie, ob die verwendete Datenverarbeitungserweiterung Metadaten zum Abrufen von vorformatierten Daten enthält.Check whether the data processing extension you are using includes metadata for retrieving preformatted data. So enthält beispielsweise eine SQL ServerSQL Server Analysis ServicesAnalysis Services-MDX-Abfrage die erweiterte Eigenschaft FORMATTED_VALUE für Cube-Werte, die bereits während der Verarbeitung des Cubes formatiert wurden.For example, a SQL ServerSQL Server Analysis ServicesAnalysis Services MDX query includes a FORMATTED_VALUE extended property for cube values that have already been formatted when processing the cube. Weitere Informationen finden Sie unter Erweiterte Feldeigenschaften für eine Analysis Services-Datenbank (SSRS).For more information, see Extended Field Properties for an Analysis Services Database (SSRS).

ParameterdatentypenUnderstanding Parameter Data Types

Berichtsparameter müssen einer von fünf Datentypen sein: Boolean, DateTime, Integer, Float oder Text (auch als String bezeichnet).Report parameters must be one of five data types: Boolean, DateTime, Integer, Float, or Text (also known as String). Wenn eine Datasetabfrage Abfrageparameter enthält, werden automatisch Berichtsparameter erstellt und mit den Abfrageparametern verknüpft.When a dataset query includes query parameters, report parameters are automatically created and linked to the query parameters. Der Standarddatentyp für einen Berichtsparameter lautet String.The default data type for a report parameter is String. Wenn Sie den Standarddatentyp eines Berichtsparameters ändern möchten, wählen Sie im Dialogfeld Berichtsparametereigenschaften auf der Seite Allgemein in der Dropdownliste Datentyp den gewünschten Wert aus.To change the default data type of a report parameter, select the correct value from the Data type drop-down list on the General page of the Report Parameter Properties dialog box.

Hinweis

Berichtsparameter mit einem DateTime-Datentyp unterstützen keine Millisekunden.Report parameters that are DateTime data types do not support milliseconds. Sie können zwar einen Parameter erstellen, der auf Werten mit Millisekunden basiert, in der Dropdownliste mit den verfügbaren Werten kann jedoch kein Wert ausgewählt werden, der Datums- oder Zeitwerte mit Millisekunden enthält.Although you can create a parameter based on values that include milliseconds, you cannot select a value from an available values drop-down list that includes Date or Time values that include milliseconds.

Schreiben von Ausdrücken zum Konvertieren von Datentypen oder Extrahieren von DatenteilenWriting Expressions that Convert Data Types or Extract Parts of Data

Wenn Sie Text und Datasetfelder mit dem Verkettungsoperator (&) kombinieren, stellt die Common Language Runtime (CLR) im Allgemeinen Standardformate bereit.When you combine text and dataset fields using the concatenation operator (&), the common language runtime (CLR) generally provides default formats. Falls Sie ein Datasetfeld oder einen Parameter explizit in einen bestimmten Datentyp konvertieren müssen, müssen die Daten mit einer CLR-Methode oder einer Funktion der Visual Basic-Laufzeit konvertiert werden.When you need to explicitly convert a dataset field or parameter to a specific data type, you must use a CLR method or a Visual Basic runtime library function to convert the data.

Die folgende Tabelle enthält Beispiele zum Konvertieren von Datentypen.The following table shows examples of converting data types.

Art der KonvertierungType of conversion BeispielExample
DateTime zu StringDateTime to String =CStr(Fields!Date.Value)
String zu DateTimeString to DateTime =DateTime.Parse(Fields!DateTimeinStringFormat.Value)
String zu DateTimeOffsetString to DateTimeOffset =DateTimeOffset.Parse(Fields!DateTimeOffsetinStringFormat.Value)
Extrahieren des JahrsExtracting the Year =Year(Fields!TimeinStringFormat.Value)

-- or --

=Year(Fields!TimeinDateTimeFormat.Value)
Boolean zu IntegerBoolean to Integer =CInt(Parameters!BooleanField.Value)

-1 ist True und 0 ist False.-1 is True and 0 is False.
Boolean zu IntegerBoolean to Integer =System.Convert.ToInt32(Fields!BooleanFormat.Value)

1 ist True und 0 ist False.1 is True and 0 is False.
Nur der Datums-/Uhrzeitanteil (DateTime) des DateTimeOffset-WertsJust the DateTime part of a DateTimeOffset value =Fields!MyDatetimeOffset.Value.DateTime
Nur der Zeitverschiebungsanteil (Offset) des DateTimeOffset-WertsJust the Offset part of a DateTimeOffset value =Fields!MyDatetimeOffset.Value.Offset

Mit der Formatierungsfunktion können Sie zudem das Anzeigeformat des Werts steuern.You can also use the Format function to control the display format for value. Weitere Informationen finden Sie unter Funktionen (Visual Basic).For more information, see Functions (Visual Basic).

Komplexere BeispieleAdvanced Examples

Wenn Sie eine Datenquelle mit einem Datenanbieter verbinden, der nicht die Konvertierung aller Datentypen in der Datenquelle unterstützt, wird standardmäßig für alle nicht unterstützten Datentypen der Datentyp String verwendet.When you connect to a data source with a data provider that does not provide conversion support for all the data types on the data source, the default data type for unsupported data source types is String. In den folgenden Beispielen finden Sie Lösungen für bestimmte Datentypen, die als Zeichenfolge (String) zurückgegeben werden.The following examples provide solutions to specific data types that are returned as a string.

Verketten eines String-Datentyps und eines CLR-DateTimeOffset-DatentypsConcatenating a String and a CLR DateTimeOffset Data Type

Die CLR stellt für die meisten Datentypen eine Standardkonvertierung bereit, sodass Sie Werte mit unterschiedlichen Datentypen mithilfe des &-Operators in einer Zeichenfolge verketten können.For most data types, the CLR provides default conversions so that you can concatenate values that are different data types into one string by using the & operator. Der folgende Ausdruck verkettet zum Beispiel den Text „The date and time are:“ mit einem StartDate-Datasetfeld, bei dem es sich um einen DateTime -Wert handelt: ="The date and time are: " & Fields!StartDate.Value.For example, the following expression concatenates the text "The date and time are: " with a dataset field StartDate, which is a DateTime value: ="The date and time are: " & Fields!StartDate.Value.

Bei einigen Datentypen müssen Sie eventuell die ToString-Funktion verwenden.For some data types, you may need to include the ToString function. Der folgende Ausdruck zeigt das gleiche Beispiel mit dem CLR-Datentyp DateTimeOffset, der das Datum, die Uhrzeit sowie eine Zeitzonenverschiebung relativ zur UTC-Zeitzone beinhaltet: ="The time is: " & Fields!StartDate.Value.ToString().For example, the following expression shows the same example using the CLR data type DateTimeOffset, which include the date, the time, and a time-zone offset relative to the UTC time zone: ="The time is: " & Fields!StartDate.Value.ToString().

Konvertieren eines String-Datentyps in einen CLR-DateTime-DatentypConverting a String Data Type to a CLR DateTime Data Type

Falls eine Datenverarbeitungserweiterung nicht alle in einer Datenquelle definierten Datentypen unterstützt, werden die Daten eventuell als Text abgerufen.If a data processing extension does not support all data types defined on a data source, the data may be retrieved as text. Beispiel: Der Datentypwert datetimeoffset(7) wird möglicherweise als String-Datentyp abgerufen.For example, a datetimeoffset(7) data type value may be retrieved as a String data type. Für Perth in Australien würde der Zeichenfolgenwert für den 1. Juli 2008, 6:05:07.9999999In Perth, Australia, the string value for July 1, 2008, at 6:05:07.9999999 A.M. in etwa wie folgt aussehen:would resemble:

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

Dieses Beispiel zeigt das Datum (1. Juli 2008), gefolgt von der Uhrzeit mit 7-stelliger Präzision (6:05:07.9999999), gefolgt von der UTC-Zeitzonenverschiebung in Stunden und Minuten (plus 8 Stunden, 0 Minuten).This example shows the date (July 1, 2008), followed by the time to a 7-digit precision (6:05:07.9999999 A.M.), followed by a UTC time zone offset in hours and minutes (plus 8 hours, 0 minutes). In den folgenden Beispielen befindet sich dieser Wert im String -Feld MyDateTime.Value.For the following examples, this value has been placed in a String field called MyDateTime.Value.

Sie können diese Daten mit einer der folgenden Methoden in einen oder mehrere CLR-Werte konvertieren:You can use one of the following strategies to convert this data to one or more CLR values:

  • Verwenden Sie in einem Textfeld einen Ausdruck, um Teile der Zeichenfolge zu extrahieren.In a text box, use an expression to extract parts of the string. Beispiel:For example:

    • Mit dem folgenden Ausdruck wird der Stundenwert der UTC-Zeitzonenverschiebung extrahiert und in Minuten konvertiert: =CInt(Fields!MyDateTime.Value.Substring(Fields!MyDateTime.Value.Length-5,2)) * 60The following expression extracts just the hour part of the UTC time zone offset and converts it to minutes: =CInt(Fields!MyDateTime.Value.Substring(Fields!MyDateTime.Value.Length-5,2)) * 60

      Das Ergebnis ist 480.The result is 480.

    • Mit dem folgenden Ausdruck wird die Zeichenfolge in einen Datums- und Uhrzeitwert konvertiert: =DateTime.Parse(Fields!MyDateTime.Value)The following expression converts the string to a date and time value: =DateTime.Parse(Fields!MyDateTime.Value)

      Falls die Zeichenfolge MyDateTime.Value eine UTC-Zeitverschiebung aufweist, passt die Funktion DateTime.Parse zunächst die UTC-Zeitverschiebung an (7:00If the MyDateTime.Value string has a UTC offset, the DateTime.Parse function first adjusts for the UTC offset (7 A.M. - [+08:00] zur UTC-Zeit 23:00- [+08:00] to the UTC time of 11 P.M. in der vorherigen Nacht).the night before). Anschließend wendet die Funktion DateTime.Parse die UTC-Zeitverschiebung des lokalen Berichtsservers an und passt die Zeit ggf. noch einmal an die Sommerzeit an.The DateTime.Parse function then applies the local report server UTC offset and, if necessary, adjusts the time again for Daylight Saving Time. So ist zum Beispiel in Redmond, Washington/USA die lokale Zeitverschiebung, angepasst an die Sommerzeit, [-07:00], das heißt 7 Stunden früher als 23:00.For example, in Redmond, Washington, the local time offset adjusted for Daylight Saving Time is [-07:00], or 7 hours earlier than 11 PM. Daraus ergibt sich der folgende DateTime -Wert: 2007-07-06 04:07:07 PM (6. Juli 2007, 16:07).The result is the following DateTime value: 2007-07-06 04:07:07 PM (July 6, 2007 at 4:07 P.M).

Weitere Informationen zum Konvertieren von Zeichenfolgen in DateTime -Datentypen finden Sie unter Verarbeiten von Zeichenfolgen für Datum und Uhrzeit, Formatieren von Datum und Uhrzeit für eine bestimmte Kulturund Choosing Between DateTime, DateTimeOffsetund TimeZoneInfo auf der MSDN-Website.For more information about converting strings to DateTime data types, see Parsing Date and Time Strings, Formatting Date and Time for a Specific Culture, and Choosing Between DateTime, DateTimeOffset, and TimeZoneInfo on MSDN.

  • Fügen Sie ein neues berechnetes Feld dem Berichtsdataset hinzu, das einen Ausdruck verwendet, mit dem Teile der Zeichenfolge extrahiert werden.Add a new calculated field to the report dataset that uses an expression to extract parts of the string. Weitere Informationen finden Sie unter Hinzufügen, Bearbeiten und Aktualisieren von Feldern im Berichtsdatenbereich (Berichts-Generator und SSRS).For more information, see Add, Edit, Refresh Fields in the Report Data Pane (Report Builder and SSRS).

  • Ändern Sie die Berichtsdatasetabfrage so, dass mit Transact-SQLTransact-SQL -Funktionen die Datums- und Uhrzeitwerte unabhängig voneinander abgerufen und separate Spalten erstellt werden.Change the report dataset query to use Transact-SQLTransact-SQL functions to extract the date and time values independently to create separate columns. Im folgenden Beispiel wird gezeigt, wie Sie mit der Funktion DatePart eine Spalte für das Jahr und eine Spalte für die in Minuten konvertierte UTC-Zeitzone hinzufügen können:The following example shows how to use the function DatePart to add a column for the year and a column for the UTC time zone converted to minutes:

    SELECT

    MyDateTime,

    DATEPART(year, MyDateTime) AS Year,

    DATEPART(tz, MyDateTime) AS OffsetinMinutes

    FROM MyDates

    Das Resultset hat drei Spalten.The result set has three columns. Die erste Spalte enthält Datum und Uhrzeit, die zweite das Jahr und die dritte die UTC-Zeitverschiebung in Minuten.The first column is the date and time, the second column is the year, and the third column is the UTC offset in minutes. Die folgende Zeile enthält Beispieldaten:The following row shows example data:

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

Weitere Informationen zu SQL ServerSQL Server-Datenbanktypen finden Sie unter Datentypen (Transact-SQL) und Datums- und Uhrzeitdatentypen und zugehörige Funktionen (Transact-SQL).For more information about SQL ServerSQL Server database data types, see Data Types (Transact-SQL), and Date and Time Data Types and Functions (Transact-SQL).

Weitere Informationen zu den SQL ServerSQL Server Analysis ServicesAnalysis Services-Datentypen finden Sie unter Datentypen in Analysis Services.For more information about SQL ServerSQL Server Analysis ServicesAnalysis Services data types, see Data Types in Analysis Services.

Weitere InformationenSee Also

Formatieren von Berichtselementen (Berichts-Generator und SSRS)Formatting Report Items (Report Builder and SSRS)