微软BI开拓者

首页 » 多维分析专区 » MDX » 请教一MDX问题
flysky - 7/21/2007 12:55:00 PM
我是一个初学者,在学习别人做的一个项目是遇到了一个这样的问题,请各位老师帮忙看看!代码如下:
string sCmd="SELECT Non Empty Head({[CellSetGrid2|1_2]*{[Measures].[Internet Sales-Order Quantity]}},100) ON COLUMNS , HEAD(NonEmpty([CellSetGrid2|1_0],Axis(0)),31) ON ROWS from  [Analysis Services Tutorial] CELL PROPERTIES VALUE, FORMATTED_VALUE, FORE_COLOR, BACK_COLOR";
adomdnet.AdomdCommand cmd = new adomdnet.AdomdCommand( sCmd, this.oCon );
adomdnet.CellSet cst=cmd.ExecuteCellSet();
问题是:在程序运行的时候这些代码运行没有问题,可以返回正确的cellset。但是党我把这个mdx语句复制到2005AS中去运行的时候就会在CellSetGrid2这个地方报错。
我想请教的是难道ExecuteCellSet()的时候执行的不是这个MDX语句吗?还有MDX语句中的Head()应该怎么用呢??请各位老实指点,谢谢!
我是初学者不知道有没有表达清楚!
Administrator - 7/23/2007 9:25:00 AM
问题描述得...

head:Returns the first specified number of elements in a set, while retaining duplicates.
www2002 - 7/24/2007 4:30:00 AM
这是ADOMD.NET的东东, 不好在Management Studio中玩的吧,老同学:) .
flysky - 7/24/2007 11:05:00 PM
谢谢administrator,谢谢www2002!
www2002:ADOMD.NET最后也是通过MDX语句去获取数据吧?我是这样理解的,就像操作关系型数据库一样,最后都是通过一条sql语句去获取数据的,在ado.net中最后是通过sqlcommand里面的commandtext这一sql语句去读取数据的。所以在adomd.net的AdomdCommand()中应该也是根据传入的mdx语句去读取数据的。在我的问题中这个mdx语句是“SELECT Non Empty Head({[CellSetGrid2|1_2]*{[Measures].[Internet Sales-Order Quantity]}},100) ON COLUMNS , HEAD(NonEmpty([CellSetGrid2|1_0],Axis(0)),31) ON ROWS from  [Analysis Services Tutorial] CELL PROPERTIES VALUE, FORMATTED_VALUE, FORE_COLOR, BACK_COLOR”,所以我觉得最后肯定是通过这个mdx语句去获取数据的,在程序中可以获得数据,但为什么在Management Studio中运行这个mdx语句就不行了呢?
请指教,谢谢!
流水 - 7/26/2007 2:35:00 PM
这的确是MDX语句,也是通过其来查询获取多维数据的,[CellSetGrid2|1_2]应该是某个其他MDX语句查询获得的结果集中的数据,[CellSetGrid2|1_0] 也应该一样,如果是这样的话,在程序中经过调用处理是可以获得数据的,可是直接把这语句拿到Management Studio就不可以了,因为其不是数据集中的成员,也没有在查询语句中对其进行定义。
Head函数是返回指定集合中前n(指定值)个元素;Head({},n)
flysky - 7/26/2007 10:25:00 PM
谢谢流水!
问题已经弄懂了!在执行ExcuteCellSet()方法之前,已经执行了一个CREATE SET[CellSetGrid2|1_2] as Expression,所以已经创建好了一个Set。
谢谢各位的支持!
1
查看完整版本: 请教一MDX问题