Excel SQL导入 - 错误3704关闭对象时不允许操作

时间:2017-07-13 14:42:55

标签: sql excel vba

尝试在Excel模型中执行sub时,我收到一条错误消息:

  

关闭对象时不允许操作。

我之前编写过这样的代码,以便从SQL数据库导入数据并且从未遇到任何问题。我猜这个子问题是sql查询正在创建一个临时表,其中包含一个存储过程的结果,我只想要4个最新的数据点。

子看起来像这样:

Sub sqlImport()

Dim dbConn As ADODB.connection
Set dbConn = New ADODB.connection

dbConn.ConnectionString = "Provider=SQLOLEDB;Integrated Security=SSPI;Network=dbmssocn;Initial Catalog=Funds;Data Source=" & Data_Source_Prod02
dbConn.CursorLocation = adUseServer
dbConn.Open

'Define cell - top left in table
Dim startCell As Range
Set startCell = Import.Range("tableTopLeft")

'Clear the table
Range(startCell, startCell.End(xlDown).End(xlToRight)).ClearContents

'Setup SQL import
Dim CmdSP As New ADODB.Command
CmdSP.CommandType = adCmdText
CmdSP.CommandText = "CREATE TABLE #tmpBus2 (FundID INT, PortfolioDate date, TotalFundValueBillionSEK float, NAVSEK float, FundShares float)" & _
                    "INSERT INTO #tmpBus2 EXEC Funds.Analysi.Fund_Size @FundId = 4235 " & _
                    "SELECT TOP 4 PortfolioDate, NAVSEK, FundShares FROM #tmpBus2 ORDER BY PortfolioDate DESC"
CmdSP.ActiveConnection = dbConn

'Execute command
Dim dbList As ADODB.Recordset
Set dbList = CmdSP.Execute

'Print table data
Dim row As Integer, col As Integer
row = 1
While Not dbList.EOF
    For col = 0 To dbList.Fields.Count - 1
        startCell.Offset(row, col) = dbList(col)
    Next col

    dbList.MoveNext
    row = row + 1
Wend

dbConn.Close

End Sub

错误发生在

While Not dbList.EOF

任何人都有解决方案吗?

我无法重写存储过程。我从存储过程中得到的结果是一个非常大的数据集,这就是为什么我只想选择前4行。

0 个答案:

没有答案