探秘豐富多彩的ADOMD.NET對象
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);
- }
- }
- }