Je suis à une perte sur la façon dont je peux retourner un jeu d'enregistrements lisibles à partir d'une fonction dans ASP classique.Renvoyer jeu d'enregistrements à partir de la fonction dans ASP classique
C'est ce que je suis venu avec, mais il ne fonctionne pas:
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 ligne Response.Write Count.Fields(0).Value
cède l'erreur Item cannot be found in the collection corresponding to the requested name or ordinal.
. Remplacement avec Response.Write Count.Status
Je reçois l'erreur Operation is not allowed when the object is closed.
. L'ajout de Count.Open
donne l'erreur The connection cannot be used to perform this operation. It is either closed or invalid in this context.
.
Modifier après la réponse de Mark B:
Je l'ai déjà regardé recordsets mode déconnecté, mais je ne sais pas comment les utiliser dans mon exemple: chaque tutoriel alimente la requête directement dans le jeu d'enregistrements avec Recordset.Open
, mais je J'utilise des requêtes paramétrées, et même en essayant de nombreuses façons, je ne pouvais pas obtenir le même résultat quand il y avait un ADODB.Command
dans le chemin.
Que dois-je faire?
Merci d'avance.
est ici la solution basée sur la réponse de Eduardo Molteni:
La fonction qui interagit avec la base de données:
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
Le code qui appelle la fonction:
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
Votre morceau final de code est manquant 'Response.CodePage = 65001'. – AnthonyWJones