我已經建立了到我的SQL服務器到存儲過程所在的數據庫的連接。存儲過程在SQLServer中正常工作。存儲過程從Excel中的硬編碼參數連接運行得很好。我得到我的數據集並將其插入到我的電子表格中。宏不起作用。在宏中,我試圖指向包含我的參數值的電子表格中的範圍,以便我可以將值輸入到電子表格中,然後讓宏選取它們並將它們傳遞給存儲過程。我使用日期格式來存儲電子表格值和存儲過程中的參數。當宏運行時,我希望返回的數據集在電子表格中用新數據更新。這裏是我的宏:使用多個參數從Excel調用存儲過程
Sub GetHeatMapData()
With ActiveWorkbook.Connections("CARLA-PC-Billing-SP").OLEDBConnection.CommandText = "EXECUTE dbo.GetBillingHeatMap '" & Range("A9").Value & "" & Range("B9").Value & "'"
End With
ActiveWorkbook.Connections("CARLA-PC-Billing-SP").Refresh
End Sub
但是,如果我嘗試從Excel宏運行存儲過程中,發生兩種情況之一:
如果在電子表格中現有的數據集是從連接窗口運行存儲過程創建的,然後宏運行沒有錯誤,但它沒有選擇動態變量,因此數據不會像應該那樣改變。
如果我從連接窗口中刪除通過運行存儲過程創建的數據集,請選擇數據應該啓動的單元格,然後觸發宏,出現'下標超出範圍'錯誤,並且沒有任何反應。
我將NOCOUNT
設置爲在我的存儲過程結束時關閉。下面是參數定義的存儲過程:
我的問題是,爲什麼是存儲過程不從Excel的電子表格單元格讓我的參數,並使用它們來過濾返回的數據?
感謝您的回覆Mike Miller。我曾嘗試過,沒有逗號。我也沒有給出由電子表格的區域單元格中的參數值過濾的返回數據集。 –