Поделиться через


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

В каждом наборе данных отчета содержится одна коллекция Fields. Коллекция Fields представляет собой набор полей, заданных запросом набора данных, и все созданные дополнительные вычисляемые поля. После создания набора данных коллекция полей появляется в области Данные отчета .

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

Примечание.

Определения отчетов (RDL) можно создавать и изменять в построитель отчетов и в конструктор отчетов в SQL Server Data Tools. В каждой среде разработки существуют различные способы создания, открытия и сохранения отчетов и связанных элементов. Дополнительные сведения см. в разделе "Проектирование отчетов" в конструктор отчетов и построитель отчетов (SSRS) в Интернете в microsoft.com.

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

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

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

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

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

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

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

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

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

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

Примечание.

Свойство IsMissing обнаруживает изменения в схеме набора данных, произошедшие между временем разработки и временем выполнения, для всех типов источников данных. IsMissing нельзя использовать для обнаружения пустых элементов в многомерном кубе и не связан с понятиями языка запросов многомерных выражений EMPTY и NON EMPTY.

Свойство 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). Если поставщик данных не поддерживает расширенные свойства поля или поле не найдено при выполнении запроса, значение свойства ( nullNothing в Visual Basic) для свойств типа String и Objectноль (0) для свойств типаInteger. Модуль обработки данных может использовать преимущества стандартных свойств, оптимизируя запросы, включающие следующий синтаксис.

См. также

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