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

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

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

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

Синтаксис

Multilookup(source_expression, destination_expression, result_expression, dataset)

Параметры

  • source_expression
    (VariantArray) Выражение, вычисляемое в текущей области и указывающее набор имен или ключей для поиска. Например, для многозначного параметра =Parameters!IDs.value.

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

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

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

Возвращает

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

Замечания

Функция Multilookup служит для извлечения набора значений из набора данных, содержащего пары «имя-значение» со связью «один-к-одному». Функция MultiLookup является эквивалентом функции Lookup для набора имен или ключей. Например, для параметра с несколькими значениями на основе идентификаторов первичных ключей функция Multilookup может быть использована в выражении в текстовом поле таблицы для извлечения связанных значений из набора данных, не привязанного к параметру или таблице.

Multilookup выполняет следующее:

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

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

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

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

  • Исходное и целевое выражения должны возвращать один и тот же тип данных.

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

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

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

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

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

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

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

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

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

Пример

Предположим, набор данных Category содержит поле CategoryList, которое содержит список идентификаторов категорий с разделителями-запятыми, например «2, 4, 2, 1».

Набор данных CategoryNames содержит идентификатор категории и название категории, как показано в следующей таблице.

Идентификатор

Имя

1

Accessories

2

Bikes

3

Одежда

4

Components

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

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

=Join(MultiLookup(Split(Fields!CategoryList.Value,","),
   Fields!CategoryID.Value,Fields!CategoryName.Value,"Category")),
   ", ")

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

ColorID

Цвет

1

Красный

2

Синий

3

Зеленый

Предположим, многозначный параметр MyColors не привязан к набору данных для получения доступных значений. Параметру присваиваются значения по умолчанию 2 и 3. Следующее выражение при размещении в текстовом поле в таблице объединяет несколько выбранных значений для параметра в один список значений с разделителями-запятыми и отображает «Синий, зеленый».

=Join(MultiLookup(Parameters!MyColors.Value,Fields!ColorID.Value,Fields!Color.Value,"ProductColors"),", ")