探秘豐富多彩的ADOMD.NET對(duì)象
ADOMD.NET對(duì)象對(duì)象和Measure對(duì)象有兩個(gè)方法常用:Caption和UniqueName.通常來(lái)說(shuō)需要獲得一個(gè)維度下的所有度量值和維度,這兩個(gè)屬性就足夠了.但有些時(shí)候把UniqueName作為動(dòng)態(tài)構(gòu)建MDX語(yǔ)句的部分會(huì)出現(xiàn)問題..#t#
比如,Dimension對(duì)象,我們都知道一個(gè)維度下面很可能分很多的層次,對(duì)于有層次的維度直接把其作為構(gòu)建ADOMD.NET對(duì)象的一部分會(huì)提示錯(cuò)誤,需要指明是這一層次下的具體哪一個(gè),這些層次在ADOMD.NET對(duì)象中對(duì)應(yīng)的就是Hierarchies屬性,用來(lái)返回維度下的層次集合HierarchyCollection,而且其成員也是Hierarchy,對(duì)應(yīng)其中的一個(gè)層次.
例如:對(duì)于時(shí)間維度,通常都會(huì)有如下的層次:年,季,月,日等.在這個(gè)時(shí)間維度中,Dimension對(duì)象"時(shí)間"其下有五個(gè)Hierarchy,它們就是年,季,月,日,當(dāng)然還有時(shí)間其本身.根據(jù)Hierarchy的UniqueName屬性,就可以得到其可作為動(dòng)態(tài)構(gòu)建MDX語(yǔ)句的引用。
在如下代碼中,當(dāng)讀取到立方體中的一個(gè)維度之后,首先把維度類型為Measure的去掉,然后枚舉每個(gè)維度下的所有層次,把其列出來(lái),創(chuàng)建一個(gè)ADOMD.NET對(duì)象把其加入到類型為L(zhǎng)istBox的容器中.
- 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);
- }
- }
- }