Функция 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)