0
我在MS Access中的代碼的語法看起來是正確的。SQL Server存儲過程似乎不叫
我可以在SQL中手動運行存儲過程並獲得正確的結果。
當我嘗試使用ADO從MS Access調用存儲過程時,似乎沒有任何事情發生;任何幫助將不勝感激。
Private Sub Combo13_LostFocus()
Dim P1 As Integer
P1 = Forms![Frm_Ws10a]![Frm_WS10b]![Combo13].Column(0)
Dim rs As ADODB.Recordset
Dim CN As ADODB.Connection
Dim cmd As ADODB.Command
Dim prm As ADODB.Parameter
Dim adstring As Variant
Set CN = New ADODB.Connection
CN.ConnectionString = "Driver=SQL
Server;Server=LDXFBHD013492 \SQLEXPRESS;Database=xxxx;Trusted_Connection=YES;"
CN.Open
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = CN
.CommandText = "dbo.usp_update_consequenceweighting"
.CommandType = adCmdStoredProc
.Parameters.Refresh
Set prm = .CreateParameter("@ITID", adInteger, adParamInput)
prm.Value = P1
End With
Set rs = cmd.Execute
Me.Recalc
Me.Refresh
在此先感謝
'parameters.refresh'標識併爲你創建參數。您通常不需要調用'CreateParameter'來手動添加它們。我會使用調試模式來檢查代碼中的參數,看看它是否是期望的。然後我會直接在SSMS中查詢SQL表。然後,我會使用SQL Profiler來捕獲SP調用,並查看是否有任何意外。如果沒有錯誤報告,那麼我的猜測是,您沒有傳入您期望的參數值,並且數據沒有像您期望的那樣發生變化。 –
你有proc代碼中的SET NOCOUNT ON嗎?如果沒有,請添加它。 –
我已經添加到設置nocount到存儲過程中,但仍然無法獲得調用該過程的代碼。如果我刪除參數.refresh,我得到一個錯誤,說「存儲過程xxx - 預計變量@ITID」。請指導 –