【发布时间】:2020-01-31 19:14:35
【问题描述】:
我有 2 台服务器是 SQL Server 分析服务器。在这两台服务器上是数据库,用户可以根据他们想要在工作簿中使用的多维数据集进行选择。
我需要创建一个用户表单,它 (1) 让用户选择 2 个服务器中的 1 个,并且 (2) 显示在 (1) 中选择的服务器上每个可用数据库的下拉框。
我已经为 (1) 创建了功能并为 (2) 设计了格式,但我不知道如何获取可用数据库的列表。
我认为我需要遵循的步骤是,在 vba 中,连接到指定的服务器,然后执行一些“Select ... From ...”查询以获取每个数据库名称。
连接是OLEDB,连接字符串的一个例子是:
.OLEDBConnection.Connection = Array( _
"OLEDB;Provider=MSOLAP.8;Integrated Security=SSPI;Persist Security Info=True;
Initial Catalog=" & **database** & "; Data Source=" & **server** & _
";MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Update Isolation Level=2")
服务器由用户指定,数据库将由用户通过我们将创建的下拉框选择。
我查看了这篇帖子 Using VBA in Excel, how do I get the names of all OLAP Cubes on a server?,但我似乎无法为我的目的操纵它。
感谢您的所有帮助!
* 更新 * 我能够让它与以下代码一起工作:
Dim conn As ADODB.Connection
Dim sConnString As String
sConnString = "Provider=MSOLAP.8;Integrated Security=SSPI;Persist Security Info=True;Data Source=" & Cube_Server_Options.Value & ";MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Update Isolation Level=2"
Set conn = New ADODB.Connection
conn.Open sConnString
Set rst = New ADODB.Recordset
Set rst.ActiveConnection = conn
rst.Source = "SELECT [catalog_name] FROM $system.DBSCHEMA_CATALOGS"
rst.Open
Do While Not rst.EOF
rst.MoveNext
Loop
rst.Close
Set conn = Nothing
Set rst = Nothing
【问题讨论】:
-
“但我似乎无法为我的目的操纵它” - 究竟如何?哪个步骤给您带来麻烦,您是否遇到任何错误?在哪里?连接字符串是这里最没用的信息...
标签: excel vba mdx cube olap-cube