Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
dmartin90
Partner - Contributor
Partner - Contributor

utilisation variable dans expression

Bonjour,

Je galère depuis un moment sur ce point.
Pour essayer de faire simple j'ai une variable qui contient mes ventes prévisionnelles de la façon suivante "ventes _moyennes_jour x nombre de jours jusqueà la prochaine date de livraison":

LET v_Ventes_Previsionnelles = 'num(sum(SORTIESMOYENNESJOURTOTAL)*NetWorkDays(today(),date(DATEPROCHAINELIVRAISON,'&chr(39)&DateFormat&chr(39)&')))';

Je souhaite utiliser cette variable dans une autre variable pour compter le nombre d'articles en ruptures prévisionnelles, c'est à dire ceux dont le stock actuel est inférieur à ces ventes prévisionnelles de la façon suivante :

LET v_Compt_Art_Rupt_Prev = 'count({<[QTEPHYSSTOCKDEPOT]={"<$(=v_Ventes_Previsionnelles)"}>} DISTINCT ARTICLECODE)';

Sauf que ça ne fonctionne pas ... problème de syntaxe ou incompatibilité ?

1 Solution

Accepted Solutions
sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour Daniel,

Le problème c'est que le calcul de tes Ventes_Professionnelles s'applique à tout tes articles et nom pas article par article.

Pour le faire article par article, et pouvoir les compter par la suite, il faudrait plutôt essayer quelques chose comme ça:

LET v_Compt_Art_Rupt_Prev = 'Sum(Aggr(If([QTEPHYSSTOCKDEPOT] < $(v_Ventes_Previsionnelles), 1, Null()), ARTICLECODE))';

Je ne l'ai pas testé, mais je pense que c'est la piste à suivre

View solution in original post

4 Replies
sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour Daniel,

Le problème c'est que le calcul de tes Ventes_Professionnelles s'applique à tout tes articles et nom pas article par article.

Pour le faire article par article, et pouvoir les compter par la suite, il faudrait plutôt essayer quelques chose comme ça:

LET v_Compt_Art_Rupt_Prev = 'Sum(Aggr(If([QTEPHYSSTOCKDEPOT] < $(v_Ventes_Previsionnelles), 1, Null()), ARTICLECODE))';

Je ne l'ai pas testé, mais je pense que c'est la piste à suivre

dmartin90
Partner - Contributor
Partner - Contributor
Author

Merci, ça m'a effectivement parfaitement aiguillé et j'ai trouvé comment faire fonctionner !

Autre interrogation :

J'ai la variable suivante qui permet de:
LET v_Stock = 'max(aggr(sum({<[Date]={"$' & '(=num(max(Date)))"}>}QTEPHYSSTOCKDEPOT),ARTICLECODE,Site))';

Lorsque j'inclus cette variable dans une autre je perds une partie de l'expression.

Exemple :

LET v_Valeur_Stock_PV = '$(v_Stock)*$(v_PVTTC)';

Si j'affiche le contenu de v_Valeur_Stock afin d'avoir un visu de l'expression j'obtiens ça :

max(aggr(sum({<[Date]={""}>}QTEPHYSSTOCKDEPOT),ARTICLECODE,Site))*max(aggr(sum({<[Date]={""}>}PVTTC),ARTICLECODE,Site))

En gros, Qlikview perd la fonction permettant de récupérer la date max.

Erreur de syntaxe ?

sfatoux72
Partner - Specialist
Partner - Specialist

Je pense que le problème vient du fait que tu utilises LET, et du coup la partie $(=num(max(Date))) de l'expression est évaluée dans le script et retourne "".

Essaye d'utiliser SET :

SET v_Stock = 'max(aggr(sum({<[Date]={"$' & '(=num(max(Date)))"}>}QTEPHYSSTOCKDEPOT),ARTICLECODE,Site))';

dmartin90
Partner - Contributor
Partner - Contributor
Author

Merci je vais essayer cela !