微软DSO资料(转至menliwxj的专栏)

微软DSO Framer 解决winform中嵌入office(excel,word,ppt) 立即下载
原文: http://blog.youkuaiyun.com/menliwxj/


前段时间在做一个决策支持系统项目,使用了微软的AS,查了很多资料,却没有中文的,只好自己翻译了(因为自己英文比较烂,所以才翻译嘛).现在把它献出来,以供有需要的朋友参考.


DSO决策支系统程序员参考

 

概述

微软SQL Server 2000分析服务为你提供了真正的机会来创建与整合自定义应用程序。服务器对象模型DSO提供了能通过COM自动化程序语言(如VB5.0与后续版本)来使用的接口与对象。此外,VC++程序员也可以使用DSO,DSO对象同时支持早期或延后绑定。

程序员参考提供了使用DSO的细节信息,以用于开发与分析服务器交互的自定义应用程序。关于使用AS的其它程序工具的更多信息,请参阅“编写AS应用程序”一节。

本部分的主题覆盖了以下内容:

主题

描述

Interfaces(接口)

关于你编程操作DSO对象的每个接口的细节,包括接口管理的集合、方法与属性。

Events(事件)

DSO对象支持的事故明细,包括数据库报告与对象处理事件。

Objects(对象)

关于DSO对象的信息。对象的主题由它们拥用的默认接口提供,还包括特定对象的集合、方法与属性。

Enumerations(枚举)

DSO提供的枚举细节与关于如何使用它们的信息

Collections(集合)

DSO中使用的关于集合的信息,包括应用这些集合的常用方法与属性。

 

接口

DSO中有话多接口。对象拥有相似功能实现的公共接口。举几个例子:数据库、多维数据集、分区,以及聚合实现了MDStore接口。MDStore对象是一个多维数据容器。数据库包含多维数据集的关系信息,多维数据集包含存储数据的分区,以及聚合是分区中预先计算好的关联数据的摘要。MDStore对象拥有类似的结构。它们包含分类数据的维度集合,指定关系数据管理系统的数据源包含事故和维度表,定义安全权限的规则,等等。

给一个参考给MDStore接口或其它DSO接口,你能通过测试ClassType属性来确定是哪个类型的对象。实现了MDStore接口的对象可以是以下类型:clsDatabase,clsCube,clsPartition与clsAggregation。贯穿本参考,DSO对象都用前缀符号“cls“标识。DSO 类类型枚举包括所有DSO类类型的完整列表。

不是所有对象都用相同的方法来实现公用接口的,一些对象不实现所有的接口属性、方法与集合。例如,数据库对象(clsDatabase)实现了MDStore公用接口的BeginTrans方法,但立方对象(clsCube)则没有实现。一些对象限制处理某些属性以例于它他成为只读属性,而不是可读/写的。如果你尝试处理一个没有实现的属性或调用一个没有实现的方法,DSO会抛出一个错误。

DSO暴露了Command,Dimension,Level,MDStore,Measure,及Role通用接口。下表列出了DSO通用接口及实现它们的对象类型。

接口

描述

实现对象

Command

Command接口暴露了定义与管理在客户端与AS上执行MDX语句的功能

clsDatabaseCommand

clsCubeCommand

clsRoleCommand

Dimension

Dimension接口定义了属性、方法与集合,你可以用来操作不同类型的维度:数据库维、多维数据集维、分区维以及聚合维。

clsCubeDimension

clsPartitionDimension

clsAggregationDimension

Level

Level接口定义了对象来说明维度的层次

clsDatabaseLevel

clsCubeLevel

clsPartitionLevel

clsAggregationLevel

MDStore

实现MDStore接口的对象均包含以下维:

数据库、多维数据集、分区与聚合

clsDatabase

clsCube

clsPartition

clsAggregation

Measure

实现Measure接口的对象描述了存储在多维数据集,分区,与聚合中的值。

clsCubeMeasure

clsPartitionMeasure

clsAggregationMeasure

Role

实现Role接口的对象包含数据库、多维数据集,与数据挖掘模型的处理权限

clsDatabaseRole

clsCubeRole

clsMiningModelRole

 

一些DSO对象没有实现通用接口。你可以使用这些对象的默认接口:clsServer,clsDataSource,clsMiningModel,clsColumn,clsCubeAnalyzer,clsPartitionAnalyzer,与clsMemberProperty。

 

备注:

DSO类库暴露了许多对象类,例如Cube,Database,Partition,CubeDimension等等。这些对象保留到将来使用并且有意不使用在DSO应用程序中。你应使用通用接口来代替。举个例子,使用以下代码来创建一个类类型为clsDatabase的对象(一个数据库对象实现了MDStore接口):

‘Assume an object (dsoServer) of ClassType clsServer exists.

‘Add database object to server's MDStores collection.

Dim dsoDB As MDStore  

‘Declare the object by the interface.

Set dsoDB = dsoServer.MDStores.AddNew("MyDB")

 

经常使用恰当的对象的通用接口。举个例子,主要的对象类型都使用了MDStore接口作为它们的专用接口。下面的代码例子显示了使用Cube对象的专用接口:

' INCORRECT - DO NOT USE.
   
private dsoCube As DSO.Cube  
   
' CORRECT
   
Private dsoCube As DSO.MDStore   
  

这个规则的唯一例外就是Database对象。如果你的客户端应用程序需要捕获数据库事件,对象的许多接口应用MDStore来代替,如下面的代码所示:

' Use this statement if you do not need to trap events.
   
Public dsoDB as DSO.MDStore 
   
' Use this statement if you need to trap events.
   
Public WithEvents dsoDB as DSO.Database 

Command接口

在DSO中,某些对象可以包含一组用户自定义的命令,以便于你处理对象时这些命令在数据透视表服务客户端自动执行。这些命令可以包括MDX表示的表达式,如定义计算成员,命名集,库资源,及其它命令。

安全提示 命令可能是安全漏洞源;它们可以调用系统或用户自定义的函数而不需要用户知识或干预,且包含存储在简单文本中的安全许可。在实现这些命令前,回顾一下安全问题的命令文本。

实现了Command接口的对象,CubeCommand,DBCommand,与RoleCommand,属性ClassType都有各自的值clsCubeCommand,clsDatabaseCommand,clsRoleCommand。Command接口提供了集合、方法与属性来操作这些对象。

应用于:

clsCubeCommand

clsDatabaseCommand

clsRoleCommand

集合:

Command接口包含以下集合:

集合

描述

CustomProperties

Command对象的用户自定义属性

方法:

Command接口包含以下方法:

方法

描述

Clone

拷贝一个已存在的对象到相同类型的目标对象。

LockObject

锁定一个对象

UnlockObject

解锁一个先前被锁定的对象

Update

保存Command对象的定义到元数据知识库中。

属性:

命令接口支持以下属性:

属性

描述

ClassType

返回标识特定类类型的枚举常量。

CommandType

返回标识命令用途的枚举常量。

Description

设置或返回命令对象的描述。

IsValid

指出Name与Statement属性是否为空,命令对象是否属于一个集合

Name

设置或返回命令对象的名称

OrdinalPosition

返回命令对象在父对象MDStore的Commands集合中的索引号

Parent

返回父对象MDStore的参考

ParentObject

返回当前对象为子对象的父对象的参考

Statement

设置或返回命令文本

SubClassType

返回标识对象的子类类型的枚举常量

clsCubeCommand

类类型为clsCubeCommand的对象提供了特殊的DSO Command接口实现。该对象通过Command接口提供了集合与属性,但没有相关的方法。

备注:

当多维数据集包含要处理的命令时,类类型为clsCubeCommand的对象会自动执行MSSQL2000 AS上压缩了命令。你通过增加一个命令到多维数据集的Commands集合中来为多维数据集增加命令,这种命令包括计算成员,命名集,类参考,以及其它。

需要了解更多信息,请参阅“DSO简介”

例子

创建一个类类型为clsCubeCommand的对象。用以下代码来实现:

'Assume an object (dsoServer) of ClassType clsServer exists

'with existing database and cube

Dim dsoDB As DSO.MDStore     

'Database

Dim dsoCube As DSO.MDStore  

'Cube

Dim dsoCmd As DSO.Command  

'Command

Set dsoDB = dsoServer.MDStores(1)

Set dsoCube = dsoDB.MDStores(1)

Set dsoCmd = dsoCube.Commands.AddNew("CubeCmd1")

clsDatabaseCommand

类类型为clsDatabaseCommand的对象为DSO Command接口提供了特殊的实现。该对象通过Command接口提供集合、方法与属性。

备注

当数据库包含的命令在处理时,MSSQL 2000 AS客户端上会自动执行类型为clsDatabaseCommand的对象压缩了的用户自定义命令。你可以通过向数据库的Commands集合增加命令来实现向数据库增加命令。这些命令包括计算成员、命名集、类参考、等等。

例子

'Assume an object (dsoServer) of ClassType clsServer exists

‘with an existing database

Dim dsoDB As DSO.MDStore     

'Database

Dim dsoCmd As DSO.Command  

'Command

Set dsoDB = dsoServer.MDStores(1)

Set dsoCmd = dsoDB.Commands.AddNew("DBCmd1")

clsRoleCommand

类类型为clsRoleCommand的对象为Command接口提供了特殊的实现。这些对象通过Command接口提供集合与属性,但没有相关方法的实现。

备注

当数据库包含的命令在处理时,MSSQL 2000 AS客户端上会自动执行类型为clsRoleCommand的对象压缩了的用户自定义命令。你可以通过向规则的Commands集合增加命令来实现向规则中增加命令。这些命令包括计算成员、命名集、类参考、等等。

举个例子,你可能想授权给一个计算成员以SalesBonus成员的管理规则,但不想给SalesPerson规则。维护SalesBonus计算成员的命令在处理包含这个规则命令的多维数据集时会自动执行。

例子

使用以下代码来创建一个类型为clsRoleCommand的对象:

'Assume an object (dsoDB) of ClassType clsDatabase exists

Dim dsoRole As DSO.Role  

'Role

Dim dsoCmd As DSO.Command  

'Command

Set dsoRole = dsoDB.Roles(1)

Set dsoCmd = dsoRole.Commands.AddNew("RoleCmd1")

集合 CustomProperties

CustomProperties集合应用到所有DSO对象中,允许你为DSO对象定义唯一属性。CustomProperties集合包含与DSO对象相关的你定义用来存储信息的属性对象。要了解关于定义自定义属性的更多信息,请参阅“属性对象”一节。

权限

读/写

备注

CustomProperties集合实现了它自己的方法与属性,与其它DSO集合的操作有很大的不同。

例子

下面的代码例子展示了增加与找回自定义属性对象:

' Assume the existence of an object of ClassType clsDimension.

' Add a custom property. 

Dim dsoProp As DSO.Property 

Set dsoProp = dsoDim.CustomProperties.Add(55, "Age", vbInteger)

' Retrieve custom property values. 

Dim dsoProp2 As DSO.Property 

Set dsoProp2 = dsoDim.CustomProperties(1) 

Debug.Print dsoProp2.Name, dsoProp2.Value

方法 Clone

Command接口的Clone命令拷贝一个已存在的对象的属性至相同类型的目标对象。目标对象必须预先存在已使用Clone方法。

应用于

clsDatabaseCommand

语法

object.Clone(ByVal TargetObject as Command,[ByVal Options As CloneOptions=cloneMajorChildren])

Object:拷贝对象

TargetObject:预先创建的相同类型的对象

Options:对于类型为clsDatabaseCommand的对象,CloneOptions不产生影响并被忽略。

例子

下面的例子展示了如何拷贝一个命令对象:

'Assume a command object (dsoCmd) exists.

Dim dsoCmdCopy as new DSO.Command

dsoCmd.Clone dsoCmdCopy

方法 LockObject

Command 接口的LockObject方法锁定对象来防止多用户同时改变对象。

应用于

clsDatabaseCommand

语法

object.LockObject(ByVal LockType as OlapLockTypes,ByVal LockDescription as string)

object 要锁定的对象

LockType OlapLockType枚举中其中一个锁定类型。

OlapLockType LockObject方法的LockType参数的枚举值,DSO类库中的绝大多数对象都实现了。

常量

描述

OlapLockExtendedRead

其它应用程序可以读对象的属性,但它们不能改变或处理。这个锁定用于防止该对象所依赖的对象正在处理,例如多维数据集的共享维度,olapLockExtendedRead多用户锁可以应用于多用户应用程序的对象中。但是,没有应用程序可以锁定正在处理或更新的对象直至所有的olapLockExtendedRead锁都释放了。

OlapLockProcess

对象的Process方法可以启动,其它的应用程序只可以读对象的属性直到锁释放。同一时间一个对象只能有一个olapLockProcess锁,在对象启用了olapLockProcess锁之后,其它应用程序只可以应用OlapLockRead锁。

OlapLockRead

在锁未释放前,对象的属性可以从知识库中读取,不能被其它的应用程序改变。应用olapLockRead锁时,其它应用程序可以应用olapLockRead,olapLockExtendedRead,以及olapLockProcess锁,但不能用olapLockWrite锁。

OlapLockWrite

对象的属性可以用Update方法来修改知识库,在锁未释放前,其它应有程序的引用都会无效,没有其它类型的锁可以应用于该对象。

方法 UnlockObject

Command接口的UnlockObject方法释放先前由LockObject方法加上的锁。

应用于

clsDatabaseCommand

语法

Object.UnlockObject

Object:要解锁的对象

备注

如果应用程序创建的一个或多个锁在用UnlockObject方法释放前就终止了,当应用程序关闭时AS会自动释放这些锁。

例子

下面的例子是展示加锁一个Command对象以便于修改它,然后解锁与更新它的知识库信息。

'Assume a command object (dsoCmd) exists.

dsoCmd.LockObect OlapLockRead, "Updating command, please wait."

' (Insert code to change command object here.)

dsoCmd.UpdatedsoCmd.UnlockObject

方法 Update

Command接口的Update方法将一个命令对象的定义保存到元数据知识库中。

应用于

clsDatabaseCommand

语法

Object.Update

Object:要更新的命令对象

备注

当你想保存对对象所作的修改时使用这个方法。任何改变都会让对象拥有一个会话直至这个方法被执行。

例子

下例展示了锁定一个命令对象以便于进行修改,然后解锁并更它的知识库信息。

'Assume a command object (dsoCmd) exists.

dsoCmd.LockObect OlapLockRead, "Updating command, please wait."

' (insert code to change command object here)

dsoCmd.UpdatedsoCmd.UnlockObject

属性 ClassType

Command接口的ClassType属性包含一个枚举常量,用来标识类在DSO对象模型中的名称。

应用于

clsCubeCommand

clsDatabaseCommand

clsRoleCommand

数据类型 ClassTypes

存取 只读

例子

使用下列的代码返回一个命令对象的类类型,及测试返回的是哪个类型的对象:

'Assume an object (dsoCommand) of ClassType clsCommand exists.

Dim enuClassType As DSO.ClassTypes

enuClassType = dsoCommand.ClassType

Select Case enuClassType   

Case clsDatabaseCommand       

' Insert code for a database command.   

Case clsCubeCommand       

' Insert code for a cube command.   

Case clsRoleCommand       

' Insert code for a role command   

Case Else       

' Insert code for when this is not a command object.

End Select

属性 CommandType

Command接口的CommandType属性包含一个枚举常量来标识命令选项。

应用于

clsCubeCommand

clsDatabaseCommand

clsRoleCommand

数据类型 CommandTypes

存取权限 读/写

备注

CommandType的值测试AS是如何解释命令对象的。下表列出了可能的值:

CommandType

描述

cmdCreateAction

命令包括了一个创建活动语法。

cmdCreateMember

命令定义了一个或多个计算成员

cmdCreateSet

命令定义了一个或多个已存在成员的集合

cmdUseLibrary

命令指定一个第三方DLL,它包含注册用于MDX中的函数。

cmdUnknown

命令定义了不包括其它任何一种命令类型的语法,就像DROP MEMBER语法或在未来的版本中会加进来的语法

注意 这个命令类型仅用于在没有其它任何命令类型的语法相符时

cmdCreateCellCalculation

命令定义了一个计算单元声明。

 

重要的是保证与AS的兼容性,你应为每个命令只创建一个活动,计算成员,命名集或计算单元定义。

例子

A. 指定一个命令类型

使用下面的代码来为一个已存在的命令对象指定一个命令类型:

CommandObject.CommandType = cmdCreateMember

B. 测试命令类型

使用以下代码来测试在使用的命令类型:

Dim CommandType As DSO.CommandTypes

CommandType = CommandObject.CommandType

Select Case CommandType   

Case cmdCreateAction       

' Insert code to create an action.   

Case cmdCreateMember       

' Insert code to define a calculated member.     

Case cmsCreateSet       

' Insert code to define a named set of existing members.    

Case cmdUseLibrary       

' Insert code to use a third-party library.    

Case cmdCreateCellCalculation       

' Insert code to create a calculated cells definition.  

Case cmdUnknown       

' Insert code to define other statements.

End Select

属性 Description

Command接口的Description属性包含命令对象的描述。

应用于

clsCubeCommand

clsDatabaseCommand

clsRoleCommand

数据类型 String

存取 读/写

备注

识别命令对象的主要机制是Name属性。使用Description属性的意图是提供额外的描述信息。

例子

'Assume a command object (dsoCmd) exists.

dsoCmd.Description = "Create a new profit member as sales-cost."

属性 IsValid

Command接口的IsValid属性指出Name与Statement是否为空以及命令对象是否一直属于一个集合。

应用于

clsCubeCommand

clsDatabaseCommand

clsRoleCommand

数据类型 Boolean

存取 只读

备注

因为命令对象灵活的种类,仅有以下检查会执行:

l         命令对象的Name属性不为空

l         命令对象一直属于一个Commands集合

l         命令对象的Statement属性不为空

执行命令是唯一测试命令功能是否正确的途径。

例子

'Assume a command object (dsoCmd) exists.

If dsoCmd.IsValid Then  

'Insert code to save the command.

Else  

'Return an error with one or more properties.

End If

属性 Name

命令接口的Name属性包含命令对象的名称。这个属性是识别命令对象个体的主要机制。

应用于

clsCubeCommand

clsDatabaseCommand

clsRoleCommand

数据类型 String

存取 读/写(对象被命名后为只读)

备注

在一个立方中,每个命令必须有一个唯一存在的名称。关于DSO的名称协定的更多信息,请参见“DSO的命名约定”一节。

例子

‘Assume a Command Object(dsoCmd) exists.

Debug.print dsoCmd.Name

属性 OrdinalPosition

Command接口的OrdinalPosition属性包含命令在父对象MDStore的命令集中的索引号。

应用于

clsCubeCommand

clsDatabaseCommand

clsRoleCommand

数据类型 Integer

存取 只读

备注

位置索引号测试命令集中命令的执行顺序。在一个命令依赖其它命令时这个索引号非常重要(例如:CREATE SET命令使用CREATE MEMBER命令定义的成员)。基于这个原因,CREATE MEMBER 命令应该拥有一个比CREATE SET命令更低的OrdianlPosition属性值。不过,命令的执行顺序位置不影响计算成员或命令可能创建的计算单元定义的解答顺序。更多信息请参阅“理解途径顺序与解答顺序”。

例子

下面的代码展示了在FoodMart 2000数据库的命令集中创建三个新命令。然后列举集合内容,打印OrdinalPosition与Name属性至调试窗口。接下来,代码示例删除与重建第一个命令,再次列举集合示范其它命令的Ordinal Position变化。

Dim dsoServer As New DSO.Server   

Dim dsoDB As DSO.MDStore   

Dim dsoCmd As DSO.Command       

' Connect to the local Analysis server.   

dsoServer.Connect "LocalHost"       

' Open the FoodMart 2000 database.   

Set dsoDB = dsoServer.MDStores("FoodMart 2000")       

' Add three sample commands.   

Set dsoCmd = dsoDB.Commands.AddNew("Command3")   

Set dsoCmd = dsoDB.Commands.AddNew("Command1")   

Set dsoCmd = dsoDB.Commands.AddNew("Command2")       

' Iterate through the commands for the database.   

For Each dsoCmd In dsoDB.Commands       

' Print its name and ordinal position       

Debug.Print dsoCmd.OrdinalPosition & " = " & dsoCmd.Name   

Next   

' Now, delete the Command3 command and add it again.   

dsoDB.Commands.Remove "Command3"   

Set dsoCmd = dsoDB.Commands.AddNew("Command3")       

' Iterate again through the commands for the database.   

Debug.Print "-----"   

For Each dsoCmd In dsoDB.Commands       

' Print its name and ordinal position       

Debug.Print dsoCmd.OrdinalPosition & " = " & dsoCmd.Name   

Next

属性 Parent

Command接口的Parent属性包括父对象MDStore的参考。

应用于

clsCubeCommand

clsDatabaseCommand

clsRoleCommand

数据类型 MDStore

存取 只读

备注

父对象的类依赖命令对象的类。

特别的如果命令对象拥有一个ClassType属性为clsRoleCommand且与数据挖掘模型规则相关的话,该属性就返回Nothing。数据挖掘模型没有实现MDStore接口,因此不能使用这个属性。

命令对象类

父对象类

clsDatabaseCommand

clsDatabase

clsCubeComand

clsCube

clsRoleCommand

ClsCube

clsDatabase

 

例子

下面的例子展示了创建一个立方命令及将其赋给FoodMart2000数据库的第一个立方的MDStore集合,然后通过立方命令对象的Parent属性打印父对象的其中一些属性。

Dim dsoServer As New DSO.Server

Dim dsoDB As DSO.MDStore

Dim dsoCube As DSO.MDStore

Dim dsoDBCmd As DSO.Command

Dim dsoCubeCmd As DSO.Command

' Connect to the Analysis server.   

dsoServer.Connect "LocalHost"

' Get a reference to the FoodMart 2000 database.   

Set dsoDB = dsoServer.MDStores("FoodMart 2000")

' Get the first cube in the database's collection.   

Set dsoCube = dsoDB.MDStores(1)    

Debug.Print "Cube.Name = " & dsoCube.Name

' Add the command to the cube's collection.   

Set dsoCubeCmd = dsoCube.Commands.AddNew("TempCommand")   

Debug.Print "Cube.Commands(""TempCommand"").Name =" _     

  & dsoCube.Commands("TempCommand").Name

' Print the properties of the command's

' Parent object.   

Debug.Print "   .Parent properties" & vbCrLf & _       

"   -----------"   

Debug.Print "   TypeName(dsoCubeCmd.Parent) = " & _

TypeName(dsoCubeCmd.Parent)   

If dsoCubeCmd.Parent.ClassType = clsCube Then      

Debug.Print "   .ClassType = clsCube"   

Else       

Debug.Print "This line should never be executed."   

End If   

Debug.Print "   .Description = " & dsoCubeCmd.Parent.Description   

Debug.Print "   .Name = " & dsoCubeCmd.Parent.Name   

dsoCube.Commands.Remove ("TempCommand")

属性 ParentObject

ParentObject属性返回一个延迟绑定参考到父对象的默认接口。

应用于

clsCubeCommand

clsDatabaseCommand

clsRoleCommand

数据类型 Object

存取 只读

备注

这个属性返回命令对象的父对象的默认接口。对于ClassType属性值为clsRoleCommand的对象,这个属性返回ClassType为clsCubeRole或clsDatabaseRole的对象。这个属性的行为与Parent属性不一样。Parent属性返回命令对象最靠近的MDStore父参考,它或许是或许不是直接的父参考,要依赖命令对象的ClassType。这个属性返回命令对象的父参考而不管接口。当你使用classType为clsRoleCommand的命令对象时这个行为区别是很明显的。

Class Type

父对象接口

父对象类类型

clsDatabaseCommand

MDStore

clsDatabase

clsCubeCommand

MDStore

ClsCube

clsRoleCommand

Role

clsDatabaseRole

clsCubeRole

clsMiningModelRole

 

例子

比较Parent与ParentObject属性

下面的例子比较使用Parent与ParentObject属性。

Dim dsoServer As New DSO.Server

Dim dsoDB As DSO.MDStore

Dim dsoRole As DSO.Role

Dim dsoRoleCmd As DSO.Command

Dim dsoDatabaseRole As DSO.Role 

dsoServer.Connect "LocalHost" 

Set dsoDB = dsoServer.MDStores("FoodMart 2000")

'Get the first role in the database.

'This should be the Everyone role. 

Set dsoRole = dsoDB.Roles(1) 

Debug.Print "DatabaseRole.Name = " & dsoRole.Name

'Add a new command to the role. 

Set dsoRoleCmd = dsoRole.Commands.AddNew("RoleCmd")   

'Print the properties of the Parent object. 

Debug.Print ".Parent properties" & vbCrLf & "---------" 

Debug.Print "Interface type = " & TypeName(dsoRoleCmd.Parent) 

If dsoRoleCmd.Parent.ClassType = clsDatabase Then   

Debug.Print ".ClassType = clsDatabase" 

Else   

Debug.Print "This should never be printed." 

End If 

Debug.Print ".Description = " & dsoRoleCmd.Parent.Description 

Debug.Print ".Name = " & dsoRoleCmd.Parent.Name

'Print the properties of the ParentObject object 

Debug.Print ".ParentObject properties" & vbCrLf & "---------" 

Debug.Print "Interface type = " & TypeName(dsoRoleCmd.ParentObject) 

Set dsoDatabaseRole = dsoRoleCmd.ParentObject 

If dsoDatabaseRole.ClassType = clsDatabaseRole Then     

Debug.Print ".ClassType = clsDatabaseRole" 

Else   

Debug.Print "This should never be printed." 

End If 

Debug.Print ".ClassType = " & dsoDatabaseRole.ClassType 

Debug.Print ".Description = " & dsoDatabaseRole.Description 

Debug.Print ".Name = " & dsoDatabaseRole.Name

属性 Statement

Command接口的Statement属性包含命令语法文本。

应用于

clsCubeCommand

clsDatabaseCommand

clsRoleCommand

数据类型 String

存取 读/写

备注

关于命令语句的更多信息,请参阅“命令类型”一节。

语句中用到的名称如定义活动、计算成员、命名集,以及计算单元必须在立方中是唯一的。例如,如果你创建一个活动并命名为Test,你不会再创建一个计算单元定义也命名为Test。

例子

A. 创建一个命令对象(cmdCreateAction)

使用以下代码来创建一个cmdCreateAction类型的命令对象:

CommandObject.Statement = "CREATE ACTION Sales.ShowCustDetails " & _   

"FOR [Customer] MEMBERS As " & _ 

"'IIf(Customers.CurrentMember.Properties(""Existing Customer"")" & _

" = ""True""," & _

"""http://MyServer/CustomerDetails.ASP?CustID="" + " & _

"Customers.CurrentMember.ID,'') " & _

"TYPE = URL " & _

"APPLICATION = 'IE' " & _

"DESCRIPTION = 'Launch the customer details page for " & _

"this specific customer.'"

你可以在命令语句中使用CURRENTCUBE来指明包含命令对象的立方。这个保留字使得在立方之间拷贝命令对象变得容易多了。例如,你可以像下面的代码一样重写前面的代码:

CommandObject.Statement = "CREATE ACTION CURRENTCUBE.ShowCustDetails " & _

"FOR [Customer] MEMBERS As " & _

"'IIf(Customers.CurrentMember.Properties(""Existing Customer"")" & _

" = ""True""," & _

"""http://MyServer/CustomerDetails.ASP?CustID="" + " & _

"Customers.CurrentMember.ID,'') " & _

"TYPE = URL " & _

"APPLICATION = 'IE' " & _

"DESCRIPTION = 'Open the customer details page for " & _

"this specific customer.'"

B. 创建一个命令对象(cmdCreateMember)

CommandObject.Statement = "CREATE MEMBER Sales.Measures.PROFIT AS " & _

"'Measures.Sales - Measures.Cost'"

C. 创建一个命令对象(cmdCreateSet)

CommandObject.Statement = "CREATE SET CURRENTCUBE.[ImportedBeer] AS " & _

"'Filter(Product.Members, " & _

"(InStr(1, Product.CurrentMember.Name, ""Imported Beer"")))'"

D.创建一个命令对象(cmdUseLibrary)

CommandObject.Statement = _

"USE LIBRARY ""C:/SampleDirectory/MyStatFunctions.dll"""

E. 创建一个命令对象(cmdCreateCellCalculation)

CommandObject.Statement = CREATE SESSION CELL CALCULATION " & _

"[Sales].[Mexico Adjustments] FOR " & _

"'(Descendants([Mexico], [City], SELF))' & _

"AS '<expression>'," & _

"CONDITION = '[Time].CURRENTMEMBER.NAME=[2000]'"

F. 返回一个命令对象语句。

Dim strCommandStatement As String

strCommandStatement = CommandObject.Statement

属性 SubClassType

Command接口的SubClassType包含一个枚举常量用来识别对象的子类类型。实现了Command接口的对象通常都有SubClassType或sbclsRegular属性。

应用于

clsCubeCommand

clsDatabaseCommand

clsRoleCommand

数据类型 subclassTypes

存取 只读

MDStore接口

MDStore接口实现了包含多维数据的DSO对象,下表包含了这些对象:

对象

描述

Database

在分析服务器里表示数据库的对象。数据库包含立方,维度,挖掘模型与规则

Cube

在分析服务器里表示立方的对象。立方包含维度,汇总,与命令

Partition

表示立方中数据的物理存储方式的对象。分区包含维度,汇总与集合

Aggregation

表示立方中集合数据表的对象。包含维度,汇总与成员属性

 

通过这些对象实现的接口,MDStore接口是用来使用这些对象的主要接口。要区分实现了MDStore接口的对象,可以使用ClassType属性。下表列出了实现MDStore接口的对象及与ClassType属性相关的值:

对象

ClassType值

Database

clsDatabase

Cube

clsCube

Partition

clsPartition

Aggregation

clsAggregation

 

WSL2部署Cadence Virtuoso IC25.1:Ubuntu 26.04排障实录 WSL2以轻量虚拟机结合完整Linux内核,为Windows桌面环境提供了原生级Linux运行能力,解决了传统虚拟机资源开销大、双系统切换低效的问题。对于依赖X11图形协议、FlexNet许可服务和特定动态库的EDA工具链而言,利用WSL2部署Linux发行版需要关注系统集成、显示通路与许可连通性。从技术原理看,图形层X Server的配置、动态库依赖的补齐以及license服务的主机名解析,共同构成EDA工具在WSL2中稳定运行的关键环节。在芯片设计场景中,设计工程师常需在Windows办公机与Linux 阅读详情

相关推荐

智能车实战——极速越野组GPS与惯导融合定位导航全解析

本文深入解析了智能车极速越野组中GPS与惯导模块的融合定位导航技术。通过对比GPS的全局定位与惯导的高频姿态感知,详细阐述了如何利用MM32SPN27主控,将两者数据融合以实现精准、实时的车辆控制。内容涵盖硬件选型、软件数据处理、PID控制及系统调试等实战环节,为智能车开发者提供了一套完整的解决方案。

pz8901234的博客 1204

本人翻译的微软DSO资料

前段时间在做一个决策支持系统项目,使用了微软的AS,查了很多资料,却没有中文的,只好自己翻译了(因为自己英文比较烂,所以才翻译嘛).现在把它献出来,以供有需要的朋友参考.DSO决策支系统程序员参考 概述微软SQL Server 2000分析服务为你提供了真正的机会来创建与整合自定义应用程序。服务器对象模型DSO提供了能通过COM自动化程序语言(如VB5.0与后续版本)来使用的接口与

随心居 1655

Mac用户必看:Typora最新版永久激活+弹窗屏蔽保姆级教程(附崩溃解决方案)

本文为Mac用户提供了一份详尽的Typora最新版永久激活与弹窗屏蔽教程。通过修改关键JS文件,实现软件激活状态并彻底关闭成功提示弹窗。文章深入剖析了操作原理,并重点提供了解决由此引发的多文档崩溃问题的实用临时方案,同时客观讨论了该方法的局限性与潜在风险。

wine的专栏 2379

自己写的数据库基类(VB.NET_WinForm)

过程名称: clsDataBase功能描述:数据库的相关操作创建人员及日期:zzz2006-11说    明: 在实例化本类后,切记要记住释放Public Class clsDataBaseClass clsDataBase    数据库类型定义    Public Enum eDBTypeEnum eDBType        DB_OLEDB = 0        DB_SQL 

zzy1254的专栏 1135

DDR5内存Training全解析:从信号完整性到CS训练模式的实战指南

本文深入解析了DDR5内存Training的全过程,从信号完整性挑战到CS训练模式(CSTM)的实战应用。文章详细阐述了Training在DDR5高频时代的关键作用,对比了In-Band与OOB两种架构,并拆解了Intel MRC的核心训练步骤,为硬件与固件工程师提供了诊断与优化系统稳定性的实用指南。

weixin_29252171的博客 1031

ensp企业网综合实验(课程设计)

使用MSTP+VRRP技术实现负载均衡以及增加网络的可靠性;出口配置napt;所有用户均为自动获取IP地址;

qq_50829760的博客 1万+

qt集成dsoframer.ocx打开office办公软件

最近一段时间真是事情太多了,前不久项目中一个嵌入office软件的问题,由于没有时间研究,且项目的需求是浏览word文档,偷了一个懒,把word文档转换成pdf文档,然后嵌入libcef浏览器给打开了    现在回过头来,重新研究了这方面的直接办法,在网上查了多方面的资料,终于决定要使用ocx这个方案来完成此项功能,可限于资源问题,ocx方面的资料 没怎么接触过,所以就盲目的在晚上看别人的东西,...

weixin_34162228的博客 1152

基于STM32的智能宠物喂食系统设计与实现(代码+PCB )

STM32;DHT11;本系统的软件程序基于Keil MDK-ARM V5集成开发环境进行编写和编译。Keil MDK是ARM公司官方推荐的嵌入式开发工具,支持ARM Cortex-M系列微控制器的程序开发,内置ARM C/C++编译器、调试器和仿真器,具有代码编辑、语法高亮、工程管理和在线调试等功能,是STM32开发领域应用最为广泛的IDE之一。

3254968421的博客 72

dsoframerex正式发布,欢迎大家下载

     dsoFramerEx控件说明文档 目   录第一章. 软件介绍... 4第二章. 接口说明... 42.1      属性... 42.1.1       ActiveDocument 42.1.2       EnableFileCommand. 42.1.3       Caption. 52.1.4     

wolfwaretech 8074

Android 9.0 SystemUI禁用长按recent键的分屏功能

​ 在9.0的系统产品开发中,系统对于多窗口模式默认会有分屏功能的,但是在某些产品中,需要禁用分屏模式,所以需要在导航栏中 禁用长按recent的分屏模式功能,接下来分析下相关分屏模式的实现 ​

安卓兼职framework和app工程师的博客 450

Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-单端信号-并联端接

Sigrity System Explorer Transient Analysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的单端拓扑并且进行并联端接,以下图为例,准备好发送接收端的IBIS模型, (se_example.ibs,本例发送接收端都使用相同的IBIS模型),以及传输线的S参数模型(W1_welement_se.sp)最上方的图形界面是传输线的模型,本例是一个上下都有参考平面的带状线,右侧的梯形是蚀刻角度,根据W1和W2以及铜厚来确定。

weixin_54787054的博客 375

DSOFramer使用

1.void CreateNew(BSTRProgIdOrTemplate)   新建文档,   其中: ProgIdOrTemplate参数: Excel Spreadsheet    "Excel.Sheet" Excel Chart       "Excel.Chart" PowerPointPresentation  "PowerPoint.Show" Project P

除却猩猩不是猿 6077

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

DSOFramer.h

/**************************************************************************** ** ** Namespace DSOFramer generated by dumpcpp from type library ** D:\DsoFramer\dsoframer.ocx ** *************************

青山_绿水的专栏 757

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

DSOFramer Interface Definition

  DSOFramer Interface Definition General InformationLibrary: DSOFramer (DSO ActiveX Document Framer Control)File: G:\Study_Document\ÎÒµÄ×ÊÁÏ¿â\weboffice\oframer\dsoframer.ocxGUID: {06889570-8875-4B...

weixin_33877885的博客 158

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

dsoframer.cpp

/**************************************************************************** ** ** Metadata for DSOFramer generated by dumpcpp from type library ** D:\DsoFramer\dsoframer.ocx ** **********************

青山_绿水的专栏 845

相关电子签章组件介绍

 1.Html电子印章、手写签名系统演示:http://www.dianju.com.cn/video.htm在线试用: http://www.dianju.com.cn/websignpiaoju/ http://www.dianju.com.cn/websigndemo/ 2.Word、Excel 电子印章,手写签名系统:  演示版:http://www.dianju.com.cn/vid

青春奋斗 3152

dsoframer用法

dsoframer是微软提供一款开源的基于web的office ActiveX控件,国内有达人在源码的基础上做了很多修改,增强了控件的功能。其实基于web的office是一个很鸡肋的东西,没有什么存在的意义。唯一的一点就是看上去比较花哨,你瞧,在浏览器上打开word文档,多吊啊。不知道原版dsoframer是否带有直接保存文档至服务器的功能,不过我手头上的一个改良版本的确是有此功能。 控件附带说

zhgyuhui的专栏 3908

执行命令行的函数 ExeCommand

  public static string ExeCommand(string commandText)  {   Process p = new Process();   p.StartInfo.FileName = "cmd.exe";   p.StartInfo.UseShellExecute = false;   p.StartInfo.RedirectStandardInput = t

江湖·郎中·路 2075

dso详解--dso原理的"大卸八块"

本篇文章摘自:高翔的最新的知乎文章,转载请注明原文链接,同时感谢翔哥(半闲居士)一直以来对国内vslam做出的贡献. 原文地址:https://zhuanlan.zhihu.com/p/29177540 本人对原文稍微做了细小的改动,如何不明,请查看原文链接. DSO(Direct Sparse Odometry),是慕尼黑工业大学(Technical University

余辉亮的学习笔记 2万+

DSO API和上传服务器原理

<br />DSOFramer原有的接口说明<br />===================================================================<br />DSOFramer原有的接口说明<br />1.void CreateNew(BSTR ProgIdOrTemplate)<br />  新建文档,<br />  其中: ProgIdOrTemplate参数:<br />Excel Spreadsheet     "Excel.Sheet" <br />Ex

hwbox的专栏 2534

DSO 初探

这两天视觉SLAM界的大新闻就是Direct Sparse Odometry(DSO)开源了,小伙伴们都迫不及待的赶紧上手撩了一下,论文下载地址请戳。为了紧跟学术前沿,我们此篇文章将作为学习DSO的一个开端,和大家一起来前排感受下Prof. Cremers 门派大弟子Engel博士的新绝学。文章将分为四部分,DSO的安装,DSO在公共数据集上的运行,DSO在自己数据集上的运行,DSO在实时摄像头下

知行合一 4万+

推荐免费好用的Web在线Office(Word)编辑控件

DSOFramer论坛:http://www.dsoframer.com/forumdisplay.php?fid=2下载地址:http://www.cnblogs.com/brooklet/archive/2008/07/17/1244850.htmlDSOFramer下载+开发接口当前版本:V2.2.0.2   2006-11-29[color=red]下载控件需要登录[/colo

3742

电子书专题

EXE电子书与垃圾 作者:马健邮箱:stronghorse@tom.com主页:http://stronghorse.yeah.net 目前EXE格式的电子书在网络上比较流行,制作工具五花八门,eBook Workshop和eBook Edit Pro是其中比较流行的两个。但是又有多少人知道,在你打开用它们制作的电子书的时候,其实它们已经在你的系统中悄悄产生了一些垃圾,包括注册表项、文件等。而且目

FreeXploiT 3万+
上一篇: 一种被忽视的构造和整数溢出重现
下一篇: 枚举驱动器 (ALLyeSNO)
freexploit
博客等级 码龄22年 315粉丝 778原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值