這是一個奇怪的一個,而我事先道歉在Excel電子表格中從SQL SP提取數據 - 我有以下VBA代碼在一個名爲「刷新」一個ActiveX按鈕:使用VBA
Sub Refresh_Click()
With ActiveWorkbook.Connections("Lender Pipeline").OLEDBConnection
.CommandText = "EXECUTE dbo.sp_Lender_Pipeline " & Range("Q2").Value
End With
ActiveWorkbook.Connections("Lender Pipeline").Refresh
End Sub
它通常做的,根據Q2單元格的值從SQL SP中提取數據,並根據該值 - 這是我手動添加到單元格中的數字刷新SP表格。該數字通常在1到120之間(基於SP內的ID)。
問題:
- 看來輸入特定號碼時,只拉數據。即29
- 對於其他數字,我必須手動點擊'全部刷新'。
- 如果我在SQL Server Management中手動執行SP,它工作得很好,所以問題似乎在於VBA。
- 如果我手動從Excel電子表格中執行SP,它也能正常工作...
有沒有人有一個線索,爲什麼這可能發生嗎?它可能是VBA,還是別的?讓我知道是否需要進一步澄清。
謝謝你。
您是否運行SQL事件探查器以確保number參數按預期進入SP,並且該過程實際上正在被解僱?無論參數如何,返回列的名稱和數量是否一致?也許SET NOCOUNT ON;看起來好像是因爲Refresh All似乎起作用。在Excel 2013中,您現在在數據連接中有一個新的複選框選項。新選項是在使用「全部刷新」時是否刷新特定連接。這是否被檢查? 「單元格值更改時自動刷新」複選框怎麼樣?在這裏釣魚,但試圖幫助。 :-) – DanielG
有一件事幾乎總是有效的,就是讓SP填充一個TEMP表,並將Excel表基於TEMP表,並由SP更新。 – DanielG