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

推荐订阅源

C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
Jina AI
Jina AI
Microsoft Security Blog
Microsoft Security Blog
IT之家
IT之家
V
Visual Studio Blog
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 聂微东
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
大猫的无限游戏
大猫的无限游戏
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
D
Docker
MyScale Blog
MyScale Blog
小众软件
小众软件
云风的 BLOG
云风的 BLOG
美团技术团队
Microsoft Azure Blog
Microsoft Azure Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 【当耐特】

博客园 - 随风而逝

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