Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Q&A with Qlik - Qlik Cloud Migration: Questions about migrating to Qlik Cloud? Catch the latest replay!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Problème fonction NetWorkDays

Bonjour.

Dans mon script, j'utilise la fonction NetWorkDays afin de calculer un délai de jours ouvrés.

Étrangement, quand la date de début est égale à la date de fin, le délai calculé et parfois de 0 et parfois de 1. J'aimerai qu'il soit à 0 dans ces cas là. Avez-cous une idée de la raison de cette erreur ?

Voici mon script:

LOAD

  *,

  Date(Date#(DATECREATION, 'YYYYMMDD'), 'DD/MM/YYYY') as [Date de création],

  Date(Date#(DATETRT, 'YYYYMMDD'), 'DD/MM/YYYY') as [Date de traitement], // Date à laquelle le traitement a eu lieu.

  NetWorkDays(DATECREATION, DATETRT) as [Délai ouvré]; // Délai en jours ouvrés

Cordialement.

23 Replies
Not applicable
Author

Pas mieux.

kevinchevrier
Partner - Creator III
Partner - Creator III

Bertrand,

La fonction sert à calculer le nombre de jour ouvrés. Le 28/02/2017 et le 01/03/2017 sont 2 jours ouvrés. Il est donc normal que Qlikview te renvoie 2. Idem entre le 01/03/2017 et le 02/03/2017.

Si pour ces intervalles tu veux obtenir 1 alors il te suffit de faire ta fonction NetWorkDays(...)-1.

Ce qui est plus étonnant, c'est que pour certaines dates qui sont égales, Qlikview te renvoie 0 alors qu'il renvoie bien 1 pour les autres... Ceci dit, cela ne devrait pas te déranger si tu fait en sorte de ne pas avoir de valeur négative...

Kevin

kevinchevrier
Partner - Creator III
Partner - Creator III

Bertrand,

J'ai regardé de plus près tes données en Avril.

J'ai l'impression qu'il considère que les jours non ouvrés sont le Dimanche et Lundi.

Cela signifie qu'il y a donc un problème dans tes paramètres.

Je pense notamment qu'il faut que tu passes ton FirstWeekDay à 1 au lieu de 0.

SET FirstWeekDay=1;

Ensuite, si quand c'est le même jour, tu veux 0 alors fait bien -1 après ton NetWorkDays :

=NetWorkDays(DATECREATION, DATETRT)-1


Kevin

Not applicable
Author

Merci beaucoup Kevin.

Ceci marche parfaitement avec SET FirstWeekDay=1;

   if (NetWorkDays(Date(Date#(DATECREATION, 'YYYYMMDD'), 'DD/MM/YYYY'), Date(Date#(DATETRT, 'YYYYMMDD'), 'DD/MM/YYYY'))-1<0,
   0,
   NetWorkDays(Date(Date#(DATECREATION, 'YYYYMMDD'), 'DD/MM/YYYY'), Date(Date#(DATETRT, 'YYYYMMDD'), 'DD/MM/YYYY'))-1)as [Délai ouvré];