2015-07-20 63 views
0

我試圖運行Excel宏(按鈕)函數內部SP:試圖在Excel(VBA宏)運行SP多次

Sub Button13_Click() 
    Call exec_sp_GetLoan_CFM_Info_by_customerID("B3", 2, 1) 
    Call exec_sp_GetLoan_CFM_Info_by_customerID("B24", 3, 1) 
    Call exec_sp_GetLoan_CFM_Info_by_customerID("B45", 4, 1) 
    Call exec_sp_GetLoan_CFM_Info_by_customerID("B66", 5, 1) 
    Call exec_sp_GetLoan_CFM_Info_by_customerID("B86", 6, 1) 
End Sub 

的SP每次返回單行,和我試圖用每個結果集寫一行。發生什麼事是我在電子表格中獲得單行,例如,如上所示,我只會從B3獲取第2行結果集,用於custID。如果我註釋掉第一行,那麼我只會得到第3行的B24 custID結果,依此類推。我永遠不會超過1行,我不明白爲什麼(我對vb和excel宏是全新的)。任何人都可以解釋發生了什麼?即使我沒有清除任何行,也會發生這種情況......謝謝!

更新:如果我設置了單獨的按鈕爲每個功能的「召喚」,它運行良好......

Function exec_sp_GetLoan_CFM_Info_by_customerID(custIDcell As String, stRow As Integer, stCol As Integer) 
Dim con As ADODB.Connection 
Dim cmd As ADODB.Command 
Dim rs As ADODB.Recordset 
Dim WSP1 As Worksheet 
Set con = New ADODB.Connection 
Set cmd = New ADODB.Command 
Set rs = New ADODB.Recordset 

Application.DisplayStatusBar = True 
Application.StatusBar = "Contacting SQL Server..." 

' Log in 
con.Open "Provider=SQLOLEDB;Data Source=xxxx;Initial Catalog=xxxx ID=xxxx;Password=xxxx;" 
cmd.ActiveConnection = con 

' Set up the parameter for the Stored Procedure 
cmd.Parameters.Append cmd.CreateParameter("custID", adVarChar, adParamInput, 8, Range(custIDcell).Text) 

Application.StatusBar = "Running stored procedure..." 
cmd.CommandText = "sp_GetLoan_CFM_Info_by_customerID" 
Set rs = cmd.Execute(, , adCmdStoredProc) 

Set WSP1 = ActiveWorkbook.Worksheets("CIFInfo") 
WSP1.Activate 

'clear row 
WSP1.Rows(stRow).Clear 

If rs.EOF = False Then WSP1.Cells(stRow, stCol).CopyFromRecordset rs 

'cmd.Parameters("custID").Value = Range("B24").Text 

'cleanup 
rs.Close 
Set rs = Nothing 
Set cmd = Nothing 

con.Close 
Set con = Nothing 

Application.StatusBar = "Data successfully updated." 

End Function 

回答

0

初學者(Excel)中的錯誤...調用函數與SP的後第一次,活動工作表被改變爲與輸入不同的工作表,所以後續調用是使用空輸入參數完成的! 這從帖子不明顯..對不起!