Использование в выражениях ссылок на коллекцию полей набора данных (построитель отчетов 2.0)
В каждом наборе данных отчета содержится одна коллекция Fields. Коллекция Fields представляет собой набор полей, заданных запросом набора данных, и все созданные дополнительные вычисляемые поля. После создания набора данных коллекция полей появляется в области Данные отчета.
Простая ссылка на поле в выражении отображается в области конструктора в виде простого выражения. Например, если перетащить поле Sales из области данных отчета в ячейку таблицы в области конструктора, службы Reporting Services отображают значение [Sales]. Оно представляет базовое выражение =Fields!Sales.Value, установленное для свойства текстового поля Value. При запуске отчета обработчик отчетов вычисляет это выражение и отображает фактические данные из источника данных в текстовом поле ячейки таблицы. Дополнительные сведения см. в разделах Основные сведения о простых и сложных выражениях (построитель отчетов 2.0) и Работа с полями набора данных отчета (построитель отчетов 2.0).
Отображение коллекции полей для набора данных
Чтобы отобразить отдельные значения коллекции полей, перетащите каждое поле в строку детализации таблицы и запустите отчет. Ссылки в строке детализации области данных таблицы или списка отображают значение для каждой строки набора данных.
Чтобы отобразить сводные значения поля, перетащите каждое числовое поле в область данных матрицы. Статистической функцией по умолчанию для совокупности строк является Sum, например, =Sum(Fields!Sales.Value). Функцию по умолчанию можно изменить, чтобы вычислять разные сводки. Дополнительные сведения см. в разделе Использование встроенных функций отчета и статистических функций в выражениях (построитель отчетов 2.0).
Чтобы отобразить сводные значения для коллекции полей в текстовом поле непосредственно в области конструктора (а не в области данных), необходимо указать имя набора данных в качестве области действия статистической функции. Например, для набора данных с именем 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 <table>, в котором изменилось определение таблицы.
Примечание |
---|
Свойство 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")
В текстовом поле отображается значение поля или указанный текст.
Использование расширенных свойств поля
Расширенные свойства поля представляют собой дополнительные свойства, которые определяются в поле модулем обработки данных, зависящим от типа источника данных для набора данных. Расширенные свойства поля могут быть стандартными или зависящими от конкретного источника данных.
Стандартные свойства – это часто используемые свойства полей, например, Key и UniqueName. Службы Reporting Services сопоставляют свойства источника данных с этими стандартными свойствами. Стандартные свойства появляются в списке IntelliSense в диалоговом окне Выражение. При вводе имени поля с использованием синтаксиса коллекции полей появляется раскрывающийся список доступных свойств. Для стандартных свойств используется синтаксис простой ссылки на поле, например, =Fields!Sales.Value.
Свойства, присущие конкретному источнику данных, не отображаются в диалоговом окне Выражение, но их можно узнать при просмотре источника данных в связанном с ним конструкторе запросов. На любое расширенное свойство поля можно сослаться с помощью синтаксиса коллекции =Fields!FieldName("Property"). Примеры расширенных свойств поля см. в разделе Использование расширенных свойств поля базы данных служб Analysis Services (построитель отчетов 2.0). Примеры поставщиков, поддерживающих расширенные свойства поля, см. в разделах Создание наборов данных отчета из служб SQL Server Analysis Services (построитель отчетов 2.0), Создание наборов данных отчета из источника данных SAP NetWeaver BI (построитель отчетов 2.0) и Создание наборов данных отчета из источника данных Hyperion Essbase (построитель отчетов 2.0).
Если указывается свойство, не поддерживаемое для этого поля, выражение принимает значение null (Nothing в Visual Basic). Если расширенные свойства поля не поддерживаются поставщиком данных или поле не найдено при выполнении запроса, значением свойства будет null (Nothing в Visual Basic) для свойств с типами String и Object, а свойствам типа Integer присваивается значение 0. Модуль обработки данных может использовать преимущества стандартных свойств, оптимизируя запросы, включающие следующий синтаксис.
См. также