[]
除了以上所述各类通用函数,报表还支持微软RDL标准规范中的其他函数,以及一些特殊用途的函数。有关RDL标准规范函数,参见微软MSDN: https://msdn.microsoft.com/zh-cn/library/ms252112(v=vs.80)
函数 | 说明 | 语法 |
---|---|---|
GetFields | 返回字段列表集合,仅限数据区域内使用。此函数可令复杂条件的表达式更易于编写。 | =GetFields() |
InScope | 判断当前值是否在某个作用域内。 | InScope(<作用域>) |
Level | 返回当前值在层次结构中的级别。层次结构的第一级是0。 | Level() |
Level(with scope) | 在指定的作用域内,返回当前值在层次结构中的级别。层次结构的第一级是0。 | Level(<作用域>) |
Lookup | 返回外键关联的另一数据集的指定字段值。 | Lookup(<主数据集字段>, <关联数据集匹配字段>, <关联数据集数据字段>, <关联数据集名称>) |
Lookupset | 从指定的数据集中返回多行数值。 | LookupSet(<主数据集字段>, <关联数据集匹配字段>, <关联数据集数据字段>, <关联数据集名称>) |
Previous | 返回指定作用域中的前一个值,例如上一行记录的某一字段的值。 | Previous(<表达式>) |
RowNumber | 返回当前行号 | RowNumber() |
RowNumber(with scope) | 返回指定作用域内的记录行号。 | RowNumber(<作用域>) |
GetLength | 获得数组的长度。参数为0或1,代表数组的维。 | <Collection>.GetLength(<Number>) |
Item | 由Fields/Parameters/ReportItems按名称返回内容。 | <Object | Record>.Item(<String>) |
Join | 连接指定数组的元素或集合的成员,在每个元素或成员之间使用指定的分隔符。 | Join(<数组>, <分隔符>) |
其中,应用较多的是Lookup函数、LookupSet函数、RowNumber函数和Join函数。
Lookup函数的典型用途是将多个数据集合并展示在同一个表格元素中,解决跨源整合的问题。
函数语法定义:
{Lookup(<SourceExpression>, <DestinationExpression>, <ResultExpression>, <LookupDataset>)}
参数说明:
SourceExpression:主数据集的一个字段值,通常是数据库外键字段值。
DestinationExpression:关联数据集的一个字段值,通常是数据库外键字段所参照的表的主键字段值。该字段的值应等于主数据集的SourceExpression字段值。
ResultExpression:关联数据集的另一个字段值,通常是数据库外键字段所参照的表的数据字段值。该字段值将显示在表格中。
例如,创建报表后,分别创建一个名为“产品”的报表数据源,数据表为产品表;和一个名为“类别”的数据源,数据表为类别表。
在产品类别下面的单元格输入表达式:{Lookup(类别ID, 类别ID, 类别名称, "类别_DataSet")},如下图:
报表预览如下图:
LookupSet函数从指定的数据集中返回多行数值,因此您可以使用此函数来实现1对多的返回关系。
LookupSet函数返回的数据集字段与常规数据集字段用法相同,可以在数据区域范围内的函数/聚合中进行使用。
函数语法定义:
LookupSet(<SourceExpression>, <DestinationExpression>, <ResultExpression>, <LookupSetDataset>)
参数说明:
SourceExpression:主数据集的一个字段值,通常是数据库外键字段值。
DestinationExpression:关联数据集的一个字段值,通常是数据库外键字段所参照的表的主键字段值。该字段的值应等于主数据集的SourceExpression字段值。
ResultExpression:关联数据集的另一个字段值,通常是数据库外键字段所参照的表的数据字段值。
LookupSetDataset:常量,关联数据集的名称。
例如,创建报表后,分别创建一个名为“产品”的报表数据源,数据表为产品表;和一个名为“类别”的数据源,数据表为类别表。
在产品类别下面的单元格输入表达式:{Join(Lookupset(类别ID, 类别ID, 产品名称, "产品_DataSet"), ",")},如下图:
下面的报表显示了每种商品类别中包含的商品名称,并将商品名称显示为以逗号分隔的字符串。
这里使用Join函数将LookupSet函数的查询结果转换为字符串进行显示。
报表预览如下图:
RowNumber函数返回当前行号,典型用途是实现行号自动展示和表格交替背景色。
设置表格,将表格第二行第一个单元格设置为“{RowNumber()}”,标题为“行号”,如下图:
选中表格数据明细行整行,在属性设置的背景选项区域,选择颜色后面的,选择“表达式”,如下图。
输入表达式“{IIF(RowNumber(Nothing) Mod 2, Silver, "White")}”,该表达式的含义为:如果行号能被2整除,则背景色为银色(Silver,视觉效果为浅灰色),否则为白色。
预览报表效果,如下图:
使用Join函数可以将数组转换为字符串。
比如希望将多选下拉列表中勾选的内容显示在报表中,如下图所示,就需要用到Join函数。因为此时报表参数是一个多值参数的数组,直接使用会显示为“System.Object[]”,不能获取到数组中的具体值。
使用Join函数将数组转换为字符串才可以将具体的值显示出来。
多选下拉列表示例,制作一个多值参数的下拉列表。
参考添加页眉。
将报表参数拖拽到页眉区域,并调整文本框大小以及居中方式。
将表达式调整为:{Join(@类别名称, ",")}-销售明细表 。
表达式解析:表达式中Join 函数将参数获取到的数组用逗号拼接为字符串,这样才可以显示出来。后边的“-销售明细”为拼接的固定字符串,直接显示。
预览报表,查看效果。报表页眉会根据勾选的查询条件来动态的显示参数值。