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

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

Каждый набор данных в отчете с разбивкой на страницы содержит одну коллекцию Полей . Коллекция полей — это набор полей, указанных запросом набора данных и другими созданными вычисляемыми полями. После создания набора данных коллекция полей появляется в области Данные отчета .

Простая ссылка на поле в выражении отображается в области конструктора в виде простого выражения. Например, если перетащить поле Sales из области данных отчета в ячейку таблицы в области конструктора, отображается [Sales] . Это значение представляет базовое выражение=Fields!Sales.Value, заданное в свойстве "Значение текстового поля". При запуске отчета обработчик отчетов вычисляет это выражение и отображает фактические данные из источника данных в текстовом поле ячейки таблицы. Дополнительные сведения см. в статьях "Выражения" (построитель отчетов) и коллекции полей набора данных (построитель отчетов).

Примечание.

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

Отображение коллекции полей для набора данных

Чтобы отобразить отдельные значения коллекции полей, перетащите каждое поле в строку детализации таблицы и запустите отчет. Ссылки в строке детализации области данных таблицы или списка отображают значение для каждой строки набора данных.

Чтобы отобразить сводные значения поля, перетащите каждое числовое поле в область данных матрицы. Агрегатной функцией по умолчанию для совокупности строк является Sum, например, =Sum(Fields!Sales.Value). Функцию по умолчанию можно изменить, чтобы вычислять разные сводки. Дополнительные сведения см. в справочнике по агрегатным функциям (построитель отчетов).

Чтобы отобразить суммированные значения для коллекции полей в текстовом поле непосредственно в области конструктора, которая не является частью области данных, необходимо указать имя набора данных в качестве область для статистической функции. Например, для набора данных с именем SalesDataследующее выражение задает сумму всех значений в поле Sales: =Sum(Fields!Sales,"SalesData").

При использовании диалогового окна "Выражение" для определения ссылки на поле можно выбрать коллекцию полей в области "Категория " и просмотреть список доступных полей на панели полей . Каждое поле имеет несколько свойств, включая Value и IsMissing. Остальные свойства предопределяют расширенные свойства поля, которые могут быть доступны набору данных в зависимости от типа источника данных.

Определение значений NULL для поля набора данных

Чтобы обнаружить значение NULL поля (Nothing в Visual Basic), используется функция IsNothing. При размещении в текстовом поле в строке сведений о таблице следующее выражение проверяет поле MiddleName и заменяет текст "Нет промежуточного имени", если значение равно NULL, и само значение поля, если значение не равно NULL:

=IIF(IsNothing(Fields!MiddleName.Value),"No Middle Name",Fields!MiddleName.Value)

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

По умолчанию элементы в коллекции "Поля" имеют два свойства: Value и IsMissing. Свойство IsMissing указывает, содержится ли поле, определенное для набора данных во время разработки, в полях, полученных во время выполнения. Например, запрос может вызвать хранимую процедуру, в которой результирующий набор зависит от входного параметра, или запрос может быть SELECT * FROM <table> изменен определение таблицы.

Примечание.

IsMissing обнаруживает изменения схемы набора данных между временем разработки и временем выполнения для любого типа источника данных. IsMissing не может использоваться для обнаружения пустых элементов в многомерном кубе и не связан с понятиями языка запросов многомерных выражений пустых и НЕ ПУСТЫх.

Свойство IsMissing можно проверить в пользовательском коде, чтобы определить, присутствует ли поле в результирующем наборе. Вы не можете проверить наличие с помощью выражения с вызовом функции Visual Basic, например IIF или SWITCH, так как Visual Basic оценивает все параметры в вызове функции, что приводит к ошибке при оценке ссылки на отсутствующие.

Пример для управления видимостью динамического столбца для отсутствующих полей

Чтобы задать выражение, управляющее видимостью столбца, отображающего поле в наборе данных, необходимо сначала определить пользовательскую функцию кода. Эта функция должна возвращать логическое значение. Значение зависит от того, отсутствует ли поле. Например, следующая функция пользовательского кода возвращает значение true, если поле отсутствует, и значение false при его наличии.

Public Function IsFieldMissing(field as Field) as Boolean  
 If (field.IsMissing) Then  
 Return True  
  Else   
  Return False  
 End If  
End Function  

Чтобы использовать эту функцию для управления видимостью столбца, присвойте свойству Hidden столбца следующее выражение:

=Code.IsFieldMissing(Fields!FieldName)

Столбец скрыт, если поле не существует.

Пример для управления значением текстового поля для отсутствующих полей

Чтобы заменить текст вместо значения отсутствующих полей, необходимо написать пользовательский код. Этот код должен возвращать текст, который можно использовать в качестве замены при отсутствии поля. Например, следующая пользовательская функция кода возвращает значение поля, если это поле существует. Кроме того, код возвращает сообщение, указанное в качестве второго параметра, если поле не существует:

Public Function IsFieldMissingThenString(field as Field, strMessage as String) as String  
 If (field.IsMissing) Then  
  Return strMessage  
 Else   
  Return field.Value  
  End If  
End Function  

Чтобы использовать эту функцию в текстовом поле, добавьте следующее выражение к свойству Value:

=Code.IsFieldMissingThenString(Fields!FieldName,"Missing")

Текстовое поле отображает значение поля или указанный текст.

Использование расширенных свойств поля

Расширенные свойства поля — это другие свойства, определенные в поле с помощью модуля обработки данных. Тип источника данных определяет для набора данных. Расширенные свойства поля могут быть стандартными или зависящими от конкретного источника данных. Дополнительные сведения см. в разделе расширенных свойств полей для базы данных служб Analysis Services (SSRS).

Если указать свойство, которое не поддерживается для этого поля, выражение оценивается как null (Nothing в Visual Basic). Если поставщик данных не поддерживает расширенные свойства поля или если поле не найдено при выполнении запроса, значение свойства равно NULL (Nothing в Visual Basic) для свойств типа String и Object, а также ноль (0) для свойств целочисленного типа Integer. Модуль обработки данных может воспользоваться предопределенными свойствами, оптимизируя запросы, которые включают этот синтаксис.

Примеры выражений (построитель отчетов)
Наборы данных отчета