WimParticipant
Junior
Bonjour,
Je me pose la question si il est possible de mettre 2 commandes SCREENER dans le même screener. Je m’explique. Je veux afficher dans la liste de résultats d’un screener parfois le variable “pattern” et d’autres fois le variable “ratio”. En plus je veux que l’entête de la colonne critère reflète quel variable est montré. Et ça just een modifiant la valeur du variable “type” avant de lancer le screener.
Pour cela j’ai écrit ce bout de code:
if type=1 then
SCREENER[ (condition1) AND c6 ] (pattern as “pattern”)
else
SCREENER[ (condition1) AND c6 ] (ratio as “ratio”)
endif
Ca fonctionne à merveille, sauf . . . la colonne a toujours, vraiment toujours, l’entête “ratio”. Si je commence avec ratio en premier et pattern en seconde, eh bien, cela affiche toujours l’entête “pattern”. Je me pose la question si on a le droit de mettre 2 fois une commande SCREENER dans un fichier. La partie condition est bien respecté au sein de la construction IF, mais la partie AS execute toujours la seconde même si le IF ne passe pas par là.
Au secours, Wim
Il n’y a qu’une seule colonne critère, avec un seul titre, donc le titre utilisée sera toujours celui de la dernière condition testée.
Par conséquent, on ne peut pas le faire varier à volonté.
WimParticipant
Junior
Merci Nicolas pour la réponse. J’en déduit que je peux avoir plusieurs exemplaires de la commande SCREENER dans une IF … THEN … ELSE … ENDIF.
Mais dans mon exemple avec type = 1 je dirais que seulement la partie THEN sera exécuté. Et c’est bien ce qui se passe, mais que partiellement. La valeur de pattern est bien affiché mais pas le texte “pattern”. Pour l’entête c’est toujours, indépendant de la valeur de type, le texte “ratio” qui est affiché. Ce texte se retrouve dans la partie ELSE. Je dirais que cette partie n’est pas du tout évalué si type = 1.
Dis d’une autre façon: si type = 1 dans la colonne critère s’affiche la valeur de variable pattern (venant de THEN) et le texte “ratio” (venant de ELSE).
Ou est-ce que ta réponse veut dire que la dernière << as “….” >> dans une programme est celui qui compte? Même si le critère final ne se retrouve pas dans la dernière commande SCREENER. Si c’est ça, j’appellerais ça un bug, non?
Merci, Wim
ça n’est pas un bug.. enfin presque.
En fait, on ne peut pas avoir plusieurs instruction SCREENER, même si elles sont contenues dans des blocs conditionnels. Ce sera toujours la dernière instruction SCREENER lu qui affichera le nom de la colonne critère..
Exemple simple:
a = 1
if a then
SCREENER(close as "close")
else
screener(open as "open")
endif
la deuxième instruction ne devrait jamais être évaluée et c’est pourtant bien “open” qui s’affiche dans la colonne critère avec le Close !
Cela fait donc partit des choses à savoir avec ProScreener, même si aucun message d’erreur ne vient prévenir de ce comportement.