No sé cómo puedo devolver un conjunto de registros legible de una función en ASP clásico.Regrese conjunto de registros de la función en ASP clásico
Esto es lo que se me ocurrió, pero que no está funcionando:
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
La línea Response.Write Count.Fields(0).Value
produce el error Item cannot be found in the collection corresponding to the requested name or ordinal.
.
Reemplazando con Response.Write Count.Status
Aparece el error Operation is not allowed when the object is closed.
.
Al agregar Count.Open
aparece el error The connection cannot be used to perform this operation. It is either closed or invalid in this context.
.
Edición después de la respuesta de Mark B:
que ya se veía en registros desconectados, pero no sé cómo usarlos en mi ejemplo: cada tutorial alimenta la consulta directamente en el conjunto de registros con Recordset.Open
, pero Estoy usando consultas parametrizadas, e incluso tratando de muchas maneras no pude obtener el mismo resultado cuando hay un ADODB.Command
en el camino.
¿Qué debo hacer?
Gracias de antemano.
Aquí está la solución basada en la respuesta de Eduardo Molteni:
La función que interactúa con la base de datos:
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
El código que llama a la función:
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
Su porción final del código no se encuentra 'Response.CodePage = 65001'. – AnthonyWJones