ADOMD.NET对象对象和Measure对象有两个方法常用:Caption和UniqueName.通常来说需要获得一个维度下的所有度量值和维度,这两个属性就足够了.但有些时候把UniqueName作为动态构建MDX语句的部分会出现问题..#t#
比如,Dimension对象,我们都知道一个维度下面很可能分很多的层次,对于有层次的维度直接把其作为构建ADOMD.NET对象的一部分会提示错误,需要指明是这一层次下的具体哪一个,这些层次在ADOMD.NET对象中对应的就是Hierarchies属性,用来返回维度下的层次集合HierarchyCollection,而且其成员也是Hierarchy,对应其中的一个层次.
例如:对于时间维度,通常都会有如下的层次:年,季,月,日等.在这个时间维度中,Dimension对象"时间"其下有五个Hierarchy,它们就是年,季,月,日,当然还有时间其本身.根据Hierarchy的UniqueName属性,就可以得到其可作为动态构建MDX语句的引用。
在如下代码中,当读取到立方体中的一个维度之后,首先把维度类型为Measure的去掉,然后枚举每个维度下的所有层次,把其列出来,创建一个ADOMD.NET对象把其加入到类型为ListBox的容器中.
- foreach (Dimension mydim in mycubes[m].Dimensions)
- {
- if (mydim.DimensionType != DimensionTypeEnum.Measure)
- {
- foreach (Hierarchy myh in mydim.Hierarchies)
- {
- ListItem li = new ListItem();
- li.Text = myh.Caption;
- li.Value = myh.UniqueName;
- lbDims.Items.Add(li);
- }
- }
- }