Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/08/2007, 10h30   #1
Invité de passage
 
Inscription : août 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 6
Points : 2
Points : 2
Par défaut Recordset et retour de fonction

Bonjour,

Je voudrais retourner ma variable contenant le résultat de ma requête faite avec un recordset.

En clair :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
function getAllCatalogue()
	Dim Req
 
	Set c = Server.CreateObject("ADODB.Recordset")
 
	Req = 		"SELECT ... "
 
	c.Open Req, cn, 3, 3
 
	getAllCatalogue = c
 
	close_rs(c)
 
end function
et je devrais pouvoir récupérer le résultat comme ceci :
Code :
categ = getAllCatalogue()
Or ceci me renvoie une erreur :
Code :
1
2
3
4
 
Erreur d'exécution Microsoft VBScript error '800a01c2'
 
Nombre d'arguments ou affectation de propriété incorrects
Comment retourné le contenu complet de ma variable c ?
prometee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 11h56   #2
Membre chevronné
 
Avatar de ryan
 
Inscription : juin 2003
Messages : 766
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 766
Points : 760
Points : 760
Yop!

A première vue, je dirais que "c" est un object, et que la fonction s'attend à retourner une variable.

Peut-être sauver ton recordset dans un tableau
Code :
1
2
 
getAllCatalogue = c.getrows
et retourner le tableau?
ryan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 11h57   #3
Invité de passage
 
Inscription : août 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 6
Points : 2
Points : 2
C'est ce que j'ai fait pour l'instant, mais bon je pensais qu'on pourrais retourner tout un objet...
prometee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 14h10   #4
Invité de passage
 
Inscription : août 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 6
Points : 2
Points : 2
En fait il suffisais d'un peu réfléchir, je retourne un objet donc il faut que je Set l'objet pour l'affecter a ma nouvelle variable...

donc au niveau du return faire :

Code :
Set getAllCatalogue = c
prometee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 15h46   #5
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
salut,

J'ai déjà fait une tentative de ce que tu veux faire mais j'ai pas trouvé ou alors je sais plus le faire

Normalement le return te retourne la valeur or j'arrive pas (ou plus ) à l'utiliser peut-être n'est-il pas utilisable dans une fonction mais plus dans une procèdure (à vérifier )

Sinon en attendant ce que tu dois faire c'est ceci :
Code asp :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function getAllCatalogue()
	Dim Req
 
	Set c = Server.CreateObject("ADODB.Recordset")
 
	Req = 		"SELECT ... "
 
	c.Open Req, cn, 3, 3
 
     do while not rs.eof
        response.write Rs("tonchamp") &"<br/>"&vbcrlf
     rs.movenext
     loop
	close_rs(c)
 
end function
Code asp :
1
2
3
<%
  getAllCatalogue () 'Sans rien préciser tout ton catalogue sera affiché
%>
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours

FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 15h51   #6
Invité de passage
 
Inscription : août 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 6
Points : 2
Points : 2
au départ ma fonction étais comme ça, mais j'ai eu besoin à d'autre endroits de mon site de reprendre le résultat de la même requête. c'est pour ça que je ne fait pas d'affichage dans ma fonction ...

j'ai donc une fct getAllCatalogue et une autre qui s'appelle showAllCatalogue.
prometee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 15h55   #7
Membre actif
 
Inscription : avril 2004
Messages : 202
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : avril 2004
Messages : 202
Points : 192
Points : 192
bonjour,

perso, je ferai plutôt une procédure qu'une fonction... un truc dans le style
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sub populateRS(targetRS by val)
	Dim Req, c
	Set c = Server.CreateObject("ADODB.Recordset")
	Req = 		"SELECT ... "
	c.Open Req, cn, 3, 3
	targetRS = c
	close_rs(c)
end sub
 
dim monRecordSet
set monRecordSet = Server.CreateObject("ADODB.RecordSet")
populateRS monRecordSet
if not monRecordSet.EoF then
	[...]
end if
__________________
Nico, l'agrotic géomatic
agrotic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 16h01   #8
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
Dans ce cas en espèrant que tu ne souhaites qu'une valeur ^^' tu places le résultat dans un cookies
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours

FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 15h46   #9
Invité de passage
 
Inscription : août 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 6
Points : 2
Points : 2
En fait il fallais juste un peu plsu fouillez : Request.clone et ici aussi

Code :
1
2
3
4
5
6
7
8
9
10
11
12
function getAllCatalogue()
	Dim Req
 
	Set c = Server.CreateObject("ADODB.Recordset")
	
	Req = 		"SELECT ... "
	
	c.Open Req, cn, 3, 3
	
	Set getAllCatalogue = c.clone(-1)
	
end function
et donc récupèrer le contenu en fesant :

Code :
Set nouveauxC = getAllCatalogue()
prometee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 17h40   #10
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
C'est bon à savoir pour la prochaine fois
Penses au tag résolu
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours

FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h40.


 
 
 
 
Partenaires

Hébergement Web