查找函数 (报表生成器和 SSRS)

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

注释

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

语法

  
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 从指定的数据集中检索具有 1 对 1 关系的名称/值对的值。 例如,对于表中的 ID 字段,可以使用 Lookup 从未绑定到数据区域的数据集中来检索相应的 Name 字段。

Lookup 执行以下操作:

  • 计算当前作用域中源表达式的结果。

  • 根据指定数据集的排序规则,在应用筛选器后对指定数据集的每行计算目标表达式的结果。

  • 对于源表达式和目标表达式的第一个匹配,计算数据集中该行的结果表达式。

  • 返回结果表达式值。

若要检索具有 1 对多关系的单个名称或键字段的多个值,请使用 LookupSet 函数(报表生成器和 SSRS)。 若要调用Lookup一组值,请使用 Multilookup 函数(报表生成器和 SSRS)。

存在以下限制:

  • Lookup 在所有筛选器表达式应用之后进行评估。

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

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

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

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

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

    • 数据集中的计算字段。

    • 数据集中的查询参数。

    • 数据集中的筛选器。

    • 报表参数。

    • Report.Language 属性。

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

示例:

在以下示例中,假定表绑定到包含产品标识符 ProductID 字段的数据集。 名为“Product”的单独数据集包含相应的产品标识符 ID 和产品名称名称。

在以下表达式中, Lookup 将 ProductID 的值与名为“Product”的数据集的每一行中的 ID 进行比较,如果找到匹配项,则返回该行的 Name 字段的值。

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

另请参阅

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