【发布时间】:2014-07-02 22:36:47
【问题描述】:
我在 Excel 2010 环境中使用 ADOMD 6.1 将自定义 MDX 查询发送到 Analysis Services 2008 R2 多维数据集并在 Excel 工作簿中显示结果。到目前为止,这工作正常,但是 Excel 实例在等待 Analysis Services 服务器返回查询结果时冻结,并且某些查询可能会运行几分钟。
我可能会使用线程将连接外包给另一个线程,但根据这里提出的一些其他问题,这在 VBA 本身中是不可能的 - 我们确实有不使用 DLL 的约束,因为我们需要将生成的 Excel 及其宏分发给一些最终用户,并且安装 DLL 不是一种选择。使用内置的 Excel 数据透视表也不是一种选择,因为我们依赖于交叉和存在等 MDX 函数。
是否有一种非阻塞方式可以在 VBA 中使用 ADOMD 将查询发送到 Analysis Services 服务器,而无需使用外部 DLL?
Dim ObjConnection As New ADODB.Connection
Dim rs As New ADODB.Recordset
ObjConnection.Open strCon
rs.Open strMDX, ObjConnection
Do While Not rs.EOF
For i = 0 To rs.Fields.Count - 1
Cells(i, 1).Value = rs.Fields(i).Name
Cells(i, 2).Value = rs.Fields(i).Value
Next
rs.MoveNext
Loop
非常感谢!
【问题讨论】:
-
嗨,下面的答案有用吗?
标签: multithreading vba excel ado mdx