Multilookup 函数(报表生成器和 SSRS)

从包含名称/值对的数据集中返回指定名称集的第一匹配值集。

注释

可以在报表生成器和 SQL Server Data Tools 中的报表设计器中创建和修改报表定义(.rdl)。 每个创作环境提供了创建、打开和保存报表和相关项的不同方法。 有关详细信息,请参阅 microsoft.com Web 上的 报表设计器和报表生成器(SSRS)中设计报表

语法

  
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 从数据集中检索一组值,这些值属于具有 1 对 1 关系的名称-值对。 MultiLookup 等效于调用 Lookup 一组名称或键。 例如,对于基于主键标识符的多值参数,可以在表中的文本框中使用 Multilookup 表达式来检索未绑定到参数或表的数据集中的关联值。

Multilookup 执行以下操作:

  • 计算当前作用域中源表达式的结果并生成变体对象的数组。

  • 对于数组中的每个对象,调用 Lookup 函数(报表生成器和 SSRS)并向返回数组添加结果。

  • 返回结果集。

若要从具有指定名称的名称/值对(具有 1 对 1 的关系)的数据集中检索单个值,请使用 Lookup 函数(报表生成器和 SSRS)。 若要从具有某名称的名称-值对(具有 1 对多的关系)的数据集中检索多个值,请使用 LookupSet 函数(报表生成器和 SSRS)

存在以下限制:

  • Multilookup 在应用所有筛选器表达式后计算

  • 只支持一个级别的查找。 源、目标或结果表达式不能包含对查找函数的引用。

  • 源和目标表达式必须对同一数据类型计算结果。

  • 源、目标和结果表达式不能包含对报表或组变量的引用。

  • Multilookup 不能用作以下报表项的表达式:

    • 数据源的动态连接字符串。

    • 数据集中的计算字段。

    • 数据集中的查询参数。

    • 数据集中的筛选器。

    • 报表参数。

    • Report.Language 属性。

有关详细信息,请参阅聚合函数引用(报表生成器和 SSRS)总计、聚合和内置集合的表达式作用域(报表生成器和 SSRS)

示例:

假设名为“Category”的数据集包含字段 CategoryList,该字段包含以逗号分隔的类别标识符列表,例如“2、4、2、1”。

数据集 CategoryNames 包含类别标识符和类别名称,如下表中所示:

身份证件 名称
1 配件
2 自行车
3 服装
4 组件

若要查找与标识符列表对应的名称,请使用 Multilookup。 必须先将列表拆分为字符串数组,调用 Multilookup 以检索类别名称,然后将结果串联到字符串中。

将以下表达式放入绑定到 Category 数据集的数据区域中的文本框时,显示“自行车, 组件, 自行车, 附件”:

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

示例:

假定数据集 ProductColors 包含颜色标识符字段 ColorID 和颜色值字段 Color,如下表中所示:

颜色识别 颜色
1 红色
2
3 绿色

假定多值参数 MyColors 未绑定到数据集以获取可用值。 该参数的默认值设置为 2 和 3。 将以下表达式放入表中的文本框时,将该参数的多个所选值连接为逗号分隔的列表并显示“蓝色, 绿色”。

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

另请参阅

在报表中使用表达式(报表生成器和 SSRS)
表达式示例(报表生成器和 SSRS)
表达式中的数据类型(报表生成器和 SSRS)
总计、聚合和内置集合的表达式作用域(报表生成器和 SSRS)