Ich bin ratlos, wie ich ein lesbares Re-Cord-Set von einer Funktion in klassischem ASP zurückgeben kann. DieseGibt Re-Cord-Set aus Funktion in klassischem ASP zurück
ist, was ich kam mit, aber es funktioniert nicht:
Response.Clear
Response.CharSet = "utf-8"
Response.ContentType = "text/plain"
Dim Count
Set Count = Test
Response.Write Count.Fields(0).Value
Function Test
Dim Query, Connection, Command, Recordset
Query = " blah blah blah "
Set Connection = Server.CreateObject("ADODB.Connection")
Set Command = Server.CreateObject("ADODB.Command")
Set Recordset = Server.CreateObject("ADODB.Recordset")
Connection.ConnectionString = "blah blah blah"
Connection.Open
Set Command.ActiveConnection = Connection
Command.CommandText = Query
Set Recordset = Command.Execute
Set Test = Recordset
Recordset.Close
Connection.Close
Set Recordset = Nothing
Set Command = Nothing
Set Connection = Nothing
End Function
Die Response.Write Count.Fields(0).Value
Linie ergibt den Item cannot be found in the collection corresponding to the requested name or ordinal.
Fehler.
Ersetzen Sie es mit Response.Write Count.Status
Ich bekomme den Operation is not allowed when the object is closed.
Fehler.
Hinzufügen Count.Open
gibt den The connection cannot be used to perform this operation. It is either closed or invalid in this context.
Fehler.
bearbeiten, nachdem Mark B Antwort:
ich bereits bei nicht verbundenen Datensatz gesucht, aber ich weiß nicht, wie sie in meinem Beispiel verwenden: jedes Tutorial führt die Abfrage direkt in den Re-Cord mit Recordset.Open
, aber ich benutze parametrisierte Abfragen und versuche sogar viele Möglichkeiten, das gleiche Ergebnis nicht zu erhalten, wenn ein ADODB.Command
im Weg ist.
Was soll ich tun?
Vielen Dank im Voraus.
Hier ist die Lösung auf Basis von Eduardo Molteni Antwort:
Die Funktion, die mit der Datenbank interagiert:
Function Test
Dim Connection, Command, Recordset
Set Connection = Server.CreateObject("ADODB.Connection")
Set Command = Server.CreateObject("ADODB.Command")
Set Recordset = Server.CreateObject("ADODB.Recordset")
Connection.ConnectionString = "blah blah blah"
Connection.Open
Command.ActiveConnection = Connection
Command.CommandText = "blah blah blah"
Recordset.CursorLocation = adUseClient
Recordset.Open Command, , adOpenForwardOnly, adLockReadOnly
Set Recordset.ActiveConnection = Nothing
Set Test = Recordset
Connection.Close
Set Recordset = Nothing
Set Command = Nothing
Set Connection = Nothing
End Function
Der Code, der die Funktion aufruft:
Response.Clear
Response.CharSet = "utf-8"
Response.ContentType = "text/plain"
Dim Recordset
Set Recordset = Test
Response.Write Recordset.Fields(0).Value
Recordset.Close
Set Recordset = Nothing
Ihr letztes Stück Code gibt 'Response.CodePage = 65001'. – AnthonyWJones