Функция Lookup (построитель отчетов версии 3.0 и службы SSRS)

Возвращает первое совпадающее значение для заданного имени из набора данных, содержащего пары «имя-значение».

ПримечаниеПримечание

В построителе отчетов и в конструкторе отчетов среды Business Intelligence Development Studio можно создавать и изменять определения отчета (RDL). В каждой среде разработки существуют различные способы создания, открытия и сохранения отчетов и связанных элементов. Дополнительные сведения см. в разделе Разработка отчетов в построителе отчетов и конструкторе отчетов 3.0 (SSRS) на веб-сайте microsoft.com.

Синтаксис

Lookup(source_expression, destination_expression, result_expression, dataset)

Параметры

  • source_expression
    (Variant) Выражение, вычисляемое в текущей области и указывающее имя или ключ для поиска. Например, =Fields!ProdID.Value.

  • destination_expression
    (Variant) Выражение, вычисляемое для каждой строки в наборе данных и указывающее имя или ключ для сопоставления. Например, =Fields!ProductID.Value.

  • result_expression
    (Variant) Выражение, вычисляемое для строки в наборе данных, для которой source_expression = destination_expression, и задающее значение, которое нужно найти. Например, =Fields!ProductName.Value.

  • dataset
    Константа, задающая имя набора данных в отчете. Например, «Продукты».

Возвращает

Возвращает значение Variant или Nothing, если совпадения нет.

Замечания

Используйте функцию Lookup, чтобы получить значение из указанного набора данных, состоящего из пар имя-значение со связью один к одному. Например, для поля ID в таблице можно использовать Lookup для извлечения соответствующего поля Name из набора данных, не связанного с областью данных.

Функция Lookup выполняет следующие действия.

  • вычисляет исходное выражение в текущей области;

  • Вычисляет целевое выражение для каждой строки указанного набора данных после применения фильтров с учетом заданных для него параметров сортировки.

  • при первом совпадении исходного и целевого выражений вычисляет результирующее выражение для этой строки в наборе данных;

  • возвращает значение результирующего выражения.

Для поиска множественных значений по одному имени или ключевому полю, если существует связь «один ко многим», используйте Функция LookupSet (построитель отчетов версии 3.0 и службы SSRS). Чтобы вызвать функцию Lookup для набора значений, используйте Функция Multilookup (построитель отчетов версии 3.0 и службы SSRS).

Существуют следующие ограничения.

  • Функция Lookup вычисляется после применения всех выражений фильтров.

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

  • Исходное и целевое выражения должны возвращать один и тот же тип данных. Возвращаемый тип совпадает с типом данных вычисленного результирующего выражения.

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

  • Функцию Lookup нельзя использовать в качестве выражения для следующих элементов отчета:

    • динамические строки соединения для источника данных;

    • вычисляемые поля в наборе данных;

    • параметры запроса в наборе данных;

    • фильтры в наборе данных;

    • параметры отчета;

    • свойство Report.Language.

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

Пример

В следующем примере предположим, что таблица привязана к набору данных, включающему в себя поле для идентификатора продукта ProductID. Отдельный набор данных с именем Product содержит соответствующий идентификатор ID и его название Name.

В следующем выражении функция Lookup сравнивает значение ProductID со значением ID для каждой из строк набора данных Product и при совпадении возвращает значение поля Name для этой строки.

=Lookup(Fields!ProductID.Value, Fields!ID.Value, Fields!Name.Value, "Product")