← 返回所有博客文章

很多用户反馈希望在同一数据控件中加载多个数据集,这样就会大大提升报表设计的灵活性和强大性。因为很多用户数据最终都是以独立的DataTable呈现给客户,所以无法编写SQL 语句但是又需要 主键和外键的结合,之前有的解决方法是通过嵌套子报表来完成,但是实现起来也确实复杂。

在ActiveReports 11 SP1 中,开发人员又为我们带来了一大惊喜,提供了LookUp函数来实现这一功能。

1. Lookup 函数

语法

=Lookup(<SourceExpression>,<DestinationExpression>,<ResultExpression>, LookupDataset>)

函数说明

  • 对比标准: 仅支持“=”操作符
  • SourceExpression: 源表达式。作为匹配的条件。
  • DestinationExpression:目标表达式,用来与源表达式进行匹配。
  • ResultExpression:表示返回值,如果目标表达式和源表达式相等,返回的值。
  • LookupDataSet: 指定具体要查找的数据集
  • 使用条件

  • 源表达式和目标表达式的数据类型应一致
  • 如果找到满足条件的值则返回单个值,如果没有则返回Null
  • Lookup 表达式可以当做是聚合函数的一部分,所以用户可以使用这个函数在表头或表尾,分组等,也可以进行Sum求和。
  • 限制
    • 只支持=操作符
    • 不支持非聚合表达式如Mode, And,Or等
    • 不支持Lookup函数嵌套使用。

    2. 使用步骤

    1. 在项目中添加 ActiveReports RDL 报表

    2. 连接数据源

    clip_image002

    3. 添加数据集

    添加DataSet1

    Sql 语句:

    select dbo.订单.*

    from dbo.订单

    clip_image004

    添加DataSet2

    select dbo.客户.* from dbo.客户

    clip_image006

    4. 添加表格控件

    为表格控件指定数据集DataSet1,并添加列

    clip_image008

    添加【客户名称】列,设置Value属性

    =Lookup( [客户ID] , [客户ID] , [公司名称], "DataSet2")

    clip_image010

    5. 预览报表

    clip_image012

    下载附件:

     

    了解ActiveReports产品更多特性:

    /developer/activereports

    下载产品体验产品功能:

    /download/?pid=16