微软BI SSRS渐悟之多参情况下在报表层面过滤数据行

浏览: 2409

引言

今天一位朋友提到这样一个问题:如何根据参数(多选)选择,在表达式中控制数据显示、隐藏。通常情况下,我们参数过滤数据会直接针对数据集过虑。但是这儿因为他在报表层面使用ReturnValue给数据做了排名,想在过滤数据的同时不影响排名,所以不能过滤数据集。那么,如何来实现这个功能呢?

我们可以通过表达式来控制分组的可见性实现此功能。

关键知识点

MultiLookup:使用 Multilookup 可以从数据集中为若干名称-值对(其中每个名称-值对都具有一对一关系)检索一组值。MultiLookup 等同于针对一组名称或键调用 Lookup。例如,对于一个基于主键标识符的多值参数,可以在表中文本框内的表达式中使用 Multilookup,从未与参数或表绑定的数据集中检索关联的值。

Filter:基于指定筛选条件返回包含字符串数组子集的以零为基的数组。

MultiLookup

此种方法实现的前提是表不能有分组,矩阵的默认分组可以。原因是:此方法是从整个数据集中检索数据,所以它的检索无法限制在某个组内。

=Not(IsArray(MultiLookup(Parameters!shoparea.Value,Fields!ShopArea.Value,Fields!ShopID.Value,"DataSet1")))

由于简单,我简述下实现步骤,就不截实现过程了。

右键“分组”,“组属性”,“可见性”,“表达式”,输入以上表达式。

重点解释下MultiLookup:MultiLookup(参数(多选,即数组),要查找的值(即数据集中的字段),要显示的值(即数据集中的字段,这儿可以取任意字段因为并不做显示),"数据集名称(即要查询的数据集)")。简单来说就是,用当前行中要查找的值,去多选参数中查询该值是否存在,存在则取出要显示的值。

Filter

=IIF(Filter(Parameters!shoparea.Value,Fields!ShopArea.Value,True,CompareMethod.Binary).Length = 0 ,True,False)

此种方法实现过程同上。

推荐 0
本文由 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册