Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Problème boucle for

Bonjour.

J'ai crée une liste de jours fériés dynamique en fonction des dates chargées:

Let listeFeries = Null();

Set DateDebut = =Year(Min($(CreationDate_Field)));

Set DateFin = =Year(Max($(CreationDate_Field)));

For Annee=DateDebut To 2017

  listeFeries=listeFeries & ',' & chr(39) & makedate($(Annee), 1, 1) & chr(39);                  // Jour de l'an

  listeFeries=listeFeries & ',' & chr(39) & makedate($(Annee), 5, 1) & chr(39);                  // Fete du travail 1er Mai

  listeFeries=listeFeries & ',' & chr(39) & makedate($(Annee), 5, 😎 & chr(39);                  // Armistice 1945 8 Mai

  listeFeries=listeFeries & ',' & chr(39) & makedate($(Annee), 7, 14) & chr(39);                // Fete National 14 Juillet

  listeFeries=listeFeries & ',' & chr(39) & makedate($(Annee), 8, 15) & chr(39);                // Assomption 15 Aout

  listeFeries=listeFeries & ',' & chr(39) & makedate($(Annee), 11, 1) & chr(39);                // Toussaint 1er Novembre

  listeFeries=listeFeries & ',' & chr(39) & makedate($(Annee), 11, 11) & chr(39);                // Armistice 1918 11 Novembre

  listeFeries=listeFeries & ',' & chr(39) & makedate($(Annee), 12, 25) & chr(39);                // Noel

    

  DatePaques = Date(Round(makedate($(Annee),4,day(Minute($(Annee)/38)/2+55))/7)*7-6);            // Dimanche de Paques

  listeFeries=listeFeries & ',' & chr(39) & DatePaques & chr(39);                              // Dimanche de Paques

  listeFeries=listeFeries & ',' & chr(39) & Date((DatePaques + 1), 'DD/MM/YYYY') & chr(39);    // Lundi de Paques

  listeFeries=listeFeries & ',' & chr(39) & Date((DatePaques + 39), 'DD/MM/YYYY') & chr(39);    // Jeudi de l'Ascension

  listeFeries=listeFeries & ',' & chr(39) & Date((DatePaques + 49), 'DD/MM/YYYY') & chr(39);    // Dimanche de Pentecote

  listeFeries=listeFeries & ',' & chr(39) & Date((DatePaques + 50), 'DD/MM/YYYY') & chr(39);    // Lundi de Pentecote

Next

  Let listeFeries = Mid(vlisteFeries,2);

    let DatePaques = Null();

    Let Annee = Null();

Ce script marche très bien, mais comme vous le voyez, j'ai saisi la date 2017 en dur dans la boucle for. Je ne comprends pas pourquoi ceci: For Annee=DateDebut To DateFin , me renvoie une erreur:

Syntax error

Unexpected token: '1', expected nothing

listeFeries=listeFeries & ',' & chr(39) & makedate(-, >>>>>>1<<<<<<, 1) & chr(39)

Du coup je ne peux pas avoir de borne supérieure dynamique ce qui m’embête.

Cordialement

30 Replies
Not applicable
Author

Bonjour Jean Eude.

As-tu eu le temps de regarder un peu ce script?

Cordialement.

kevinchevrier
Partner - Creator III
Partner - Creator III

Bertrand,

Vu que ton script fonctionnait avec 2017 en dur, as-tu essayé si cela fonctionnait avec Year(Today()) ?

Kevin

Not applicable
Author

Bonjour Kevin.

Oui ça fonctionne. Mais certains rapports s'arrêtent en 2015 donc ça m'embête de créer une liste jusqu'à la date du jour.

Il me manque aussi la borne inférieure.

Cordialement,

kevinchevrier
Partner - Creator III
Partner - Creator III

Et c'est normal qu'il y a 2 fois "=" dans ton set ?

Set DateDebut = =Year(Min($(CreationDate_Field)));

Set DateFin = =Year(Max($(CreationDate_Field)));

As-tu essayé :

Set DateDebut = Year(Min($(CreationDate_Field)));

Set DateFin = Year(Max($(CreationDate_Field)));

For Annee=$(DateDebut) To $(DateFin)


-------------

OU

--------------


Let DateDebut = Year(Min($(CreationDate_Field)));

Let DateFin = Year(Max($(CreationDate_Field)));

For Annee=DateDebut To DateFin


Kevin

Not applicable
Author

Oui j'ai essayé:

Syntax error

Unexpected token: ')', expected: 'TO'

For Annee=Year(Min([Date de création])>>>>>>)<<<<<< To Year(Max([Date de création]))

OU

Syntax error

Unexpected token: ')', expected nothing

Let DateDebut = Year(Min([Date de création])>>>>>>)<<<<<<

kevinchevrier
Partner - Creator III
Partner - Creator III

Ta variable CreationDate_Field n'a t'elle pas une parenthèse en trop à la fin ?


Kevin

Not applicable
Author

Je ne pense pas. Sinon je pense que j'aurai eu une erreur autre part. De plus, dans le log d'erreur on voit bien: DateDebut = Year(Min([Date de création])>>>>>>)<<<<<< Ce qui semble normal bien que ça me ramène une erreur.

kevinchevrier
Partner - Creator III
Partner - Creator III

Peut-être faudrait-il faire une table temporaire où tu calculerais le min de ta date de création (sans oublier le group by).

Exemple :

TABLE_TEMP :

Load rapports,

year(min([Date de création])) as Minimum_Date

Resident ....

Group by rapports;


Puis tu créerais une variable à partir de cela :


Let DateDebut = Num(Minimum_Date);

kevinchevrier
Partner - Creator III
Partner - Creator III

ou peut-être un problème de format :

Let DateDebut = Year(Min(Date([Date de création],'DD/MM/YYYY')));


Kevin