2011-02-24 49 views
1

我想构建一个VBA表单,它在执行任何其他操作之前运行SQL Server存储过程来缓存数据。理想情况下,我不希望使用Excel数据连接,因为我无法用最少的大惊小怪将它导出到新的工作簿 - 将表单文件中的所有信息都包含在内是很好的。从Excel VBA访问SQL Server存储过程(不包含SELECT语句),理想情况下不使用Excel Data Connections?

我知道VBA连接到一个数据库,沿着这些线路使用代码的主要途径:

Dim cnn As New ADODB.Connection 
Dim rst As New ADODB.Recordset 
cnn.Open ConnectionString 
rst.Open QueryText, cnn, adOpenDynamic 

/*Whatever you're doing to the data goes here*/ 

rst.Close 
cnn.Close 

我遇到的问题是,缓存PROC不返回数据集(甚至没有一个空白的),并且这种类型的连接似乎在没有数据返回的情况下会引起混乱。如果我不需要,我宁愿不修改proc。

在这些限制内是否有可行的解决方案?或者我只是太发牢骚,应该吸取它并使用Excel数据连接或其他东西?

回答

3

我认为你正在寻找一个ADODB.Command。试试这样的:

Dim cnn As New ADODB.Connection 
Dim cmd As ADODB.Command 

cnn.Open ConnectionString 
Set cmd = New ADODB.Command 

With cmd 
    .ActiveConnection = cnn 
    .CommandText = "EXEC spNameHere param1" 
    .CommandType = adCmdText 
    .Execute 
End With 
相关问题