Il est ou son probleme a lui (Réglé)

Il est ou son probleme a lui (Réglé) - VB/VBA/VBS - Programmation

Marsh Posté le 30-08-2005 à 18:10:08    

Bonjours.
J'un problème dont je ne comprend pas la raison. Je suis pas une bete en asp alors je ne critique pas (pour l'instant) le language.
J'ai une methode dans une classe presente ci-dessous, Cette methode place les informations dans une classe. La classe Ticket fonction (testé), la requete SQL fonctionne (testé).
Je voudrais faire un return de l'objet ticket précédement alimenté. Problème c'est que j'ai ce message d'erreur

Citation :


Erreur d'exécution Microsoft VBScript error '800a01b6'
Cet objet ne gère pas cette propriété ou cette méthode: 'out'


Même si je place l'objet en reout de la fonction j'ai toujours ce même message.  
Quel est cette erreur. Avec une autre methode j'ai eu ce même problème mais je l'ai contourné.
Je veux juste faire un return de mon objet.
Merci.

Code :
  1. Public Function SelectTicket()
  2.  Set CN = Server.CreateObject("ADODB.Connection" )
  3.  Set RS = Server.CreateObject("ADODB.Recordset" )
  4.  Set objTicket = new Ticket
  5.  CN.Open sCNINTERwrite
  6.  SQL = "SELECT * FROM tb_ticket WHERE tck_id = " & idTicket
  7.  RS.Open SQL, CN, 2, 4
  8.  if not RS.EOF then
  9.   echo RS("tck_message" )
  10.   objTicket.setMessage(RS("tck_message" ))
  11.   objTicket.setStatus(RS("tck_status" ))
  12.   objTicket.setIdUtilisateur(RS("tck_utilisateur" ))
  13.   objTicket.setType(RS("tck_type" ))
  14.   objTicket.setSujet(RS("tck_sujet" ))
  15.   objTicket.setResp1(RS("tck_resp1" ))
  16.   objTicket.setResp2(RS("tck_resp2" ))
  17.   objTicket.setFichier(RS("tck_fichier" ))
  18.   out = objTicket
  19.  end if
  20.  set objTicket = nothing
  21.  SelectTicket = out
  22. End Function


 
ps :Cette methode a été testé sous différente version de syntaxe. Pour autant, c'est toujours pareille. Aussi que la fonction SelectTicket est une methode d'une classe


Message édité par Berceker United le 31-08-2005 à 12:07:08
Reply

Marsh Posté le 30-08-2005 à 18:10:08   

Reply

Marsh Posté le 31-08-2005 à 09:27:43    

up

Reply

Marsh Posté le 31-08-2005 à 09:30:06    

Je te conseil de rajouter

Code :
  1. Option Explicit

au debut de ton module
Tu seras ainsi force de declarer toutes tes variables

Code :
  1. Dim ma_var As son_type


 
Ici tu es entrain de manipuler un objet (objTicket).. or en VB pour definir un objet il faut utiliser le mot clef "Set".
 
donc si tu fais

Code :
  1. '...
  2. Set out = objTicket
  3. '....
  4. Set SelectTicket = out


 
Ca ira bcq mieux...
P.S: Profite aussi pour rajouter le type de la valeur de retour de ta fonction..

Code :
  1. Public Function nom_de_la_fonction(param As param_type,..) As retour_type


 
Si tu ne precise pas le type d'une variable ou d'une fonction, elle sera considere de type "Variant" (qui, entre nous, est un truc extrement etrange dans VB, qui ne devrait pas exister... Quand on declare une variable, on sait quel est on type, ce n'est pas une poubelle ou on met se qui nous passe par la tete dedans!)


---------------
Guendalf
Reply

Marsh Posté le 31-08-2005 à 09:52:29    

Merci beaucoup sa marche.  :)  
En faite j'avais je pensais pas que sa pouvait être du faite que je n'ai pas utilisé l'élément set car j'ai déjà manipulé une méthode en récurif qui retournais un tableau d'objet et j'ai pas eu de souci. Je savais qu'il me manquais une connaissance particulière pour régler se problème ;).
Concernant le As j'ai l'impression que l'asp n'apprecie pas.

Reply

Marsh Posté le 31-08-2005 à 10:01:16    

Bonjour
 

Citation :


Concernant le As j'ai l'impression que l'asp n'apprecie pas.


 
En ASP (VbScript), les variables ne sont pas typées. Donc pas de As

Reply

Marsh Posté le 31-08-2005 à 10:03:52    

Merci à vous  [:bigoudi33] ! j'en ai appris aujourd'hui. Dire qu'hier je m'étais énervé  :sarcastic:

Reply

Marsh Posté le 31-08-2005 à 12:10:51    

Cas il y a pas besoin de placer un set. C'est pour cela que sa m'embrouillais.

Code :
  1. Public Function ListeTicket(idUser)
  2.  Dim CN, RS, SQL,i
  3.  i=0
  4.  Dim objTicket
  5.  Redim objTicket(i)
  6.  Set CN = Server.CreateObject("ADODB.Connection" )
  7.  Set RS = Server.CreateObject("ADODB.Recordset" )
  8.  CN.Open sCNINTERwrite
  9.  SQL = "SELECT * FROM tb_ticket WHERE tck_resp1 = " & idUser
  10.  RS.Open SQL, CN, 2, 4
  11.  while not RS.EOF
  12.   Redim preserve  objTicket(i)
  13.   Set objTicket(i) = new Ticket
  14.   objTicket(i).setMessage(RS("tck_message" ))
  15.   objTicket(i).setStatus(RS("tck_status" ))
  16.   objTicket(i).setIdUtilisateur(RS("tck_utilisateur" ))
  17.   objTicket(i).setType(RS("tck_type" ))
  18.   objTicket(i).setSujet(RS("tck_sujet" ))
  19.   objTicket(i).setResp1(RS("tck_resp1" ))
  20.   objTicket(i).setResp2(RS("tck_resp2" ))
  21.   objTicket(i).setFichier(RS("tck_fichier" ))
  22.   i=i+1
  23.   RS.movenext
  24.  wend
  25.  set CN = nothing
  26.  set RS = nothing
  27.  ListeTicket = objTicket
  28. End Function

Reply

Sujets relatifs:

Leave a Replay

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