Passage de paramètres à une procédure

Passage de paramètres à une procédure - ASP - Programmation

Marsh Posté le 04-12-2004 à 20:14:11    

Bonjour,
j'ai un problème de passage de paramètres dans un vbscript.
Dans ma page(principale), j'exécute une requête dont les résultats vont dans un recordset. Je regarde s'il est vide et sinon j'appelle une procédure qui affiche le contenu du recordset.
MAIS j'ai une erreur de type à l'appel de la fonction (alors qu'on peut pas préciser les types).
A l'aide !
 
Voilà la fonction qui est dans un .asp à part

Code :
  1. <% Language=VBScript %>
  2. <%
  3. Sub AfficherProduits(rs)
  4. ...
  5. End Sub


 
et mes appels

Code :
  1. set rs = Server.CreateObject("ADODB.Recordset" )
  2. requete = "select * from PRODUIT WHERE Id_cat = '"&Request.Form("code_cat" )&"' ORDER BY Titre_prod"
  3. rs.Open requete, oconn, 3, 3
  4. AfficherProduits(rs)

Reply

Marsh Posté le 04-12-2004 à 20:14:11   

Reply

Marsh Posté le 06-12-2004 à 09:10:23    

heu je ne sais pas, essai avec
test = AfficherProduits(rs)  
juste pour voir

Reply

Marsh Posté le 06-12-2004 à 10:41:46    

bon heu je ne sais pas ce que j'avais ce matin, mais bon. Oublie ce que j'ai dit et essai avec:
AfficherProduits "rs"
 
Voila! ciaoo

Reply

Marsh Posté le 06-12-2004 à 11:00:55    

Essaies :
 
AfficherProduits rs
 
Il me semble qu'il ne faut pas mettre de parentheses lors d'un appel d'une fonction en ASP
 
:hello:

Reply

Marsh Posté le 06-12-2004 à 11:48:08    

tout à fait des doubles quotes pour une sub! pas de parenthèses!!!

Reply

Marsh Posté le 06-12-2004 à 13:46:57    

J'ai essayé avec et sans parenthèses => aucun changement...
Le problème vient peut ê du type recordset qui est particulier (passage par adobd), non ?

Reply

Marsh Posté le 06-12-2004 à 18:42:33    

call Afficher(rs)
 
C'est plus propre et plus rapide.

Reply

Marsh Posté le 06-12-2004 à 18:43:12    

Et vire le 3,3 histoire de voir (laisse l'ASP gérer son type de curseur dans un premier temps, c'est source de bug)
 
Sinon, t'as un message d'erreur ? C'est quoi ?

Reply

Marsh Posté le 06-12-2004 à 19:26:38    

le call marche pas non plus, je pense finalement si ct une erreur d'appel, ca mettrait pas une erreur de type...
 
 
Erreur d'exécution Microsoft VBScript erreur '800a000d'  
 
Type incompatible: 'AfficherProduits'
 
je vais essayer en virant le 3,3


Message édité par Le Mage le 06-12-2004 à 19:27:10
Reply

Marsh Posté le 06-12-2004 à 19:30:19    

sans le 3,3 ca marche pas non plus

Reply

Marsh Posté le 06-12-2004 à 19:30:19   

Reply

Marsh Posté le 06-12-2004 à 21:44:33    

Poste ton code entier (du moins, les parties concernées)
 
Parceque sans plus d'infos, là je vois pas, et je pense que je ne suis pas le seul ;)

Reply

Marsh Posté le 06-12-2004 à 21:51:00    

heu essaye ca => Option Explicit  
10 contre 1 que tu trouveras ton erreur :):):):):)

Reply

Marsh Posté le 06-12-2004 à 22:28:13    

Il risque d'en trouver plus d'une :D

Reply

Marsh Posté le 06-12-2004 à 22:43:06    

apparemment le pb vient de la fonction, il me dit variable indéfinie à l'appel !
 
Inclusion :

Code :
  1. <% @Language=VBScript %>
  2. <% Option Explicit %>
  3. <% Server.Execute("fonctions.asp" ) %>


 
Création du recordset et appel de la fonction

Code :
  1. set oconn = Server.CreateObject("ADODB.Connection" )
  2. oconn.Open "alias", "nom", "pass"
  3. set rs = Server.CreateObject("ADODB.Recordset" )
  4. requete = "select * from PRODUIT WHERE sel_prod=1 ORDER BY Titre_prod"
  5. rs.MoveFirst()
  6. AfficherProduits(rs)


 
Contenu de "fonctions.asp"

Code :
  1. Deb. Fichier
  2. <%
  3. 'Le recordset ne doit pas être vide
  4. Sub AfficherProduits(rs)
  5. .
  6. .
  7. .
  8. End Sub
  9. %>
  10. Fin Fichier


 
Erreur :
Erreur d'exécution Microsoft VBScript erreur '800a01f4'  
 
Variable non définie: 'AfficherProduits'  
 
/iup2/util2/boutique/consultprod.asp, ligne 78

Reply

Marsh Posté le 06-12-2004 à 22:44:09    

Arjuna a écrit :

Il risque d'en trouver plus d'une :D


ce sont mes premières heures d'ASP, je fais des erreurs si je veux  :na:


Message édité par Le Mage le 06-12-2004 à 22:44:32
Reply

Marsh Posté le 06-12-2004 à 22:46:31    

Le Mage a écrit :

Création du recordset et appel de la fonction

Code :
  1. set oconn = Server.CreateObject("ADODB.Connection" )
  2. oconn.Open "alias", "nom", "pass"
  3. set rs = Server.CreateObject("ADODB.Recordset" )
  4. requete = "select * from PRODUIT WHERE sel_prod=1 ORDER BY Titre_prod"
  5. rs.MoveFirst()
  6. AfficherProduits(rs)




1) T'as pas mis le "rs.open requête, connection"
2) Le Server.Execute ça fait pas un include.
 
Un include ça se fait comme ça :
 
<!-- #include file="fonctions.asp" -->

Reply

Marsh Posté le 06-12-2004 à 22:47:19    

Le Mage a écrit :

ce sont mes premières heures d'ASP, je fais des erreurs si je veux  :na:


Nan, mais c'est qu'avec le "Option Explicit", il faut faire un Dim de TOUTES les variables.
 
Bon, je retourne à mon avion, je vais finir par me perdre à débuguer de l'ASP en phase d'approche d'un aéroport :D

Reply

Marsh Posté le 06-12-2004 à 22:49:49    

C'est le cas, je me suis paumé :D
 
Pis je suis dans les nuages, c'est pas terrible pour repérer où il est :D
 
Heureusement qu'il y a des balises radio pour se repérer :)
 
Vive l'ILS, je suis enfin retourné dans le cône d'approche :) Reste plus qu'à poser la bête :bounce:
 
PS: c'était totalement hors sujet :D


Message édité par Arjuna le 06-12-2004 à 22:51:42
Reply

Marsh Posté le 06-12-2004 à 22:51:00    

la requete g oublié de la recopier mais l'include c possible que ca aide.
Merci.
Ca fait quoi alors execute() ?
Je l'ai utilisée pr inclure de l'html ca a marché...


Message édité par Le Mage le 06-12-2004 à 22:52:26
Reply

Marsh Posté le 06-12-2004 à 22:55:47    

Ca marche avec les bonnes inclusions !
1000 mercis :jap: et -1000 mercis aux profs qui expliquent pas tout


Message édité par Le Mage le 06-12-2004 à 22:56:33
Reply

Marsh Posté le 06-12-2004 à 23:00:41    

Le Execute, ça sert à... Exécuter le contenu d'une autre page, mais de façon "remote". Les variables ne sont pas partagées, sauf cette du serveur (Application et Session) il me semble. C'est à vérifier dans la MSDN. En tout cas, je ne m'en suis jamais servi (de là à dire que ça sert à rien... :D)

Reply

Marsh Posté le 06-12-2004 à 23:01:50    

http://www.devguru.com/Technologie [...] ecute.html
 
Ils ne parlent pas du scope des variables. Pour moi, c'est séparé, à moins que celà ne concerne que les fonctions.
En tout cas, comme ils disent, ça execute bêtement la page en question, puis ça la quitte. Un peu à la façon d'une fonction, lorsqu'on l'appel, tout ce qui a été déclaré à l'intérieur de cette page doit être perdu. Je ne sais pas si ça affecte les variables globales par contre.
En tout cas, comme si en C++ tu crées un objet à l'intérieur d'une fonction, l'objet est perdu quand tu en ressorts. Pour les fonctions, ça semble pareil.


Message édité par Arjuna le 06-12-2004 à 23:04:44
Reply

Marsh Posté le 06-12-2004 à 23:02:58    

d'accord!
moi je cherchais juste une inclusion :)

Reply

Marsh Posté le 07-12-2004 à 09:44:08    

eh t'as pas oublier un include de la page fonction.asp dans consultprod.asp

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed