我在Excel 2007中调用了一个存储过程(SQL Server 2005)。此SP有两个select语句,但是在excel工作表中,显示了第一个语句的结果。有什么想法吗?
答案 0 :(得分:0)
如果存储过程有两个select语句,则返回两个记录集。确保您同时写入工作表。您还应该验证两个select语句都返回行。
注意:如果您想使用VBA尝试此操作,本书Professional Excel Development的第19章专门用于与SQL Server进行交互。本章将引导您完成连接到数据库,执行存储过程以及将结果写回工作簿的过程。提供了您需要的所有代码,以及对其功能的详细解释。如果你是VBA的新手,那么这本书就列在你应该选择的那份书上。查看其他人good books to learn Excel VBA。
以下是从存储过程返回5个记录集的sub的一部分示例:
If Not rsData.EOF Then
' The first recordset contains prices
Sheet39.Range("a1").CopyFromRecordset rsData
Set rsData = rsData.NextRecordset
' The second recordset contains products
Sheet39.Range("a20").CopyFromRecordset rsData
Set rsData = rsData.NextRecordset
' The third recordset contains stores
Sheet39.Range("a35").CopyFromRecordset rsData
Set rsData = rsData.NextRecordset
' The fourth recordset contains payment types
Sheet39.Range("j1").CopyFromRecordset rsData
Set rsData = rsData.NextRecordset
' The fifth recordset contains customers
Sheet39.Range("j8").CopyFromRecordset rsData
Set rsData = rsData.NextRecordset
Else
MsgBox "No data located.", vbCritical, "Error!"
End If
答案 1 :(得分:0)
我使用VBA用结果集填充工作表,这解决了这个问题。我还必须编写代码来迭代所有结果集。