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


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

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

Примечание

Создавать и изменять определения отчетов (RDL-файлы) в SQL Server Data Tools можно в построителе отчетов и конструкторе отчетов В каждой среде разработки существуют различные способы создания, открытия и сохранения отчетов и связанных элементов. Дополнительные сведения см. в статье Проектирование отчетов в конструктор отчетов и Report Builder (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.

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

Возвращает

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

Комментарии

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

Метод Multilookup выполняет следующие действия.

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

  • для всех объектов массива вызывается функция Lookup (построитель отчетов и службы SSRS), а результаты добавляются к массиву возвращаемых значений;

  • возвращает набор результатов.

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

Применяются следующие ограничения:

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

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

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

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

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

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

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

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

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

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

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

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

Пример

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

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

ID Имя
1 Accessories
2 Bikes
3 Clothing
4 Components

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

Следующее выражение при помещении текстового поля в область данных, привязанную к набору данных Category, отображает «Bikes, Components, Bikes, Accessories».

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

Пример

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

ColorID Color
1 Красный
2 Синий
3 Зеленый

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

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

См. также:

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