我使用Excel vba从SSAS表格模型访问数据。查询使用ADODB连接和记录集以及DAX语句来工作。基本上,一切正常,但只能在我的计算机上。一旦我将应用程序发送给其他用户,Excel就会完全崩溃。所以我的错误处理程序根本不起作用,因为该程序不再响应。
这是一个报告工具,应在我的公司中推广,这就是为什么这是一个真正的问题。该问题仅在SSAS中存在,而在SQL语句中不存在。该工具中的每个人都可以使用后者,而不会出现任何问题。
我的第一次分析表明,我已经在计算机上安装了OLAP.8驱动器,因为我安装了Visual Studio和Management Studio进行数据建模。用户的计算机仍在使用OLAP.5驱动程序。
Kurius可以在第一次崩溃后在某些PC上运行,或者在成功建立连接后在所有PC上运行。但是,重新启动后,所有用户PC上都再次出现该问题。
到目前为止,我已经尝试过: -使连接字符串适应所有可能的OLAP提供程序 -在VBA中修改ActiveX引用(当前使用ActiveX数据对象2.8库) -从Excel自动连接到模型也适用于OLAP.5驱动程序,适用于所有用户。
到目前为止,最好的方法是将Courser的位置从客户端移动到服务器,但是记录集仅包含一半的数据,这又是一个新的谜。在这里也无法使用.MoveLast。
Dim ConTabular As ADODB.Connection
Dim rs As ADODB.Recordset
Dim vsDaxStatement as String
Set ConTabular = New ADODB.Connection
Set rs = New ADODB.Recordset
' Open Connection
ConStringTabular = "Provider=MSOLAP;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=XXX;Data Source=XXX;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Update Isolation Level=2"
ConTabular.CommandTimeout = 0
ConTabular.Open ConStringTabular
'DAX-Statement
vsDaxStatement = "EVALUATE VALUES(DimCurrentEngagement[Engagement Business])"
**'Error occurs with method .open!!!!**
With rs
.CursorLocation = adUseClient
.CursorType = adOpenForwardOnly
.Open vsDaxStatement , ConTabular, adOpenStatic, adLockBatchOptimistic, adCmdText
End With