Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
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;
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;
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
Merci !