[WD75] - Boucle TANT QUE qui se comporte pas comme je veux ...

Le
Xavier - CAII
Bonsoir a vous Cher WinDeviens ;p

J'ai un petit prob. je suis pas un grand spécialiste mais j'ai mis en place
une boucle qui à mon sens ne se comporte pas comme elle devrait.

Vous trouverez un bout de mon cod plus loin

Dans l'idée , je souhiate faire un tant que qui parcourt un fichier selon un
paramètre NOM_RES.
Le traitement fonctionne est le resultat obtenu est celui que j'attend.

Mais lorsque je suis le déroulement du prog en débuggage, je m'appercoit que
la boucle passe sur tous les enregistrements des fihciers y compris ceux qui
ne sont pas NOM_RES

Est ce normal ?

Si oui, tant pis ..
Si non .. avez vous un remede à me proposer ?!?

Merci par avnace,
Xavier



HLitPremier(Traitements,Nom_Res)

TANTQUE PAS HEnDehors(Traitements)

DateDépartTrait = Traitements.Date_Trait
DateFinTrait = DateDépartTrait
Durée = Traitements.posologie_duree
DateFinTrait..Jour+=Durée

SI Traitements.Date_Trait <= DateDuJour() <= DateFinTrait ALORS
Info(Traitements.Nom_Res + RC + Traitements.Date_Trait + RC +
Traitements.posologie_duree)
(code)
HAjoute(WTraitements)
HLitSuivant(Traitements,Nom_Res)
FIN

HLitSuivant(Traitements,Nom_Res)

FIN
Vos réponses
Trier par : date / pertinence
Eric Laurent
Le #13996691
Xavier - CAII avait écrit le 25/04/2005 :
Bonsoir a vous Cher WinDeviens ;p

J'ai un petit prob. je suis pas un grand spécialiste mais j'ai mis en place
une boucle qui à mon sens ne se comporte pas comme elle devrait.

Vous trouverez un bout de mon cod plus loin ...

Dans l'idée , je souhiate faire un tant que qui parcourt un fichier selon un
paramètre NOM_RES.
Le traitement fonctionne est le resultat obtenu est celui que j'attend.

Mais lorsque je suis le déroulement du prog en débuggage, je m'appercoit que
la boucle passe sur tous les enregistrements des fihciers y compris ceux qui
ne sont pas NOM_RES ...

Est ce normal ?

Si oui, tant pis ..
Si non .. avez vous un remede à me proposer ... ?!?

Merci par avnace,
Xavier



HLitPremier(Traitements,Nom_Res)

TANTQUE PAS HEnDehors(Traitements)

DateDépartTrait = Traitements.Date_Trait
DateFinTrait = DateDépartTrait
Durée = Traitements.posologie_duree
DateFinTrait..Jour+=Durée

SI Traitements.Date_Trait <= DateDuJour() <= DateFinTrait ALORS
Info(Traitements.Nom_Res + RC + Traitements.Date_Trait + RC +
Traitements.posologie_duree)
(...code...)
HAjoute(WTraitements)
HLitSuivant(Traitements,Nom_Res)
FIN

HLitSuivant(Traitements,Nom_Res)

FIN



D'abord, il faut remplacer HLitPremier(Traitements,Nom_Res) par
HLitRecherche(Traitements,Nom_Res,ValeurRecherchée)

Ensuite, il faut supprimer le premier
HlitSuivant(Traitements,Nom_Res)(celui qui est dans la condition
si...fin)

Cordialement.

--
Eric Laurent

(enlever nospam.)
dany
Le #13996531
"Xavier - CAII" d4j50d$2ci9$
Bonsoir a vous Cher WinDeviens ;p

J'ai un petit prob. je suis pas un grand spécialiste mais j'ai mis en
place
une boucle qui à mon sens ne se comporte pas comme elle devrait.

Vous trouverez un bout de mon cod plus loin ...

Dans l'idée , je souhiate faire un tant que qui parcourt un fichier selon
un
paramètre NOM_RES.
Le traitement fonctionne est le resultat obtenu est celui que j'attend.

Mais lorsque je suis le déroulement du prog en débuggage, je m'appercoit
que
la boucle passe sur tous les enregistrements des fihciers y compris ceux
qui
ne sont pas NOM_RES ...

Est ce normal ?

Si oui, tant pis ..
Si non .. avez vous un remede à me proposer ... ?!?

Merci par avnace,
Xavier



HLitPremier(Traitements,Nom_Res)

TANTQUE PAS HEnDehors(Traitements)

DateDépartTrait = Traitements.Date_Trait
DateFinTrait = DateDépartTrait
Durée = Traitements.posologie_duree
DateFinTrait..Jour+=Durée

SI Traitements.Date_Trait <= DateDuJour() <= DateFinTrait ALORS
Info(Traitements.Nom_Res + RC + Traitements.Date_Trait + RC +
Traitements.posologie_duree)
(...code...)
HAjoute(WTraitements)
HLitSuivant(Traitements,Nom_Res)
FIN

HLitSuivant(Traitements,Nom_Res)

FIN



essayes avec tant que htrouve()
le hpasendehors te positionne sur premier bon enregistrement de la table et
apres il prend les enregistrements les uns apres les autres sans tenir
compte de la demande premiere.
J'ai déjà eu le pb :)
D.
Xavier - CAII
Le #13996521
>
D'abord, il faut remplacer HLitPremier(Traitements,Nom_Res) par
HLitRecherche(Traitements,Nom_Res,ValeurRecherchée)

Ensuite, il faut supprimer le premier
HlitSuivant(Traitements,Nom_Res)(celui qui est dans la condition
si...fin)

Cordialement.

--
Eric Laurent




Bjr et merci de ta réponse;
Malheureusement, j'arrive au même résultat.
C'est a dire que ma boucle parcours toujours tout le fichier ...sans prendre
en compte ma condition ... ?!?
Romain PETIT
Le #13996511
Xavier - CAII avait prétendu :

C'est a dire que ma boucle parcours toujours tout le fichier ...sans prendre
en compte ma condition ... ?!?



Tu n'as aucune condition !
Le fait de préciser "nom_res" indique seulement que la lecture se fera
sur cette clé, mais tu n'as appliqué aucun filtre, il est donc normal
que tu parcoures chaque enregistrement du fichier.
Regarde l'aide à HFiltre...

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Real Phil
Le #13996461
Salut,

Oui c'est normal.
Cette commande « HLitPremier(Traitements,Nom_Res) » indique à WD de
parcourir le fichier en entier en suivant le parcours Nom_Res.

Il est aussi important de saisir ici que si le fichier est très gros et que
les éléments physiques qui pointent vers Nom_Res sont très éloignés les uns
des autres cela ralentira le processus.

L'utilisation d'un HFiltre() règle le problème que vous mentionnez parce
qu'alors seuls les éléments répondant à la condition seront parcourus.

Réal Phil


Bonsoir a vous Cher WinDeviens ;p

J'ai un petit prob. je suis pas un grand spécialiste mais j'ai mis en


place
une boucle qui à mon sens ne se comporte pas comme elle devrait.

Vous trouverez un bout de mon cod plus loin ...

Dans l'idée , je souhiate faire un tant que qui parcourt un fichier selon


un
paramètre NOM_RES.
Le traitement fonctionne est le resultat obtenu est celui que j'attend.

Mais lorsque je suis le déroulement du prog en débuggage, je m'appercoit


que
la boucle passe sur tous les enregistrements des fihciers y compris ceux


qui
ne sont pas NOM_RES ...

Est ce normal ?

Si oui, tant pis ..
Si non .. avez vous un remede à me proposer ... ?!?

Merci par avnace,
Xavier



HLitPremier(Traitements,Nom_Res)

TANTQUE PAS HEnDehors(Traitements)

DateDépartTrait = Traitements.Date_Trait
DateFinTrait = DateDépartTrait
Durée = Traitements.posologie_duree
DateFinTrait..Jour+=Durée

SI Traitements.Date_Trait <= DateDuJour() <= DateFinTrait ALORS
Info(Traitements.Nom_Res + RC + Traitements.Date_Trait + RC +
Traitements.posologie_duree)
(...code...)
HAjoute(WTraitements)
HLitSuivant(Traitements,Nom_Res)
FIN

HLitSuivant(Traitements,Nom_Res)

FIN


Xavier - CAII
Le #13996211
Merci à Romai et Real qui m'ont permis d'optimiser mon traitement ...
Encore désolé pour mon ignorance ... mais WinDev regorge de fonctions qui me
sont encore inconnues

++
Xavier
Publicité
Poster une réponse
Anonyme