Zurück SCOPE_IDENTITY() ohne Verwendung CreateParam
Ich versuche diese aber immer einen Fehler ADODB.Recordset error '800a0e78' Operation is not allowed when the object is closed.
auf die Zeile mit diesem code If ScopeID.EOF Then
Bitte nicht die Antwort zu verwenden, die CreateParam
Methode, auf der Suche nach einer Lösung ohne diese Methode. Danke.
<%
set Cmd = Server.CreateObject("ADODB.Command")
Cmd.ActiveConnection = conn
Cmd.CommandText = "INSERT INTO TABLE (NAME) VALUES ('test') SELECT SCOPE_IDENTITY() AS ID"
Cmd.CommandType = 1
Cmd.CommandTimeout = 0
Cmd.Prepared = true
Set ScopeID = Cmd.Execute()
If ScopeID.EOF Then
Response.Write "There was an Error in your request, Please try again"
Response.End
Else
ID= ScopeID(0).Value
End IF
ScopeID.Close
Set ScopeID = Nothing
Set Cmd = Nothing
Response.Write ID
%>
- Sollte Ihre Verbindung mit einem
Set Cmd.ActiveConnection = conn
? - Nope, funktioniert gut, ohne die
Set
Teil. - Check Antwort von Robert Wagner in dem folgenden link, stackoverflow.com/questions/304281/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Wie ich es verstehe, gibt SQL Server einen (leeren) Datensatz-stellen für die insert-Anweisung, wenn es nicht "versteckt", indem Sie SET NOCOUNT ON. Ich denke die Fehlermeldung bezieht sich auf die record-set wird geschlossen, und nicht die Verbindung.
Anwendung
.NextRecordSet()
nach dem Befehl hat den trick:Wenn Sie eine moderne version von SQL Server (2005 auf den Stationen, die ich denke) man kann die output-Klausel:
Ist Ihre Verbindung öffnen? Es scheint, dass das, was die Fehlermeldung beschwert sich darüber. Sie können nicht einen Befehl auszuführen, der gegen eine geschlossene Verbindung.
Set ScopeID = Cmd.Execute()
Linie?Teilen Sie Ihre Abfrage in zwei Teile:
Beachten Sie die
;
. Ich denke, dass der zweite Teil der Abfrage wird nicht ausgeführt.