Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1294 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  fonction recursive

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fonction recursive

n°1184434
kausa
Posté le 25-08-2005 à 17:02:20  profilanswer
 

j utilise une fonction recursive mais ça marche pas
au debut la requete me renvoie 3 valeurs donc la fontion va s executer 3 fois mais ce n'est pas le cas elle ne s'execute que sur la premiere valeur et ainsi de suite tout au long de l execution  
en somme elle ne fait pas de marche arrière pour reprendre la suite de la fonction
 
public void WhereUsed(string pid){
string ma_requete;
listpid+="\n"+pid;
if(pid=="" ){  
    MessageBox.Show("vide" );
}else{
    gestionbd.InitConnection();
 ma_requete="select ParentPartid From partstructure where ChildPartId='"+pid+"'";
 BDR=gestionbd.ExecuterRequete(ma_requete);
 [#ff2a00]while(BDR.Read()){
     parentpid=cascading.TestBDNull(BDR.GetValue(0));         WhereUsed(parentpid);
 }
}
}[/#5500aa]

mood
Publicité
Posté le 25-08-2005 à 17:02:20  profilanswer
 

n°1184619
ixemul
Nan mais sans blague ! ⚡
Posté le 25-08-2005 à 20:45:54  profilanswer
 

kausa a écrit :

j utilise une fonction recursive mais ça marche pas
au debut la requete me renvoie 3 valeurs donc la fontion va s executer 3 fois mais ce n'est pas le cas elle ne s'execute que sur la premiere valeur et ainsi de suite tout au long de l execution  
en somme elle ne fait pas de marche arrière pour reprendre la suite de la fonction
 
public void WhereUsed(string pid){
string ma_requete;
listpid+="\n"+pid;
if(pid=="" ){  
    MessageBox.Show("vide" );
}else{
    gestionbd.InitConnection();
 ma_requete="select ParentPartid From partstructure where ChildPartId='"+pid+"'";
 BDR=gestionbd.ExecuterRequete(ma_requete);
 [#ff2a00]while(BDR.Read()){
     parentpid=cascading.TestBDNull(BDR.GetValue(0));         WhereUsed(parentpid);
 }
}
}[/#5500aa]


 
 :ouch:  
 
 
c'est pas bien bô comme fonction recursive ça  
 

Code :
  1. public void WhereUsed(string pid)
  2. {
  3.   string ma_requete;
  4.   listpid+="\n"+pid;
  5.   if(pid=="" )
  6.   {
  7.     MessageBox.Show("vide" );
  8.   }
  9.   else
  10.   {
  11.     gestionbd.InitConnection();
  12.     ma_requete="select ParentPartid From partstructure where ChildPartId='"+pid+"'";
  13.     BDR=gestionbd.ExecuterRequete(ma_requete);
  14.     while(BDR.Read())
  15.     {
  16.     parentpid=cascading.TestBDNull(BDR.GetValue(0));         WhereUsed(parentpid);
  17.     }
  18.   }
  19. }


 
C'est deja un peu plus en forme :)
 
petites questions:
 

  • c'est quoi ce "casacading" ???

  • Quelle est la base de donnée ?

  • Quel est le DBType de "ChildPartId"


 
Petits conseils:
 

  • Organise mieux ton code ;)

  • stocke plutot des "pid" dans un arraylist membre de ta classe

  • Fait le Apres le test de condition de chaine vide (ou null... attention à ça)

  • Gere un try... catch... finally, c'est plus simple pour tracer une fonction recursive

  • Debug ton programme :)


n°1184820
moi23372
Posté le 26-08-2005 à 09:13:15  profilanswer
 

et met des commentaires ;)

n°1184866
kausa
Posté le 26-08-2005 à 09:45:38  profilanswer
 

ouch  
coté bd c est tous bon pas de souci faut pas se focaliser sur ça  
le pb vient de la fonction récursive comme je l'ai déja dit elle revient pas en arrière?
j ai trouve une partie du pb le BDR je l 'ai déclare en variable global alors qu'il ne faut pas mais quand je le declare au niveau de la fonction il me genere l exception comme quoi le BDR il c est fermé  
voila si vous avez pas tres bien compris dites le moi et je vais essayer d etre plus claire

n°1189200
blackgodde​ss
vive le troll !
Posté le 01-09-2005 à 09:31:59  profilanswer
 

BDR (on dirait un IDataReader) n'est pas déclaré en local ? a chaque passage dans ta méthode, le BDR de l'appelant est écrasé ?
si c'est le cas, ton while(BDR.Read()) sort directement apres la 1ere itération a chaque fois, ce qui explique que la méthode retourne directement a chaque fois.
sinon, si tu travailles avec SQLServer par exemple, il m'eusse semblé (corrigez moi si je me trompe) que seul un DataReader pouvait etre ouvert par connexion.


---------------
-( BlackGoddess )-

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  fonction recursive

 

Sujets relatifs
Est ce que Online.net a la fonction ftp activé, telecharger en http[Maths] Fonction du cercle autour d'un point...
[MySQL][MD5][Java] Fonction de "déhashage"Quel est la syntaxe pour utiliser les variables dans une fonction
[Résolu] [PHP] Fonction récursive listage de répertoire[fonction recursive]affichage de contenu d'un dossier en ascii
Pb avec ma fonction récursiveRendre récursive une fonction de listage.
Problème avec un boucle For Each et une fonction recursive[VB] Fonction recursive pour répertoires
Plus de sujets relatifs à : fonction recursive


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR