Типы данных в выражениях в отчете с разбивкой на страницы (построитель отчетов)

Применимо: Microsoft построитель отчетов (SSRS) Power BI построитель отчетов конструктор отчетов в SQL Server Data Tools

Типы данных представляют разные виды данных в отчете с разбивкой на страницы, чтобы их можно было эффективно хранить и обрабатывать. Стандартные типы данных включают текст (строки), числа с десятичными разрядами или без них, даты и время, а также изображения. Значения в отчете должны быть представлены с помощью типов данных языка определения отчетов. При отображении значения в отчете его можно отформатировать в соответствии с конкретными предпочтениями. Например, поле, представляющее валюту, может храниться в определении отчета как число с плавающей запятой, но отображаться в различных форматах в зависимости от выбранного свойства формата.

Дополнительные сведения о форматах отображения см. в разделе Форматирование элементов отчета (построитель отчетов и службы SSRS).

Примечание.

Создать и изменить определение для отчета на страницу (RDL-файл) можно с помощью построителя отчетов (Майкрософт), построителя отчетов Power BI и конструктора отчетов в SQL Server Data Tools.

Типы данных языка определения отчетов и типы данных среды CLR

Значения, заданные в RDL-файле, должны иметь один из типов данных языка определения отчетов. При компиляции и обработке отчета типы данных языка определения отчетов преобразуются в типы данных среды CLR. В следующей таблице показаны применяемые преобразования, которые обозначены «По умолчанию».

Тип RDL Типы CLR
Строка По умолчанию: String

Chart, GUID, Timespan
Логический По умолчанию: Boolean
Целое По умолчанию: Int64

Int16, Int32, Uint16, Uint64, Byte, Sbyte
Дата/время По умолчанию: DateTime

DateTimeOffset
Тип с плавающей запятой По умолчанию: Double

Single, Decimal
Binary По умолчанию: Byte[]
Вариант Любое из вышеприведенного, кроме Byte[]
VariantArray Массив данных типа Variant
Упорядочиваемый уровень изоляции Значение типа Variant или типов, отмеченных свойством Serializable или реализующих интерфейс ISerializable.

Общие сведения о типах данных и о записи выражений

Важно понимать типы данных при написании выражений, в которых сравниваются или сочетаются значения, например, при определении выражений группы или критериев фильтра либо при вычислении статистических значений. Сравнения и вычисления допускаются только с элементами одного типа данных. Если типы данных не совпадают, можно явно преобразовать тип данных в элементе отчета с помощью выражения.

Ниже описаны случаи, когда необходимо преобразовать один тип данных в другой.

  • Сравнение значения параметра отчета одного типа данных с полем набора данных другого типа.

  • Написание критерия фильтра, в котором сравниваются значения разных типов данных.

  • Написание выражения сортировки, в котором сочетаются поля, имеющие разный тип данных.

  • Написание выражений группы, в котором сочетаются поля, имеющие разный тип данных.

  • Преобразование значения, полученного из источника данных одного типа данных, в другой тип данных.

Определение типа данных в отчете

Чтобы определить тип данных элемента отчета, можно написать выражение, возвращающее тип данных. Например, чтобы показать тип данных для поля MyField, добавьте к ячейке таблицы следующее выражение: =Fields!MyField.Value.GetType().ToString(). Результат отображает тип данных CLR, используемый для представления поля MyField, например System.String или System.DateTime.

Преобразование полей набора данных в другой тип данных

Можно также преобразовать поля набора данных, прежде чем они будут использоваться в отчете. В следующем списке описаны способы преобразования существующего поля набора данных.

  • Изменение запроса набора данных, чтобы добавить новое поле запроса с преобразованными данными. В реляционных и многомерных источниках данных при этом способе в операции преобразования используются ресурсы источника данных.

  • Создание вычисляемого поля на основе существующего поля набора данных отчета с помощью выражения, преобразующего все данные одного столбца результирующего набора в данные нового столбца с другим типом данных. Например, следующее выражение преобразует поле Year из целочисленного значения в строковое: =CStr(Fields!Year.Value). Дополнительные сведения см. в разделе Добавление, изменение и обновление полей в области данных отчета (построитель отчетов и службы SSRS).

  • Проверка наличия метаданных в используемом модуле обработки данных с целью получения предварительно отформатированных данных. Например, запрос многомерных выражений служб SQL Server Analysis Services включает расширенное свойство FORMATTED_VALUE для значений куба, отформатированных при обработке куба. Дополнительные сведения см. в статье Расширенные свойства поля для базы данных служб Analysis Services (службы SSRS).

Основные сведения о типах данных параметров

Параметры отчета должны иметь один из пяти типов данных: Boolean, DateTime, Integer, Float или Text (также известный как String). Если запрос набора данных включает параметры запроса, автоматически создаются параметры отчета, которые связываются с параметрами запроса. Типом данных по умолчанию для параметра отчета является String. Чтобы изменить тип данных по умолчанию параметра отчета, выберите нужное значение в раскрывающемся списке Тип данных на странице Общие в диалоговом окне Свойства параметров отчета .

Примечание.

Параметры отчета с типами данных DateTime не поддерживают миллисекунды. После создания параметра на основе значений, содержащих миллисекунды, нельзя выбрать значение из раскрывающегося списка доступных значений Date или Time, включающих миллисекунды.

Написание выражений, преобразующих типы данных или получающих части данных

При объединении текста и полей набора данных с помощью оператора объединения (&) среда CLR обычно предоставляет форматы по умолчанию. Если нужно явно преобразовать поле набора данных или параметр в конкретный тип данных, для преобразования данных необходимо использовать метод CLR или функцию библиотеки времени выполнения Visual Basic.

В следующей таблице приводятся примеры преобразования типов данных.

Тип преобразования Пример
DateTime в String =CStr(Fields!Date.Value)
String в DateTime =DateTime.Parse(Fields!DateTimeinStringFormat.Value)
String в DateTimeOffset =DateTimeOffset.Parse(Fields!DateTimeOffsetinStringFormat.Value)
Получение года =Year(Fields!TimeinStringFormat.Value)

-- or --

=Year(Fields!TimeinDateTimeFormat.Value)
Boolean в Integer =CInt(Parameters!BooleanField.Value)

-1 соответствует значению True, а 0 — значению False.
Boolean в Integer =System.Convert.ToInt32(Fields!BooleanFormat.Value)

1 соответствует значению True, а 0 соответствует значению False.
Только часть DateTime значения DateTimeOffset =Fields!MyDatetimeOffset.Value.DateTime
Только часть Offset значения DateTimeOffset =Fields!MyDatetimeOffset.Value.Offset

Для управления отображаемым форматом значений можно также использовать функцию Format. Дополнительные сведения см. в разделе Функции (Visual Basic).

Дополнительные примеры

При соединении с источником данных поставщика данных, не поддерживающим преобразование всех типов данных, типом данных по умолчанию для неподдерживаемых типов является String. В следующих примерах приводятся решения для конкретных типов данных, которые возвращаются как String.

Объединение типов данных String и DateTimeOffset среды CLR

Для большинства типов данных среда CLR обеспечивает преобразования по умолчанию для объединения значений, имеющих разный тип данных, в одну строку с помощью оператора &. Например, следующее выражение объединяет текст "The date and time are: " с полем набора данных StartDate, которое является значением DateTime : ="The date and time are: " & Fields!StartDate.Value.

Для некоторых типов данных может понадобиться включение функции ToString. Например, в следующем выражении показан тот же пример с использованием типа данных CLR DateTimeOffset, который включает дату, время и смещение часового пояса относительно часового пояса времени в формате UTC: ="The time is: " & Fields!StartDate.Value.ToString().

Преобразование строкового типа данных в тип данных DateTime среды CLR

Если модуль обработки данных не поддерживает все определенные в источнике данных типы данных, данные могут быть получены в виде текста. Например, значение с типом данных datetimeoffset(7) можно получить как значение String. В Перте, Австралия, строковое значение 1 июля 2008 г. в 6:05:07.99999999 A.M. будет выглядеть следующим образом:

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

В этом примере показана дата (1 июля 2008), за которой следует время с 7-значной точностью (6:05:07.9999999 утра) и смещение часового пояса времени в формате UTC в часах и минутах (+ 8 часов 0 минут). В следующих примерах это значение помещается в поле с типом данных String с именем MyDateTime.Value.

Для преобразования этой даты в одно или несколько значений CLR можно воспользоваться одним из следующих способов.

  • В текстовом поле получите часть строки с помощью выражения. Например:

    • Следующее выражение возвращает часть строки, относящуюся к часу смещения часового пояса времени в формате UTC, и преобразует ее в минуты: =CInt(Fields!MyDateTime.Value.Substring(Fields!MyDateTime.Value.Length-5,2)) * 60

      Результат 480.

    • Следующее выражение преобразует строку в значение даты и времени: =DateTime.Parse(Fields!MyDateTime.Value)

      В строке MyDateTime.Value указано смещение часового пояса времени в формате UTC. Функция DateTime.Parse вначале определяет смещение времени в формате UTC (7:00 утра — [+08:00] относительно времени в формате UTC 23:00 предыдущего вечера). Затем функция DateTime.Parse применяет локальное смещение времени в формате UTC сервера отчетов и при необходимости настраивает переход на летнее время. Например, в Ричмонде, штат Вашингтон, смещение локального времени с переходом на летнее время составляет [-07:00], или на 7 часов раньше 23:00. Результатом является следующее значение типа DateTime : 2007-07-06 04:07:07 PM (6 июля 2007 г., 16:07).

Дополнительные сведения о преобразовании строк в типы данных DateTime см. в статьях Синтаксический анализ строк даты и времени, Форматирование даты и времени для конкретной культуры и Выбор типов данных DateTime, DateTimeOffset и TimeZoneInfo.

  • Добавление нового вычисляемого поля к набору данных отчета, который использует выражение для получения части строки. Дополнительные сведения см. в разделе Добавление, изменение и обновление полей в области данных отчета (построитель отчетов и службы SSRS).

  • Изменение запроса набора данных отчета, чтобы использовать функции Transact-SQL для независимого получения значений даты и времени и создания отдельных столбцов. В следующем примере показано использование функции DatePart для добавления столбца к году и столбца к смещению часового пояса времени в формате UTC, преобразованного в минуты:

    SELECT

    MyDateTime,

    DATEPART(year, MyDateTime) AS Year,

    DATEPART(tz, MyDateTime) AS OffsetinMinutes

    FROM MyDates

    Результирующий набор содержит три столбца. Первый столбец представляет дату и время, второй — год, а третий содержит значение смещения времени в формате UTC в минутах. В следующей строке показаны данные примера:

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

Дополнительные сведения о типах данных в базах данных SQL Server см. в разделах Типы данных (Transact-SQL) и Типы данных и функции даты и времени (Transact-SQL).

Дополнительные сведения о типах данных SQL Server Analysis Services см. в разделе Типы данных в службах Analysis Services.

См. также

Форматирование элементов отчета (построитель отчетов и службы SSRS)