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

推荐订阅源

罗磊的独立博客
Recent Announcements
Recent Announcements
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
J
Java Code Geeks
T
The Blog of Author Tim Ferriss
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
U
Unit 42
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
T
Tailwind CSS Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
腾讯CDC
I
InfoQ
GbyAI
GbyAI
博客园_首页

博客园 - 随风而逝

现况调查的方法及种类 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,这种方法执行的时候会报错说“类型不匹配”的。