2 Replies Latest reply: May 28, 2013 6:31 AM by Almamy DIABY RSS

    Créér un calendrier

      Bonjour,

       

      Je débute sur Qlikview

       

      Voici ma structure. J'ai :

      1 table FACTURE avec toutes les factures (CLIENT, DATE, QTE, ARTICLE, MONTANT FACTURE,.....)

      1 table AVOIR avec tous les avoirs ((CLIENT, DATE, QTE, ARTICLE, MONTANT AVOIR,.....)

      1 table CLIENT avec tous les clients (CLIENT, ADRESSE, N° TEL, VENDEUR,.......)

       

      Donc j'ai :

      CLIENT en liaison avec FACTURE et en liaison avec AVOIR avec comme clé le champ CLIENT

       

      Le but :

      Avoir un tableau regroupement la somme des MONTANT FACTURE + MONTANT AVOIR par client, vendeur, article et par année trimestre mois

       

      Problème :

      Dans mon tableau, j'utilise le champ DATE de la table FACTURE. Du coup, les données de la table AVOIR ne sont pas prises en compte.

       

       

      Avez vous une façon de faire? Faut'il passer par une gestion d'un calendrier et lier les tables FACTURE et AVOIR avec ce calendrier? Si oui, comment créer ce calendrier?

       

      Merci d'avance

      Mathieu

        • Re: Créér un calendrier

          j'ai trouvé ça hier et ça marché   j espère que ça t aidera c simple et efficace : il se base sur les délclencheur :

          Pour sélectionner une période entre deux dates quelconques, sans analysis set ni macro :
          1. Créer deux tables DatesDebut et DatesFin, contenant les dates.
          2. Ajouter un trigger sur la sélection de DatesDebut et DatesFin sélectionnant la plage correspondante dans la dimension temps principale (détail ci-dessous).
          3. Ajouter deux sliders de style « Calendar » pour DatesDebut et DatesFin.
          4. C'est prêt !

          Je reprends en détail :

          1.

          DatesDebut:
          LOAD date as date_debut resident calendar;

          DatesFin:
          LOAD date as date_fin resident calendar;

          Les deux tables ne sont pas liées à d'autres.

          2.

          Ouvrir les propriétés du document grâce au menu « Settings > Document Properties... » et aller dans l'onglet des déclencheurs (« Triggers »).
          Dans la liste « Field Event Triggers » (événements sur champs), sélectionner date_debut et ajouter une action sur le « OnSelect », de type « Select in Field ». Dans Field, mettez "date" (le nom du champ date dans la dimension temps) et dans Search String, l'expression suivante :

          = if(not isnull(getfieldselections(date_debut)),
          if(min(date_debut) > max(date_fin),
          '=' & min(date_debut),
          '>=' & min(date_debut) & '<=' & max(date_fin)))

          Faites de même avec le champ date_fin, avec l'expression :

          = if(not isnull(getfieldselections(date_fin)),
          if(min(date_debut) > max(date_fin),
          '=' & min(date_debut),
          '>=' & min(date_debut) & '<=' & max(date_fin)))

          Si les deux bornes sont sélectionnées et dans le bon ordre, la sélection comprendra toutes les dates entre ces deux bornes. Si une seule borne est sélectionnée, on trouvera seulement les dates situées au-dessus ou au-dessous de la borne.

          3.

          Avec le style « Calendar », l'utilisateur saisit une date au format jj/mm/aaaa à l'aide d'un calendrier. C'est le plus commode car le style « Slider » ne donne pas de bons résultats avec un champ date (illisible à cause de la graduation).

          Une macro fait l'affaire également mais les triggers sont infiniment plus rapides.

          • Re: Créér un calendrier
            Almamy DIABY

            Bonjour,

            Regarde le code suivant,ça devrait t'aider.

             

            FACTURE :

            load

            date(trim(DATE),'DD/MM/YYYY') as DATE,

            champ2,

            ....

            ChampN

            From FACTURE ;

             

            AVOIR :

            load

            date(trim(DATE),'DD/MM/YYYY') as DATE,

            champ2,

            ....

            ChampN

            From AVOIR ;

             

             

            //  ***************  CALENDRIER*******************************************

            DATES_TEMP:

            LOAD distinct date(trim(DATE),'DD/MM/YYYY') as DATE

            RESIDENT FACTURE WHERE (len(DATE)>0);

             

             

            LOAD distinct date(trim(DATE),'DD/MM/YYYY') as DATE

            RESIDENT AVOIR WHERE (len(DATE)>0);

             

             

             

            NoConcatenate

             

             

            DATES:

             

             

            Load distinct date(DATE) as QUERY_DATE

            RESIDENT DATES_TEMP

            ORDER BY KEY_DATE ASC;

             

             

            drop table DATES_TEMP;

             

             

            LET varMinDate = round(Num(Peek('QUERY_DATE', 0,'DATES')));

            LET varMaxDate = round(Num(Peek('QUERY_DATE', -1,'DATES')));

             

             

            TEMPCALENDRIER:

            LOAD $(varMinDate) + rowno() - 1 AS Num,

                       date($(varMinDate) + rowno() - 1) AS TempDate

            AUTOGENERATE $(varMaxDate) - $(varMinDate) + 1;

             

             

             

            CALENDRIER:

            LOAD distinct trim(date(TempDate)) AS DATE,

            Week(TempDate) AS SEMAINE,

            Year(TempDate) AS ANNEE,

            Month(TempDate) AS MOIS,

            Day(TempDate) AS JOUR,

            Weekday(TempDate) AS JOUR_SEMAINE,

            'T' & ceil(month(TempDate) / 3) AS TRIMESTRE,

            MonthName(TempDate) AS MOIS_ANNEE,

            Week(TempDate)&'-'&Year(TempDate) AS SEMAINE_ANNEE

            RESIDENT TEMPCALENDRIER ORDER BY TempDate ASC;

             

             

            La date du calendrier étant la table de référence et celle que doit prendre au niveau de ton axe d'analyse temporel.

            Lorsqu'on fait une sélection au niveau de l'axe d'analyse, alors tout ce qui est en rapport avec cette selection réagit et se met à jour pour cette sélection ( Technologie associative ) . De ce fait, quand tu sélectionne une date au niveau du calendrier , c'est comme si tu avais sélectionné la même date dans tes différentes tables chargées.

             

             

             

             

            Tu peux aller sur le lien http://community.qlik.com/thread/80141?tstart=0

            pour avoir d'amples informations