Skip to main content
Announcements
Global Transformation Awards! Applications are now open. Submit Entry
cancel
Showing results for 
Search instead for 
Did you mean: 
MrF
Contributor
Contributor

QS-Script : Besoin d'Aide sur écriture condition ELSEIF

Bonjour,

J'ai un soucis de débutant sur QlikSense, mais sur lequel je m'use les yeux.

Pour faire simple en fonction du nombre de ligne dans une table je cherche a effectuer des actions différentes.

J'ai 3 cas possible

-  Nombre de ligne = 0

- Nombre de ligne compris entre 0 et une limite Max paramétrable dans le script

- Nombre de ligne supérieur à la limite Max

 

Mon script :

temp2:
Load
FIELD1,FIELD2
Resident temp;

LET nb_FilOutPut=num(NoOfRows('temp2'));
LET lig_max_fichier=Num('10000');

If $(nb_FilOutPut) > num('0') then
trace 'supérieur à 0 et inferieur à $(lig_max_fichier)';

Elseif $(nb_FilOutPut)> $(lig_max_fichier) then
trace 'supérieur à $(lig_max_fichier)';

ElseIf $(nb_FilOutPut) = num('0') then
trace 'aucune ligne'; 
Exit Script;

End if;

 

Je n'ai aucun soucis lorsque le nombre de ligne est inférieur à la variable $(lig_max_fichier)

Mais lorsque le nombre de ligne est supérieur à cette variable : $(lig_max_fichier) La condition ne se déclenche pas.

 

1 Solution

Accepted Solutions
Taoufiq_Zarra

et avec cette version ?

 

temp2:
Noconcatenate
Load
FIELD1,FIELD2
Resident temp;

LET nb_FilOutPut=num(NoOfRows('temp2'));
LET lig_max_fichier=10000;

If $(nb_FilOutPut) > 0 and $(nb_FilOutPut) <= $(lig_max_fichier) then
trace 'supérieur à 0 et inferieur à $(lig_max_fichier)';

Elseif $(nb_FilOutPut)> $(lig_max_fichier) then
trace 'supérieur à $(lig_max_fichier)';

ElseIf $(nb_FilOutPut) = 0 then
trace 'aucune ligne'; 
Exit Script;

End if;

 

Regards,
Taoufiq ZARRA

"Please LIKE posts and "Accept as Solution" if the provided solution is helpful "

(you can mark up to 3 "solutions") 😉

View solution in original post

3 Replies
Taoufiq_Zarra

et avec cette version ?

 

temp2:
Noconcatenate
Load
FIELD1,FIELD2
Resident temp;

LET nb_FilOutPut=num(NoOfRows('temp2'));
LET lig_max_fichier=10000;

If $(nb_FilOutPut) > 0 and $(nb_FilOutPut) <= $(lig_max_fichier) then
trace 'supérieur à 0 et inferieur à $(lig_max_fichier)';

Elseif $(nb_FilOutPut)> $(lig_max_fichier) then
trace 'supérieur à $(lig_max_fichier)';

ElseIf $(nb_FilOutPut) = 0 then
trace 'aucune ligne'; 
Exit Script;

End if;

 

Regards,
Taoufiq ZARRA

"Please LIKE posts and "Accept as Solution" if the provided solution is helpful "

(you can mark up to 3 "solutions") 😉
lotfiblo
Creator
Creator

Salut @MrF,

C'est normal que t'aies ce comportement. 

Il faut que tu inverse l'ordre de tes conditions. 

Il faut savoir que l'évaluation du IF Else s'arrête des qu'une condition est remplie. 

Dans ton cas, le chiffre 12000 est supérieur à zéro, donc il exécute l'instruction une et passe à la ligne suivante. 

Voilà 

Lotfi 

Use Qalyptus for your Qlik Sense on-premise and Qlik Sense SaaS Reporting
Connect with me on Linkedin
MrF
Contributor
Contributor
Author

Merci !