IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

QlikView Discussion :

Récupération en fonction d'une date


Sujet :

QlikView

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Récupération en fonction d'une date
    Bonjour,

    j'ai un "tableau simple" avec des données comme ceci :

    Nom - Note - Date
    Luc Dupont - 12 - 18/07/2012
    Luc Dupont - 16 - 12/02/2012
    Luc Dupont - 11 - 23/12/2011
    Jean Jacques - 8 - 20/06/2012
    Jean Jacques - 14 - 11/03/2012
    etc..

    À côté j'ai un "objet calendrier" variable dont je récupère la valeur dans "madate".

    Mon objectif est de récupérer la dernière trace des personnes présentes dans mon "tableau simple" en fonction de "madate" saisie dans le calendrier.

    Exemple :

    Si je saisie la date 20/06/2012, je devrais voir apparaître dans mon tableau simple,

    Nom - Note - Date
    Luc Dupont - 16 - 12/02/2012
    Jean Jacques - 8 - 20/06/2012

    Quelqu'un peut-il me mettre sur la piste ?

    Merci d'avance, et bonne journée.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Tu crées un graphique avec Nom en dimension.
    Tu crées une expression "Dernière Date" avec la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Max({$<Date={'<=$(maDate)'}>} Date)
    Tu crées une expression "Dernière note" avec la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FieldValue('Note',FieldIndex('Date',[Dernière Date]))
    Attention aux noms des champs : Qlikview est souvent case sensitive.
    Essaie avec $(madate) ou $(MaDate) pour voir ...

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci de ton aide.

    À la 1ère étape (création de "Dernière Date"), le résultat me revoie le Max de ma date comme s'il ne prenait pas en compte ma variable "madate" saisie depuis l'objet calendrier. J'ai par ailleurs essayé avec $(madate) et $(MaDate) mais sans succès.

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Pour la 1ère étape, j'ai résolu le problème en créant comme tu m'as dit une expression "Dernière Date" avec la formule suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Max(If(Date <= MaDate, Date))
    Cependant pour la deuxième formule,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     FieldValue('Note',FieldIndex('Date',[Dernière Date]))
    j'ai un problème que je n'ai pas précisé dans mon exemple au début :

    J'ai parfois plusieurs lignes à la même date qu'il faut sommer (point bonus),

    exemple :

    Nom - Note - Date
    Luc Dupont - 12 - 18/07/2012
    Luc Dupont - 2 - 12/02/2012
    Luc Dupont - 16 - 12/02/2012
    Luc Dupont - 11 - 23/12/2011
    Jean Jacques - 8 - 20/06/2012
    Jean Jacques - 1 - 20/06/2012
    Jean Jacques - 1 - 20/06/2012
    Jean Jacques - 14 - 11/03/2012
    etc..

    Le résultat au 20/06/2012 devrait donner

    Nom - Note - Date
    Luc Dupont - 18 - 12/02/2012
    Jean Jacques - 10 - 20/06/2012

    Du coup le fieldvalue, ne fonctionne plus car j'ai plusieurs index au 20/06/2012.
    Comment faire pour que ma somme ne s'applique uniquement à cette date là ?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    J'ai essayé avec plusieurs formules mais ça ne marche pas.
    Qlikview s'emmele les pinceaux dans les imbrications, apparemment.
    Est-ce qu'on peut regrouper la somme des notes par date dans le script ?
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Load Nom, Date, Sum(Note) as NotesCumulees
    from tabledesNotes group by Nom,Date;
    A ce moment, on n'a plus qu'un enregistrement par nom / date et du coup, on peut utiliser fieldvalue et fieldindex pour afficher le cumul de notes.

  6. #6
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Je pense aussi que c'est la seule façon de résoudre ce problème.

    Dans mon script, quand j'utilise ton code, je reçois un message : "Impossible d'ouvrir le fichier...".

    Débutant dans les scripts j'ai alors essayé avec SQL connect (je ne vois pas bien la différence) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL SELECT Nom, Date, Sum(Note) As Total_Note
    FROM "ECOLE".dbo."T_Résultat" GROUP BY Nom, Date;
    Mes données se chargent cette fois-ci correctement. Quand je retourne dans mon FieldValue, je ne récupère pas ma donnée Total_Note. Cela vient sûrement du fait que je n'arrive pas à trouver l'index en fonction de Nom et Date à la fois.
    Voici mon expression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FieldValue('Total_Note', FieldIndex('Nom' & '-' & 'Date', Nom & '-' & [Dernière Date]) )
    Pour contourner, j'ai essayé de retourner dans mon script pour créer un champ unique égal à la concaténation de Nom et Date comme tel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL SELECT Nom, Date, Sum(Note) As Total_Note, Nom + '-' + Cast(Date As Varchar) As MonID
    FROM "ECOLE".dbo."T_Résultat" GROUP BY Nom, Date;
    Le chargement est ok mais une fois de plus j'ai un soucis sur le FieldValue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FieldValue('Total_Note', FieldIndex('MonID', Nom & '-' & [Dernière Date]) )

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Fieldindex demande le nom d'un champ entre quotes.
    Comme le champ Nom fait partie de ta dimension, tu n'as pas à t'en occuper.
    Essaie avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FieldValue('Total_Note', FieldIndex('Date', [Dernière Date]) )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. url en fonction d'une date
    Par silwebdesign dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 18/09/2006, 20h41
  2. Déterminer le jour en fonction d'une date
    Par Flagny dans le forum Access
    Réponses: 3
    Dernier message: 19/07/2006, 11h36
  3. afficher le jour en fonction d'une date
    Par oceane751 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 05/03/2006, 23h20
  4. [Dates] message en fonction d'une date
    Par chouchouboy dans le forum Langage
    Réponses: 14
    Dernier message: 24/02/2006, 18h31
  5. Réponses: 2
    Dernier message: 03/10/2005, 13h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo