回复: 父子维度在rpt里面如何实现级别
父子维度是一种非常特殊的维度,在其维度中,只通过一张表就可以体现一定的层次结构,并且这种层次结构的层次是无限的,可以任意增加。正是由于父子维度这种特殊的结构,使它具有了很多特性,来实现很多特殊的功能。
在Reporting Services中,由于是将多维数据集转换为平面数据集,再在报表上进行应用,这样,父子维度的层次结构在Reporting Services中就无法体现出来了,最后的展示效果就变成所有的成员都在一层上了。
为了在Reporting Services中体现出父子维度的层次结构,我们需要进行一些特殊的设置:
1. 在数据集中增加两列,一列为维度成员的唯一名称,一列为维度成员的唯一父级名称,如:
with member [Measures].[id] as '[Employee].[Employees].currentmember.uniqueNAME' member [Measures].[parentid] as '[Employee].[Employees].currentmember.properties("ARENT_UNIQUE_NAME")'
SELECT NON EMPTY { [Measures].[id],[Measures].[parentid],[Measures].[Reseller Sales Amount] } ON COLUMNS, NON EMPTY { (DESCENDANTS([Employee].[Employees].[Employee Level 02].ALLMEMBERS) ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME, PARENT_UNIQUE_NAME, LEVEL_NUMBER ON ROWS FROM [Adventure Works] CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

2. 在表格中设置明细组为“id”,设定父组为“parentid”,然后在可见性中设置为“隐藏”,并将关联的报表项设置为“parentid”。
3. 在表格明细中,设定“Employees”文本框的左边距设定为:
level("table1DetailsGroup")*20 & "pt"
这样,就可以实现对父子维度的层次结构进行钻取了。
