Ich erhalte einen Fehler "Laufzeitfehler (13): Typenkonflikt", wenn ich versuche, den folgenden Sproc von einem Nachaktualisierungsereignis in Access auszuführen. Mein Sproc hat die @Season als nvarchar (max) und @Year als int in der SQL (MSSQL2014). Irgendwelche Ideen bezüglich der Ursache? Ich habe den ganzen Tag gesucht, aber noch keine Freude. Hier ist der Code:Ausführen von parametrisierten gespeicherten T-SQL-Prozedur in Access vba
Private Sub Event_Click()
Dim cnn1 As New ADODB.Connection
Dim cmd As New ADODB.Command
Set cnn1 = New ADODB.Connection
cnn1.ConnectionString = "<connection string snipped but works OK>"
cnn1.ConnectionTimeout = 30
cnn1.Open
vSeason = Me.ComboBox1.Value
vYear = Me.ComboBox2.Value
With cmd
.ActiveConnection = cnn1
.CommandText = "dbo.StoredProcedure"
.CommandType = 4
.CommandTimeout = 0
.Parameters.Append .CreateParameter("@Season", adVarChar, adParamInput, vSeason)
.Parameters.Append .CreateParameter("@Year", adInteger, adParamInput, vYear)
End With
cnn1.Close
Set cnn1 = Nothing
Wäre dankbar für alle Hinweise hier. Irgendwelche weiteren Informationen benötigen, lassen Sie mich wissen.
Ich denke 'adVarChar' sollte durch' adVarWChar' ersetzt werden. –
^^ das - das 'n' macht den Parameter Unicode, also brauchen Sie einen Unicode-Parameter. Gibt es auch einen Grund, warum "@ Season" 'nvarchar (max)' ist? Wenn Sie können, machen Sie die Prozedur eine '@SeasonId int'. Ich würde einen 4000-Zeichen-Input (wenn der tatsächliche Bedarf wahrscheinlich <50 ist) als Design-Geruch nehmen. –
Versuchen Sie 'Execute' anstatt' ADODB.Commands' zu verwenden. 'cnn1.Execute (" EXEC dbo.StoredProcedure '"& vSaison &"', "& vYear & ";") ' – gofr1