C'est possible de faire des fonctions récursives (cad , qui s'appellent
elles-memes ds leur propore code) en windev ?
J'en ai fait une qui me parait correcte algorithymiquement parlant mais elle
plante sitot qu'elle doit remonter un niveau d'appel :
*********** ANNALYSE ****************
1 fichier avec 3 rubriques :
Niveau
IDNiveau
nom
idParent
**************** Fonction **********************
PROCEDURE analyserNiveau(numNiveau)
sdd,sdd2 est une Source de Données
req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau //+
" ORDER BY idParent ASC"
req2 est une chaîne
HExécuteRequêteSQL(sdd,req)ALORS
HLitPremier(sdd)
TANTQUE PAS HEnDehors()
// On affiche ts les niveaux actuels
Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau
HLitPremier(sdd2)
TANTQUE PAS HEnDehors()
// on va chercher les enfants de ceux la
analyserNiveau(sdd2.IDNiveau)
HLitSuivant(sdd2)
FIN
HLitSuivant(sdd)
FIN
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
...
Je suppose que le plantage lors du retour concerne Hyperfile ? Ton algo est correct, mais tu ne prends pas en compte une contrainte liée à Hyperfile. Même si tu déclares une nouvelle source de données, Windev ne gère pas un contexte pour chaque source de données, mais plutôt pour chaque fichier. Belle aberration...
Regarde les fonctions hSauvePosition et hRetourPosition
"Fabien Mas" a écrit dans le message de news:41053e1d$0$8538$
C'est possible de faire des fonctions récursives (cad , qui s'appellent elles-memes ds leur propore code) en windev ? J'en ai fait une qui me parait correcte algorithymiquement parlant mais
elle
plante sitot qu'elle doit remonter un niveau d'appel :
*********** ANNALYSE **************** 1 fichier avec 3 rubriques :
Niveau IDNiveau nom idParent
**************** Fonction ********************** PROCEDURE analyserNiveau(numNiveau)
sdd,sdd2 est une Source de Données req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau
//+
" ORDER BY idParent ASC"
req2 est une chaîne HExécuteRequêteSQL(sdd,req)ALORS HLitPremier(sdd) TANTQUE PAS HEnDehors() // On affiche ts les niveaux actuels Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau HLitPremier(sdd2) TANTQUE PAS HEnDehors() // on va chercher les enfants de ceux la analyserNiveau(sdd2.IDNiveau) HLitSuivant(sdd2) FIN HLitSuivant(sdd) FIN
Je suppose que le plantage lors du retour concerne Hyperfile ?
Ton algo est correct, mais tu ne prends pas en compte une contrainte liée à
Hyperfile. Même si tu déclares une nouvelle source de données, Windev ne
gère pas un contexte pour chaque source de données, mais plutôt pour chaque
fichier. Belle aberration...
Regarde les fonctions hSauvePosition et hRetourPosition
"Fabien Mas" <fabien@iom.fr> a écrit dans le message de
news:41053e1d$0$8538$626a14ce@news.free.fr...
C'est possible de faire des fonctions récursives (cad , qui s'appellent
elles-memes ds leur propore code) en windev ?
J'en ai fait une qui me parait correcte algorithymiquement parlant mais
elle
plante sitot qu'elle doit remonter un niveau d'appel :
*********** ANNALYSE ****************
1 fichier avec 3 rubriques :
Niveau
IDNiveau
nom
idParent
**************** Fonction **********************
PROCEDURE analyserNiveau(numNiveau)
sdd,sdd2 est une Source de Données
req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau
//+
" ORDER BY idParent ASC"
req2 est une chaîne
HExécuteRequêteSQL(sdd,req)ALORS
HLitPremier(sdd)
TANTQUE PAS HEnDehors()
// On affiche ts les niveaux actuels
Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau
HLitPremier(sdd2)
TANTQUE PAS HEnDehors()
// on va chercher les enfants de ceux la
analyserNiveau(sdd2.IDNiveau)
HLitSuivant(sdd2)
FIN
HLitSuivant(sdd)
FIN
Je suppose que le plantage lors du retour concerne Hyperfile ? Ton algo est correct, mais tu ne prends pas en compte une contrainte liée à Hyperfile. Même si tu déclares une nouvelle source de données, Windev ne gère pas un contexte pour chaque source de données, mais plutôt pour chaque fichier. Belle aberration...
Regarde les fonctions hSauvePosition et hRetourPosition
"Fabien Mas" a écrit dans le message de news:41053e1d$0$8538$
C'est possible de faire des fonctions récursives (cad , qui s'appellent elles-memes ds leur propore code) en windev ? J'en ai fait une qui me parait correcte algorithymiquement parlant mais
elle
plante sitot qu'elle doit remonter un niveau d'appel :
*********** ANNALYSE **************** 1 fichier avec 3 rubriques :
Niveau IDNiveau nom idParent
**************** Fonction ********************** PROCEDURE analyserNiveau(numNiveau)
sdd,sdd2 est une Source de Données req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau
//+
" ORDER BY idParent ASC"
req2 est une chaîne HExécuteRequêteSQL(sdd,req)ALORS HLitPremier(sdd) TANTQUE PAS HEnDehors() // On affiche ts les niveaux actuels Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau HLitPremier(sdd2) TANTQUE PAS HEnDehors() // on va chercher les enfants de ceux la analyserNiveau(sdd2.IDNiveau) HLitSuivant(sdd2) FIN HLitSuivant(sdd) FIN
Fabien Mas
ben ca marche pas mieux :( merci de ton aide "..." a écrit dans le message de news: YwgNc.60063$
Je suppose que le plantage lors du retour concerne Hyperfile ? Ton algo est correct, mais tu ne prends pas en compte une contrainte liée
à
Hyperfile. Même si tu déclares une nouvelle source de données, Windev ne gère pas un contexte pour chaque source de données, mais plutôt pour
chaque
fichier. Belle aberration...
Regarde les fonctions hSauvePosition et hRetourPosition
"Fabien Mas" a écrit dans le message de news:41053e1d$0$8538$ > C'est possible de faire des fonctions récursives (cad , qui s'appellent > elles-memes ds leur propore code) en windev ? > J'en ai fait une qui me parait correcte algorithymiquement parlant mais elle > plante sitot qu'elle doit remonter un niveau d'appel : > > *********** ANNALYSE **************** > 1 fichier avec 3 rubriques : > > Niveau > IDNiveau > nom > idParent > > **************** Fonction ********************** > PROCEDURE analyserNiveau(numNiveau) > > sdd,sdd2 est une Source de Données > req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau //+ > " ORDER BY idParent ASC" > > req2 est une chaîne > HExécuteRequêteSQL(sdd,req)ALORS > HLitPremier(sdd) > TANTQUE PAS HEnDehors() > // On affiche ts les niveaux actuels > Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom > > req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau > HLitPremier(sdd2) > TANTQUE PAS HEnDehors() > // on va chercher les enfants de ceux la > analyserNiveau(sdd2.IDNiveau) > HLitSuivant(sdd2) > FIN > HLitSuivant(sdd) > FIN > >
ben ca marche pas mieux :(
merci de ton aide
"..." <...@.com> a écrit dans le message de news:
YwgNc.60063$KU.53229@animal.nntpserver.com...
Je suppose que le plantage lors du retour concerne Hyperfile ?
Ton algo est correct, mais tu ne prends pas en compte une contrainte liée
à
Hyperfile. Même si tu déclares une nouvelle source de données, Windev ne
gère pas un contexte pour chaque source de données, mais plutôt pour
chaque
fichier. Belle aberration...
Regarde les fonctions hSauvePosition et hRetourPosition
"Fabien Mas" <fabien@iom.fr> a écrit dans le message de
news:41053e1d$0$8538$626a14ce@news.free.fr...
> C'est possible de faire des fonctions récursives (cad , qui s'appellent
> elles-memes ds leur propore code) en windev ?
> J'en ai fait une qui me parait correcte algorithymiquement parlant mais
elle
> plante sitot qu'elle doit remonter un niveau d'appel :
>
> *********** ANNALYSE ****************
> 1 fichier avec 3 rubriques :
>
> Niveau
> IDNiveau
> nom
> idParent
>
> **************** Fonction **********************
> PROCEDURE analyserNiveau(numNiveau)
>
> sdd,sdd2 est une Source de Données
> req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau
//+
> " ORDER BY idParent ASC"
>
> req2 est une chaîne
> HExécuteRequêteSQL(sdd,req)ALORS
> HLitPremier(sdd)
> TANTQUE PAS HEnDehors()
> // On affiche ts les niveaux actuels
> Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
>
> req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau
> HLitPremier(sdd2)
> TANTQUE PAS HEnDehors()
> // on va chercher les enfants de ceux la
> analyserNiveau(sdd2.IDNiveau)
> HLitSuivant(sdd2)
> FIN
> HLitSuivant(sdd)
> FIN
>
>
ben ca marche pas mieux :( merci de ton aide "..." a écrit dans le message de news: YwgNc.60063$
Je suppose que le plantage lors du retour concerne Hyperfile ? Ton algo est correct, mais tu ne prends pas en compte une contrainte liée
à
Hyperfile. Même si tu déclares une nouvelle source de données, Windev ne gère pas un contexte pour chaque source de données, mais plutôt pour
chaque
fichier. Belle aberration...
Regarde les fonctions hSauvePosition et hRetourPosition
"Fabien Mas" a écrit dans le message de news:41053e1d$0$8538$ > C'est possible de faire des fonctions récursives (cad , qui s'appellent > elles-memes ds leur propore code) en windev ? > J'en ai fait une qui me parait correcte algorithymiquement parlant mais elle > plante sitot qu'elle doit remonter un niveau d'appel : > > *********** ANNALYSE **************** > 1 fichier avec 3 rubriques : > > Niveau > IDNiveau > nom > idParent > > **************** Fonction ********************** > PROCEDURE analyserNiveau(numNiveau) > > sdd,sdd2 est une Source de Données > req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau //+ > " ORDER BY idParent ASC" > > req2 est une chaîne > HExécuteRequêteSQL(sdd,req)ALORS > HLitPremier(sdd) > TANTQUE PAS HEnDehors() > // On affiche ts les niveaux actuels > Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom > > req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau > HLitPremier(sdd2) > TANTQUE PAS HEnDehors() > // on va chercher les enfants de ceux la > analyserNiveau(sdd2.IDNiveau) > HLitSuivant(sdd2) > FIN > HLitSuivant(sdd) > FIN > >
Michel Moreno
Fabien Mas wrote:
ben ca marche pas mieux :( merci de ton aide "..." a écrit dans le message de news: YwgNc.60063$
Je suppose que le plantage lors du retour concerne Hyperfile ? Ton algo est correct, mais tu ne prends pas en compte une contrainte liée
à
Hyperfile. Même si tu déclares une nouvelle source de données, Windev ne gère pas un contexte pour chaque source de données, mais plutôt pour
chaque
fichier. Belle aberration...
Regarde les fonctions hSauvePosition et hRetourPosition
"Fabien Mas" a écrit dans le message de news:41053e1d$0$8538$
C'est possible de faire des fonctions récursives (cad , qui s'appellent elles-memes ds leur propore code) en windev ? J'en ai fait une qui me parait correcte algorithymiquement parlant mais
elle
plante sitot qu'elle doit remonter un niveau d'appel :
*********** ANNALYSE **************** 1 fichier avec 3 rubriques :
Niveau IDNiveau nom idParent
**************** Fonction ********************** PROCEDURE analyserNiveau(numNiveau)
sdd,sdd2 est une Source de Données req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau
//+
" ORDER BY idParent ASC"
req2 est une chaîne HExécuteRequêteSQL(sdd,req)ALORS HLitPremier(sdd) TANTQUE PAS HEnDehors() // On affiche ts les niveaux actuels Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau HLitPremier(sdd2) TANTQUE PAS HEnDehors() // on va chercher les enfants de ceux la analyserNiveau(sdd2.IDNiveau) HLitSuivant(sdd2) FIN HLitSuivant(sdd) FIN
Bonjour, le probleme c'est qu'on ne peut pas faire des hsauveposition imbriques pour un meme fichier(dixit aide).
Pour ton algo:
sdd est une Source de Données req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau
HExécuteRequêteSQL(sdd,req)ALORS HLitPremier(sdd) TANTQUE PAS HEnDehors() // On affiche ts les niveaux actuels Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom analyserNiveau(sdd.IDNiveau) HLitSuivant(sdd) FIN
suffit pas ?, tu executais , apparement 2 fois la meme requete
Sinon, tu peux toujours essayer avec des alias
-- Michel Moreno Clior Informatica Carrer de Balmes 360 2º 2ª 08006 Barcelona
Tel : (+34) 93 292 48 00 Fax : (+34) 93 292 48 04
http://www.clior.es
Fabien Mas wrote:
ben ca marche pas mieux :(
merci de ton aide
"..." <...@.com> a écrit dans le message de news:
YwgNc.60063$KU.53229@animal.nntpserver.com...
Je suppose que le plantage lors du retour concerne Hyperfile ?
Ton algo est correct, mais tu ne prends pas en compte une contrainte liée
à
Hyperfile. Même si tu déclares une nouvelle source de données, Windev ne
gère pas un contexte pour chaque source de données, mais plutôt pour
chaque
fichier. Belle aberration...
Regarde les fonctions hSauvePosition et hRetourPosition
"Fabien Mas" <fabien@iom.fr> a écrit dans le message de
news:41053e1d$0$8538$626a14ce@news.free.fr...
C'est possible de faire des fonctions récursives (cad , qui s'appellent
elles-memes ds leur propore code) en windev ?
J'en ai fait une qui me parait correcte algorithymiquement parlant mais
elle
plante sitot qu'elle doit remonter un niveau d'appel :
*********** ANNALYSE ****************
1 fichier avec 3 rubriques :
Niveau
IDNiveau
nom
idParent
**************** Fonction **********************
PROCEDURE analyserNiveau(numNiveau)
sdd,sdd2 est une Source de Données
req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau
//+
" ORDER BY idParent ASC"
req2 est une chaîne
HExécuteRequêteSQL(sdd,req)ALORS
HLitPremier(sdd)
TANTQUE PAS HEnDehors()
// On affiche ts les niveaux actuels
Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau
HLitPremier(sdd2)
TANTQUE PAS HEnDehors()
// on va chercher les enfants de ceux la
analyserNiveau(sdd2.IDNiveau)
HLitSuivant(sdd2)
FIN
HLitSuivant(sdd)
FIN
Bonjour,
le probleme c'est qu'on ne peut pas faire des hsauveposition imbriques
pour un meme fichier(dixit aide).
Pour ton algo:
sdd est une Source de Données
req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau
HExécuteRequêteSQL(sdd,req)ALORS
HLitPremier(sdd)
TANTQUE PAS HEnDehors()
// On affiche ts les niveaux actuels
Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
analyserNiveau(sdd.IDNiveau)
HLitSuivant(sdd)
FIN
suffit pas ?, tu executais , apparement 2 fois la meme requete
Sinon, tu peux toujours essayer avec des alias
--
Michel Moreno
Clior Informatica
Carrer de Balmes 360 2º 2ª
08006 Barcelona
ben ca marche pas mieux :( merci de ton aide "..." a écrit dans le message de news: YwgNc.60063$
Je suppose que le plantage lors du retour concerne Hyperfile ? Ton algo est correct, mais tu ne prends pas en compte une contrainte liée
à
Hyperfile. Même si tu déclares une nouvelle source de données, Windev ne gère pas un contexte pour chaque source de données, mais plutôt pour
chaque
fichier. Belle aberration...
Regarde les fonctions hSauvePosition et hRetourPosition
"Fabien Mas" a écrit dans le message de news:41053e1d$0$8538$
C'est possible de faire des fonctions récursives (cad , qui s'appellent elles-memes ds leur propore code) en windev ? J'en ai fait une qui me parait correcte algorithymiquement parlant mais
elle
plante sitot qu'elle doit remonter un niveau d'appel :
*********** ANNALYSE **************** 1 fichier avec 3 rubriques :
Niveau IDNiveau nom idParent
**************** Fonction ********************** PROCEDURE analyserNiveau(numNiveau)
sdd,sdd2 est une Source de Données req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau
//+
" ORDER BY idParent ASC"
req2 est une chaîne HExécuteRequêteSQL(sdd,req)ALORS HLitPremier(sdd) TANTQUE PAS HEnDehors() // On affiche ts les niveaux actuels Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau HLitPremier(sdd2) TANTQUE PAS HEnDehors() // on va chercher les enfants de ceux la analyserNiveau(sdd2.IDNiveau) HLitSuivant(sdd2) FIN HLitSuivant(sdd) FIN
Bonjour, le probleme c'est qu'on ne peut pas faire des hsauveposition imbriques pour un meme fichier(dixit aide).
Pour ton algo:
sdd est une Source de Données req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau
HExécuteRequêteSQL(sdd,req)ALORS HLitPremier(sdd) TANTQUE PAS HEnDehors() // On affiche ts les niveaux actuels Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom analyserNiveau(sdd.IDNiveau) HLitSuivant(sdd) FIN
suffit pas ?, tu executais , apparement 2 fois la meme requete
Sinon, tu peux toujours essayer avec des alias
-- Michel Moreno Clior Informatica Carrer de Balmes 360 2º 2ª 08006 Barcelona
Tel : (+34) 93 292 48 00 Fax : (+34) 93 292 48 04
http://www.clior.es
Manu
Fabien Mas wrote:
C'est possible de faire des fonctions récursives (cad , qui s'appellent elles-memes ds leur propore code) en windev ? J'en ai fait une qui me parait correcte algorithymiquement parlant mais elle plante sitot qu'elle doit remonter un niveau d'appel :
*********** ANNALYSE **************** 1 fichier avec 3 rubriques :
Niveau IDNiveau nom idParent
**************** Fonction ********************** PROCEDURE analyserNiveau(numNiveau)
sdd,sdd2 est une Source de Données req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau //+ " ORDER BY idParent ASC"
req2 est une chaîne HExécuteRequêteSQL(sdd,req)ALORS HLitPremier(sdd) TANTQUE PAS HEnDehors() // On affiche ts les niveaux actuels Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau HLitPremier(sdd2) TANTQUE PAS HEnDehors() // on va chercher les enfants de ceux la analyserNiveau(sdd2.IDNiveau) HLitSuivant(sdd2) FIN HLitSuivant(sdd) FIN
c'est ce qui s'appelle faire des jointures ouvertes...
On peut le faire en une seule requete avec fixant le nombre de fils possibles.
Fabien Mas wrote:
C'est possible de faire des fonctions récursives (cad , qui
s'appellent elles-memes ds leur propore code) en windev ?
J'en ai fait une qui me parait correcte algorithymiquement parlant
mais elle plante sitot qu'elle doit remonter un niveau d'appel :
*********** ANNALYSE ****************
1 fichier avec 3 rubriques :
Niveau
IDNiveau
nom
idParent
**************** Fonction **********************
PROCEDURE analyserNiveau(numNiveau)
sdd,sdd2 est une Source de Données
req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" +
numNiveau //+ " ORDER BY idParent ASC"
req2 est une chaîne
HExécuteRequêteSQL(sdd,req)ALORS
HLitPremier(sdd)
TANTQUE PAS HEnDehors()
// On affiche ts les niveaux actuels
Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau
HLitPremier(sdd2)
TANTQUE PAS HEnDehors()
// on va chercher les enfants de ceux la
analyserNiveau(sdd2.IDNiveau)
HLitSuivant(sdd2)
FIN
HLitSuivant(sdd)
FIN
c'est ce qui s'appelle faire des jointures ouvertes...
On peut le faire en une seule requete avec fixant le nombre de fils
possibles.
C'est possible de faire des fonctions récursives (cad , qui s'appellent elles-memes ds leur propore code) en windev ? J'en ai fait une qui me parait correcte algorithymiquement parlant mais elle plante sitot qu'elle doit remonter un niveau d'appel :
*********** ANNALYSE **************** 1 fichier avec 3 rubriques :
Niveau IDNiveau nom idParent
**************** Fonction ********************** PROCEDURE analyserNiveau(numNiveau)
sdd,sdd2 est une Source de Données req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau //+ " ORDER BY idParent ASC"
req2 est une chaîne HExécuteRequêteSQL(sdd,req)ALORS HLitPremier(sdd) TANTQUE PAS HEnDehors() // On affiche ts les niveaux actuels Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau HLitPremier(sdd2) TANTQUE PAS HEnDehors() // on va chercher les enfants de ceux la analyserNiveau(sdd2.IDNiveau) HLitSuivant(sdd2) FIN HLitSuivant(sdd) FIN
c'est ce qui s'appelle faire des jointures ouvertes...
On peut le faire en une seule requete avec fixant le nombre de fils possibles.
Romuald.besset
Michel Moreno wrote:
Fabien Mas wrote:
ben ca marche pas mieux :( merci de ton aide "..." a écrit dans le message de news: YwgNc.60063$
Je suppose que le plantage lors du retour concerne Hyperfile ? Ton algo est correct, mais tu ne prends pas en compte une contrainte liée
à
Hyperfile. Même si tu déclares une nouvelle source de données, Windev ne gère pas un contexte pour chaque source de données, mais plutôt pour
chaque
fichier. Belle aberration...
Regarde les fonctions hSauvePosition et hRetourPosition
"Fabien Mas" a écrit dans le message de news:41053e1d$0$8538$
C'est possible de faire des fonctions récursives (cad , qui s'appellent elles-memes ds leur propore code) en windev ? J'en ai fait une qui me parait correcte algorithymiquement parlant mais
elle
plante sitot qu'elle doit remonter un niveau d'appel :
*********** ANNALYSE **************** 1 fichier avec 3 rubriques :
Niveau IDNiveau nom idParent
**************** Fonction ********************** PROCEDURE analyserNiveau(numNiveau)
sdd,sdd2 est une Source de Données req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau
//+
" ORDER BY idParent ASC"
req2 est une chaîne HExécuteRequêteSQL(sdd,req)ALORS HLitPremier(sdd) TANTQUE PAS HEnDehors() // On affiche ts les niveaux actuels Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau HLitPremier(sdd2) TANTQUE PAS HEnDehors() // on va chercher les enfants de ceux la analyserNiveau(sdd2.IDNiveau) HLitSuivant(sdd2) FIN HLitSuivant(sdd) FIN
Bonjour, le probleme c'est qu'on ne peut pas faire des hsauveposition imbriques pour un meme fichier(dixit aide).
Pour ton algo:
sdd est une Source de Données req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau
HExécuteRequêteSQL(sdd,req)ALORS HLitPremier(sdd) TANTQUE PAS HEnDehors() // On affiche ts les niveaux actuels Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom analyserNiveau(sdd.IDNiveau) HLitSuivant(sdd) FIN
suffit pas ?, tu executais , apparement 2 fois la meme requete
Sinon, tu peux toujours essayer avec des alias
C'est la source de données de la requête qu'il faut indicer (son nom)... en effet, contrairement à l'énoncé de la documentation, si la portée de la variable source de donnée est bien locale, la définition Hyperfile de la connexion elle est bien de portée globale (voir notre dossier sur les sources de données "spectre d'analyse"). Ainsi, dans la récursivité, vous réexploitez une définition déja existante... ce qui provoque l'erreur. le mieux est alors d'utiliser un tableau dynamique de sources de données et d'y ajouter des éléments... ou de trouver le moyen d'indicer vos connexions (une par orrurrence de récursivité)...
++ R&B
Michel Moreno wrote:
Fabien Mas wrote:
ben ca marche pas mieux :(
merci de ton aide
"..." <...@.com> a écrit dans le message de news:
YwgNc.60063$KU.53229@animal.nntpserver.com...
Je suppose que le plantage lors du retour concerne Hyperfile ?
Ton algo est correct, mais tu ne prends pas en compte une contrainte
liée
à
Hyperfile. Même si tu déclares une nouvelle source de données, Windev ne
gère pas un contexte pour chaque source de données, mais plutôt pour
chaque
fichier. Belle aberration...
Regarde les fonctions hSauvePosition et hRetourPosition
"Fabien Mas" <fabien@iom.fr> a écrit dans le message de
news:41053e1d$0$8538$626a14ce@news.free.fr...
C'est possible de faire des fonctions récursives (cad , qui s'appellent
elles-memes ds leur propore code) en windev ?
J'en ai fait une qui me parait correcte algorithymiquement parlant mais
elle
plante sitot qu'elle doit remonter un niveau d'appel :
*********** ANNALYSE ****************
1 fichier avec 3 rubriques :
Niveau
IDNiveau
nom
idParent
**************** Fonction **********************
PROCEDURE analyserNiveau(numNiveau)
sdd,sdd2 est une Source de Données
req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau
//+
" ORDER BY idParent ASC"
req2 est une chaîne
HExécuteRequêteSQL(sdd,req)ALORS
HLitPremier(sdd)
TANTQUE PAS HEnDehors()
// On affiche ts les niveaux actuels
Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau
HLitPremier(sdd2)
TANTQUE PAS HEnDehors()
// on va chercher les enfants de ceux la
analyserNiveau(sdd2.IDNiveau)
HLitSuivant(sdd2)
FIN
HLitSuivant(sdd)
FIN
Bonjour,
le probleme c'est qu'on ne peut pas faire des hsauveposition imbriques
pour un meme fichier(dixit aide).
Pour ton algo:
sdd est une Source de Données
req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau
HExécuteRequêteSQL(sdd,req)ALORS
HLitPremier(sdd)
TANTQUE PAS HEnDehors()
// On affiche ts les niveaux actuels
Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
analyserNiveau(sdd.IDNiveau)
HLitSuivant(sdd)
FIN
suffit pas ?, tu executais , apparement 2 fois la meme requete
Sinon, tu peux toujours essayer avec des alias
C'est la source de données de la requête qu'il faut indicer (son nom)...
en effet, contrairement à l'énoncé de la documentation, si la portée de
la variable source de donnée est bien locale, la définition Hyperfile de
la connexion elle est bien de portée globale (voir notre dossier sur les
sources de données "spectre d'analyse").
Ainsi, dans la récursivité, vous réexploitez une définition déja
existante... ce qui provoque l'erreur.
le mieux est alors d'utiliser un tableau dynamique de sources de données
et d'y ajouter des éléments... ou de trouver le moyen d'indicer vos
connexions (une par orrurrence de récursivité)...
ben ca marche pas mieux :( merci de ton aide "..." a écrit dans le message de news: YwgNc.60063$
Je suppose que le plantage lors du retour concerne Hyperfile ? Ton algo est correct, mais tu ne prends pas en compte une contrainte liée
à
Hyperfile. Même si tu déclares une nouvelle source de données, Windev ne gère pas un contexte pour chaque source de données, mais plutôt pour
chaque
fichier. Belle aberration...
Regarde les fonctions hSauvePosition et hRetourPosition
"Fabien Mas" a écrit dans le message de news:41053e1d$0$8538$
C'est possible de faire des fonctions récursives (cad , qui s'appellent elles-memes ds leur propore code) en windev ? J'en ai fait une qui me parait correcte algorithymiquement parlant mais
elle
plante sitot qu'elle doit remonter un niveau d'appel :
*********** ANNALYSE **************** 1 fichier avec 3 rubriques :
Niveau IDNiveau nom idParent
**************** Fonction ********************** PROCEDURE analyserNiveau(numNiveau)
sdd,sdd2 est une Source de Données req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau
//+
" ORDER BY idParent ASC"
req2 est une chaîne HExécuteRequêteSQL(sdd,req)ALORS HLitPremier(sdd) TANTQUE PAS HEnDehors() // On affiche ts les niveaux actuels Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau HLitPremier(sdd2) TANTQUE PAS HEnDehors() // on va chercher les enfants de ceux la analyserNiveau(sdd2.IDNiveau) HLitSuivant(sdd2) FIN HLitSuivant(sdd) FIN
Bonjour, le probleme c'est qu'on ne peut pas faire des hsauveposition imbriques pour un meme fichier(dixit aide).
Pour ton algo:
sdd est une Source de Données req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + numNiveau
HExécuteRequêteSQL(sdd,req)ALORS HLitPremier(sdd) TANTQUE PAS HEnDehors() // On affiche ts les niveaux actuels Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom analyserNiveau(sdd.IDNiveau) HLitSuivant(sdd) FIN
suffit pas ?, tu executais , apparement 2 fois la meme requete
Sinon, tu peux toujours essayer avec des alias
C'est la source de données de la requête qu'il faut indicer (son nom)... en effet, contrairement à l'énoncé de la documentation, si la portée de la variable source de donnée est bien locale, la définition Hyperfile de la connexion elle est bien de portée globale (voir notre dossier sur les sources de données "spectre d'analyse"). Ainsi, dans la récursivité, vous réexploitez une définition déja existante... ce qui provoque l'erreur. le mieux est alors d'utiliser un tableau dynamique de sources de données et d'y ajouter des éléments... ou de trouver le moyen d'indicer vos connexions (une par orrurrence de récursivité)...
++ R&B
Fabien Mas
tu peux me donner un exemple ?
"Manu" a écrit dans le message de news: ce50oe$t4h$
Fabien Mas wrote: > C'est possible de faire des fonctions récursives (cad , qui > s'appellent elles-memes ds leur propore code) en windev ? > J'en ai fait une qui me parait correcte algorithymiquement parlant > mais elle plante sitot qu'elle doit remonter un niveau d'appel : > > *********** ANNALYSE **************** > 1 fichier avec 3 rubriques : > > Niveau > IDNiveau > nom > idParent > > **************** Fonction ********************** > PROCEDURE analyserNiveau(numNiveau) > > sdd,sdd2 est une Source de Données > req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + > numNiveau //+ " ORDER BY idParent ASC" > > req2 est une chaîne > HExécuteRequêteSQL(sdd,req)ALORS > HLitPremier(sdd) > TANTQUE PAS HEnDehors() > // On affiche ts les niveaux actuels > Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom > > req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau > HLitPremier(sdd2) > TANTQUE PAS HEnDehors() > // on va chercher les enfants de ceux la > analyserNiveau(sdd2.IDNiveau) > HLitSuivant(sdd2) > FIN > HLitSuivant(sdd) > FIN
c'est ce qui s'appelle faire des jointures ouvertes...
On peut le faire en une seule requete avec fixant le nombre de fils possibles.
tu peux me donner un exemple ?
"Manu" <el@netcourrier.com> a écrit dans le message de news:
ce50oe$t4h$1@reader1.imaginet.fr...
Fabien Mas wrote:
> C'est possible de faire des fonctions récursives (cad , qui
> s'appellent elles-memes ds leur propore code) en windev ?
> J'en ai fait une qui me parait correcte algorithymiquement parlant
> mais elle plante sitot qu'elle doit remonter un niveau d'appel :
>
> *********** ANNALYSE ****************
> 1 fichier avec 3 rubriques :
>
> Niveau
> IDNiveau
> nom
> idParent
>
> **************** Fonction **********************
> PROCEDURE analyserNiveau(numNiveau)
>
> sdd,sdd2 est une Source de Données
> req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" +
> numNiveau //+ " ORDER BY idParent ASC"
>
> req2 est une chaîne
> HExécuteRequêteSQL(sdd,req)ALORS
> HLitPremier(sdd)
> TANTQUE PAS HEnDehors()
> // On affiche ts les niveaux actuels
> Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom
>
> req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau
> HLitPremier(sdd2)
> TANTQUE PAS HEnDehors()
> // on va chercher les enfants de ceux la
> analyserNiveau(sdd2.IDNiveau)
> HLitSuivant(sdd2)
> FIN
> HLitSuivant(sdd)
> FIN
c'est ce qui s'appelle faire des jointures ouvertes...
On peut le faire en une seule requete avec fixant le nombre de fils
possibles.
"Manu" a écrit dans le message de news: ce50oe$t4h$
Fabien Mas wrote: > C'est possible de faire des fonctions récursives (cad , qui > s'appellent elles-memes ds leur propore code) en windev ? > J'en ai fait une qui me parait correcte algorithymiquement parlant > mais elle plante sitot qu'elle doit remonter un niveau d'appel : > > *********** ANNALYSE **************** > 1 fichier avec 3 rubriques : > > Niveau > IDNiveau > nom > idParent > > **************** Fonction ********************** > PROCEDURE analyserNiveau(numNiveau) > > sdd,sdd2 est une Source de Données > req est une chaîne = "SELECT * FROM Niveau WHERE idParent=" + > numNiveau //+ " ORDER BY idParent ASC" > > req2 est une chaîne > HExécuteRequêteSQL(sdd,req)ALORS > HLitPremier(sdd) > TANTQUE PAS HEnDehors() > // On affiche ts les niveaux actuels > Fenêtre1.Saisie1 = Fenêtre1.Saisie1 +RC + sdd.nom > > req2 = "SELECT * FROM Niveau WHERE idParent=" + sdd.IDNiveau > HLitPremier(sdd2) > TANTQUE PAS HEnDehors() > // on va chercher les enfants de ceux la > analyserNiveau(sdd2.IDNiveau) > HLitSuivant(sdd2) > FIN > HLitSuivant(sdd) > FIN
c'est ce qui s'appelle faire des jointures ouvertes...
On peut le faire en une seule requete avec fixant le nombre de fils possibles.