最近在为一家客户提供报表服务的咨询过程中,客户提出了一个需要。
这是一个比较典型的连锁零售行业,他们为很多品牌管理门店,这些品牌在全国各地拥有大量的实体店面。为了更好地管理这些店面,他们在内部设置了大区经理、中区经理和小区经理,每个级别的经理可以管理一个或多个区域,比如一个中区经理可能会管理一个中级区域或者多个中级区域的店面,而这些中级区域可能属于同一个大区下面或者属于不同的大区下面.
为了方便这些区域经理查看自己区域内的数据,客户决定简化报表的外观.那么对于使用了分组的报表就出现了一条简化的方法,那就是如果一个区域经理可以看到的所有区域数据都隶属于一个上级区域,那么就不显示上级区域.
例如,一个中区经理管理着两个中区,而这两个中区属于同一个大区,那么在这个经理看到报表中如果需要使用分组技术的话,那么就不需要显示这个大区的信息.
为了实现这个需求,我们需要用到一个技术,那就是动态属性.
在SQL Server 2005的报表服务中,几乎所有属性都可以通过表达式来进行设置。通过这个技术特性,我们就可以动态控制某个分组是否现实了。
首先我们完成一张常规的报表,报表中使用了分组技术,报表的整体外观如下图:

而报表的分组设置如下图:

在上图中我们可以看到报表中有三个分组,分别是:Category组,Subcategory组和Product组。
为了控制Category组的动态隐藏,我们需要设置Category组所在的Table Row对象的Hidden属性,Hidden属性是一个布尔类型的属性,位于Appearance分组的Visibility组中。Hidden属性所在位置可以参考下图:

在Hidden属性中,输入表达式如下:

这样,我们就可以根据Category组实际在报表中存在的值来确定是否显示Category组了。
报表的运行效果如下:
如果我们仅仅选择一个Category,那么报表就不会显示Category分组ITPUB个人空间6p.k-O`
P3TSba+e

如果我们选择了多个Cateogory,那么报表就会显示Category分组
&C.Q
gg$J$S
w
p%i0