Le retour du jeu d'enregistrements à partir de la fonction en ASP classique
Je suis à une perte sur la façon dont je peux retourner un jeu d'enregistrements lisibles à partir d'une fonction en ASP classique.
C'est ce que je suis venu avec, mais cela 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 Response.Write Count.Fields(0).Value
ligne les rendements de la Item cannot be found in the collection corresponding to the requested name or ordinal.
erreur.
De le remplacer avec Response.Write Count.Status
- je obtenir le Operation is not allowed when the object is closed.
erreur.
Ajoutant Count.Open
donne la The connection cannot be used to perform this operation. It is either closed or invalid in this context.
erreur.
Modifier après la Marque B réponse:
Je l'ai déjà regardé les jeux d'enregistrements déconnecté mais je ne sais pas comment les utiliser dans mon exemple: chaque tutoriel flux de la requête directement dans le jeu d'enregistrements avec Recordset.Open
, mais je suis en utilisant des requêtes paramétrées, et même d'essayer de nombreuses façons, je ne pouvais pas obtenir le même résultat lorsqu'il y a une ADODB.Command
dans le chemin.
Que dois-je faire?
Merci d'avance.
Voici la solution basée sur Eduardo Molteni réponse:
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
Response.CodePage = 65001
.OriginalL'auteur Albireo | 2010-10-01
Vous devez vous connecter pour publier un commentaire.
Voici une fonction qui renvoie un jeu d'enregistrements déconnecté
Je sais que c'est un vieux post, mais comment puis-je obtenir le même dans JScript? Je ne peux pas faire "rs.Ouvrir cmd , adOpenForwardOnly, adLockReadOnly" avec un paramètre vide pour la Connexion. Je reçois le message d'erreur "Impossible de modifier la propriété ActiveConnection d'un objet Recordset qui a un objet de Commande comme de sa source."
Désolé, mais je ne sais pas JScript. Pourquoi ne pas simplement garder cette fonction est VBScript? Je crois que vous pouvez avoir mélangé les scripts...
J'ai été en mesure de régler manuellement les paramètres du jeu d'enregistrements objet et l'appel de la méthode ouverte uniquement avec le paramètre de la commande. J'ai également eu à écrire SET NOCOUNT on; dans ma procédure stockée pour le faire fonctionner.
OriginalL'auteur Eduardo Molteni
Bien, vous fermez le jeu d'enregistrements et de la connexion immédiatement après le réglage de la fonction de la variable de retour, de sorte que explique les messages d'erreur.
Je ne suis pas un développeur VB, mais je pense que ce que vous avez besoin de regarder est Déconnectés. Jetez un oeil à cet article, il fait à peu près exactement ce que vous voulez.
Recordset.Open
, mais je suis en utilisant des requêtes paramétrées, et même d'essayer de nombreuses façons, je ne pouvais pas obtenir le même résultat lorsqu'il y a uneADODB.Command
dans le chemin.Je pense que vous avez besoin de modifier votre question et inclure toutes les informations, puis quelqu'un avec plus de VB de connaissances que moi pourrait être en mesure de vous aider.
OriginalL'auteur Mark Bell