惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tailwind CSS Blog
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 【当耐特】
The Cloudflare Blog
博客园 - 聂微东
博客园 - 司徒正美
量子位
博客园 - 三生石上(FineUI控件)
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
G
Google Developers Blog
Apple Machine Learning Research
Apple Machine Learning Research
罗磊的独立博客
酷 壳 – CoolShell
酷 壳 – CoolShell
Y
Y Combinator Blog
S
SegmentFault 最新的问题
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
Google DeepMind News
Google DeepMind News
Blog — PlanetScale
Blog — PlanetScale
有赞技术团队
有赞技术团队
A
About on SuperTechFans

博客园 - 随风而逝

现况调查的方法及种类 GDP 母版页运行机制 VS2005调试问题解决方案集锦 QQ技术攻略-原来隐藏着这么多秘密 WebService中使用自定义类的解决方法(5种) 英语谚语500句 房产证的作用 五证 10 signs that you’re not cut out to be an IT manager 重新飞翔 你还想熬夜吗? 使用ADOMD.NET建立与Analysis Services的连接 关于MS数据仓库备份 微软的Analysis Services无法连接 表中某列被修改后触发器SQL例子 如何调试触发器 sql server 2005中的DDL触发器 SQL语句备忘录
如何使用ADOMD执行OLAP操作
随风而逝 · 2007-04-10 · via 博客园 - 随风而逝

我所用的OLAP是微软的Analysis Services,后台用SQL Server。用VB.NET实现。

具体做法是先选择菜单“项目”--》“添加引用”,然后在COM组件的标签页中找到ADOMD,添加即可。

1. 连接服务器

Dim conn As New ADODB.Connection
    Dim cat As New ADOMD.Catalog
    Dim cubedef As ADOMD.CubeDef
    Dim dimension As ADOMD.Dimension
    Dim hier As ADOMD.Hierarchy
    Dim level As ADOMD.Level
    Dim member As ADOMD.Member

 conn.ConnectionString = "Datasource=LocalHost; Provider=msolap; Initial Catalog=community;"
        conn.Open()
        cat.ActiveConnection = conn
        cubedef = cat.CubeDefs("Job")
        dimension = cubedef.Dimensions.Item("JobState")
        hier = dimension.Hierarchies.Item(0)
        level = hier.Levels.Item("Jobstate Name")

2. 执行MDX语句

 Dim strMDX As String
        Dim cellset As New ADOMD.Cellset
        Dim axis As ADOMD.Axis
        Dim pos As ADOMD.Position
        strMDX = "SELECT {[Community].[Community Name].Members} on COLUMNS FROM [Job] WHERE ([JobState].[Jobstate Name].[" & RowName & "])"

        cellset.Open(strMDX, conn)

        axis = cellset.Axes(0)
        Dim count As Integer
        count = axis.Positions.Count

GetRowData = Array.CreateInstance(GetType(Integer), count)
        Dim i As Integer
        i = 0
        While i < count
            GetRowData.SetValue(CInt(cellset.Item(i).Value), i)
            i = i + 1
        End While

此处特别注意执行MDX语句的时候,要使用这种形式:

cellset.Open(strMDX, conn)

MSDN上面的例子是先设置CellSet的属性,然后再open,这种方法执行的时候会报错说“类型不匹配”的。