2017-09-11 2 views
0

Die Syntax meines Codes in MS Access scheint korrekt zu sein.SQL Server Stored Procedure scheint nicht aufgerufen zu werden

Ich kann die gespeicherte Prozedur manuell in SQL ausführen und das richtige Ergebnis erhalten.

Wenn ich versuche, die gespeicherte Prozedur von MS Access mit ADO aufzurufen, scheint nichts zu passieren; jede Hilfe würde sehr geschätzt werden.

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 

Vielen Dank im Voraus

+0

'parameters.refresh' identifiziert und erstellt Parameter für Sie. Normalerweise müssen Sie 'CreateParameter' nicht aufrufen, um sie anschließend manuell hinzuzufügen. Ich würde Debug-Modus verwenden, um Ihre Parameter innerhalb des Codes zu überprüfen, um zu sehen, ob es das ist, was erwartet. Dann würde ich die SQL-Tabelle direkt in SSMS abfragen. Dann würde ich SQL Profiler verwenden, um den SP-Aufruf zu erfassen und festzustellen, ob etwas Unerwartetes vorliegt. Wenn kein Fehler gemeldet wird, vermute ich, dass Sie den erwarteten Parameterwert nicht übergeben und sich die Daten nicht wie erwartet ändern. –

+0

Haben Sie 'NOCOUNT ON 'im Proc-Code? Wenn nicht, füge es hinzu. –

+0

Ich habe hinzugefügt, Noount in den gespeicherten Proc gesetzt, aber immer noch nicht den richtigen Code, um die Prozedur aufzurufen. Wenn ich die Parameter.refresh lösche, erhalte ich einen Fehler, der besagt, dass "Stored Procedure xxx - die Variable @itid erwartet wird". Anleitung bitte –

Antwort

0

Sie sind unter

With cmd 
.ActiveConnection = CN 
.CommandText = "dbo.usp_update_consequenceweighting" 
.CommandType = adCmdStoredProc 
.Parameters.Refresh 
Set prm = .CreateParameter("@ITID", adInteger, adParamInput) 

Versuchen Hinzufügen der parameter.append die .parameters.append in Ihrem Code fehlt, anstatt es zu Einstellung Normalerweise

With cmd 
.ActiveConnection = CN 
.CommandText = "dbo.usp_update_consequenceweighting" 
.CommandType = adCmdStoredProc 
.parameter.append .createparameter("@ITID", adInteger, adParamInput, 50, [Value or variable here]) 
.execute 1 
End With 
Verwandte Themen