Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Affichage contrats en cours à la date du jour

Bonjour,

J'ai une requête sur QlikView me permettant de ressortir la liste des contrats de travail pour les différents agents.

J'ai les champs suivants :

     - Service

     - Nom

     - Prénom

     - CONTRATDEF (date du début contrat)

     - CONTRDFIN (date de fin du contrat)

  

Pour le moment je ressors tous les contrats que les agents on eu pendant leur carrière, je souhaite obtenir par un filtre ou une formule la liste des contrats en cours à la date du jour de lancement de la requête.

Merci par avance pour votre aide

Romaric

6 Replies
Anonymous
Not applicable
Author

bonjour

peut être comme çà :

let vToday=Num(Today());

Contrat:

LOAD IdContrat,

     Magasin,

     date(Début_Contrat) as [Date début Contrat],

     date(Fin_Contrat)   as [Date fin Contrat],

     if (date(Début_Contrat) < date($(vToday)) and  date(Fin_Contrat) > date($(vToday)), 'inactif', 'actif')

                         as statut_contrat

FROM ....

Anonymous
Not applicable
Author

Bonjour,

Il te faut utiliser les "analyses d'ensemble". Pour ton cas et à partir d'un graphe :

L'idée est de créer une variable. Exemple var_date

Place un objet de tye curseur/calendrier pour sélectionner la date de rapport.

Note que tu peux utiliser directement une variable que tu initialisera avec l'objet

Dans un graphe, en dimension tu mest par exemple le service. Les autres champs peuvent être placé en dimension

ou en Expression avec la même formule. Mais il faut au minimum une Expresion comme suit :

Attention à la syntaxe.

NB: La date de fin de contrat ne doit pas être à NULL sinon il faudra la vérifier dans la formule.

Maxstring est une méthode pour les type CHAR ou STRING

maxstring( {$<

CONTRATDEF= {">=$(=var_date)"} * CONTRATDEF= {">=$(=var_date)"},

CONTRDFIN = {"<$=(=var_date)"}
>}

Nom
)

Didier

Anonymous
Not applicable
Author


Je me suis trompé dans les signes :

maxstring( {$<

CONTRATDEF= {">=$(=var_date)"} * CONTRATDEF= {"<=$(=var_date)"},

CONTRDFIN = {"<=$(=var_date)"}
>}

Nom
)

flochi75
Creator III
Creator III

Bonjour à tous,

pour moi, le plus simple est de créer un calendrier en script et d'y ajouter un intervalmatch, comme suis :

//calendrier

load IterNo() + num('01/01/2011')-1 as CAL_DATE ,

  month(IterNo() + num('01/01/2011')-1) as CAL_MOIS,

  Year(IterNo() + num('01/01/2011')-1)as CAL_ANNEE,

  day(IterNo() + num('01/01/2011')-1) as CAL_JOURS

  AutoGenerate (1)

while 

  IterNo() + num('01/01/2011')-1 <= num(Today());

//intervalmatch

NoConcatenate LOAD * Resident Ma_TABLERSE;

IntervalMatch (CAL_DATE) load DATEDEBUTCONTRAT, DATEFINCONTRAT Resident CHAMBRE ;

du coup, en utilisant un calendrier dans l'appli, en choisissant une date, on peut faire remonter tous les contrats qui étaient "en cours" à cette date...

flochi75
Creator III
Creator III

oups, je me suis trompé en nommant les tables :

//intervalmatch

NoConcatenate LOAD * Resident calendrier;

IntervalMatch (CAL_DATE) load CONTRATDEF , CONTRDFIN Resident Ma_TABLE ;

flochi75
Creator III
Creator III

alors, ça marche ?