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
'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. –
Haben Sie 'NOCOUNT ON 'im Proc-Code? Wenn nicht, füge es hinzu. –
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 –