1

我在 Excel 2007 中调用了一个存储过程(SQL Server 2005)。这个 SP 有两个选择语句,但是在 excel 工作表中,显示了第一个语句的结果。有什么想法吗?

4

2 回答 2

0

如果您的存储过程有两个 select 语句,您将返回两个记录集。确保将两者都写入工作表。您还应该验证两个 select 语句是否都返回行。

注意:如果您想使用 VBA 尝试此操作,专业 Excel 开发一书的第 19 章专门介绍与 SQL Server 交互。本章将引导您连接到数据库、执行存储过程以及将结果写回您的工作簿。提供了您需要的所有代码,以及对其功能的良好解释。如果您是 VBA 新手,那么这本书就在您应该选择的短名单上。查看好书,为他人学习 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
于 2012-06-11T13:39:51.917 回答
0

我使用 VBA 用结果集填充工作表,这解决了问题。我还必须编写代码来遍历所有结果集。

于 2012-06-15T05:04:18.763 回答