2017-06-15 40 views
0

這是一個奇怪的一個,而我事先道歉在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,還是別的?讓我知道是否需要進一步澄清。

謝謝你。

+0

您是否運行SQL事件探查器以確保number參數按預期進入SP,並且該過程實際上正在被解僱?無論參數如何,返回列的名稱和數量是否一致?也許SET NOCOUNT ON;看起來好像是因爲Refresh All似乎起作用。在Excel 2013中,您現在在數據連接中有一個新的複選框選項。新選項是在使用「全部刷新」時是否刷新特定連接。這是否被檢查? 「單元格值更改時自動刷新」複選框怎麼樣?在這裏釣魚,但試圖幫助。 :-) – DanielG

+0

有一件事幾乎總是有效的,就是讓SP填充一個TEMP表,並將Excel表基於TEMP表,並由SP更新。 – DanielG

回答

0

奇怪的是我的同事之前也有過這個問題。嘗試了各種各樣的修復,沒有一個看起來工作,但以完全相同的方式重建工作簿似乎糾正了它。

不是最好的解決方案,但它已在過去工作。如果沒有,請嘗試使用VBA在更改命令文本後調用refreshall命令並查看是否有幫助。

0

非常感謝您的建議 - 它會顯示在連接屬性禁用後臺刷新做了竅門。