8 Replies Latest reply: Jul 20, 2016 9:22 AM by Fk Fisher RSS

    Sélectionner un champs à partir d'une partie de son nom

    Fk Fisher

      Re bonjour,

       

      Je pense que j'abuse de votre ingéniosité car j'ai une dernière question sur mon chargement sélectif.

       

      Dans mes questions précédentes je cherchais à exclure des champs dès le chargement à partir d'une variable. Grace à votre aide tout marche très très bien :-)

      Ma chance était que mes champs étaient construits comme une date de type [01/06] ou [25/06]......

       

      J'ai maintenant un autre fichier dans lequel je dois effectuer la même exclusion sauf que dans ce fichier les champs sont du type date aussi mais sous la forme [lu 01/06] ou [Ma 25/06].

      J'ai tenté plusieurs versions de modification de script avec la fonction if....then et FieldName mais je ne parviens pas à obtenir le résultat recherché.

      Sauriez vous m'orienter vers une fonction ou une solution ?

      Merci encore !

       

      FICHIER:

      LOAD distinct

           FileBaseName() as Nom_Fichier

      FROM [lib://Desktop/Reprise_Qlik_121_06.xlsx]

      (ooxml, embedded labels, table is Feuil1);

      let MoisFichier =  Left(Subfield(Peek('Nom_Fichier', 0,'FICHIER'),'_',4),2);

      DROP Table FICHIER;

       

      let VAR01='01/' & (MoisFichier) & '/2016';

      let VAR02='31/' & (MoisFichier) & '/2016';

      let Date_jour_deb = date(VAR01,'DD/MM/YYYY');

      let Date_jour_fin = date(VAR02,'DD/MM/YYYY');

      set  Errormode=0;

       

      For Date_jour= '$(Date_jour_deb)' to '$(Date_jour_fin)'

      let Jour= left(date('$(Date_jour)'),5);        

       

      [Feuil1]:      

        LOAD

           [Code ligne],

          [Libellé ligne],

          [Libellé voie],

          [PK début],

          [PK fin],

          [Durée],

          [Début],

          [Fin],

          [Commentaire],

             

          //VERSION INITIALE pour des Champs de données type = [02/06]

          // [$(Jour)] as QteCharge,

          //'$(Jour)' as Jour,

             

          //VERSION MODIFIEE suite à évolution des champs de données type [lu 02/06]

          if Right(FieldName,5)=Jour then

               [$(FieldName)] as QteCharge

               '$(FieldName)' as Jour   

          end if;

       

           [Type ressource],

           [Statut1],

           [Commentaire affectation]

          

        FROM [lib://Desktop/Reprise_Qlik_121_06.xlsx]

        (ooxml, embedded labels, table is Feuil1);

       

      Next

        • Re: Sélectionner un champs à partir d'une partie de son nom
          bruno bertels

          Bonjour

           

          çà pourra peut être t'aider

           

          sous réserve que ton format est toujours sous la forme [xx 00/00]

           

          =mid(Nom_Fichier,3) donne ceci [00/00]

           

          maintenant , je ne sais pas ou imbriquer çà dans ton script désolé

           

          Bruno

          • Re: Sélectionner un champs à partir d'une partie de son nom
            Almamy DIABY

            FICHIER:

            LOAD distinct

                 FileBaseName() as Nom_Fichier

            FROM [lib://Desktop/Reprise_Qlik_121_07.xlsx]

            (ooxml, embedded labels, table is Feuil1);

            let MoisFichier =  Left(Subfield(Peek('Nom_Fichier', 0,'FICHIER'),'_',4),2);

            DROP Table FICHIER;

             

            let VAR01='01/' & (MoisFichier) & '/2016';

            let VAR02='31/' & (MoisFichier) & '/2016';

            let Date_jour_deb = date(VAR01,'DD/MM/YYYY');

            let Date_jour_fin = date(VAR02,'DD/MM/YYYY');

            set  Errormode=0;

             

            For Date_jour= '$(Date_jour_deb)' to '$(Date_jour_fin)'

            let Jour= left(date('$(Date_jour)'),5);       

             

             

            let Nom_jour= left(weekday('$(Date_jour)'),2);

             

             

            let FieldN= '$(Nom_jour)'&' '&'$(Jour)';

             

             

            [Feuil1]:     

              LOAD

                [Code ligne],

                [Libellé ligne],

                [Libellé voie],

                [PK début],

                [PK fin],

                [Durée],

                [Début],

                [Fin],

                [Commentaire],

             

             

                [$(FieldN)] as QteCharge,

                '$(Jour)' as Jour

                  

                 [Type ressource],

                 [Statut1],

                 [Commentaire affectation]

               

              FROM [lib://Desktop/Reprise_Qlik_121_$(MoisFichier).xlsx]

              (ooxml, embedded labels, table is Feuil1);

             

            Next

              • Re: Sélectionner un champs à partir d'une partie de son nom
                Fk Fisher

                Bonjour,

                 

                Merci beaucoup pour votre aide une nouvelle fois. Ceci ne fonctionne pas complètement car seul les champs de type [lu 04/07] ou [ma 05/07] sont récupérés. Or mes champs sont avec une MAJUSCULE sur la 1ère  lettre du jour donc du type [Lu 04/07] ou [Ma 05/07]. Je pensais qu'en plaçant la fonction FORCE en amont ceci permettrait de faire la récupération de tous les champs mais cela ne fonctionne pas mieux. Avez vous une idée ?

                 

                FICHIER:

                LOAD distinct

                     FileBaseName() as Nom_Fichier

                FROM [lib://Desktop/Reprise_Qlik_121_07.xlsx]

                (ooxml, embedded labels, table is Feuil1);

                let MoisFichier =  Left(Subfield(Peek('Nom_Fichier', 0,'FICHIER'),'_',4),2);

                DROP Table FICHIER;

                 

                Force Case Mixed;

                 

                let VAR01='01/' & (MoisFichier) & '/2016';

                let VAR02='31/' & (MoisFichier) & '/2016';

                let Date_jour_deb = date(VAR01,'DD/MM/YYYY');

                let Date_jour_fin = date(VAR02,'DD/MM/YYYY');

                set  Errormode=0;

                 

                 

                 

                For Date_jour= '$(Date_jour_deb)' to '$(Date_jour_fin)'

                let Jour= left(date('$(Date_jour)'),5);

                 

                let Nom_jour= left(weekday('$(Date_jour)'),2);

                let FieldN= '$(Nom_jour)'&' '&'$(Jour)';

                 

                 

                [Feuil1]:    

                  LOAD

                    [Code ligne],

                    [Libellé ligne],

                    [Libellé voie],

                    [PK début],

                    [PK fin],

                    [Durée],

                    [Début],

                    [Fin],

                    [Commentaire],

                    [$(FieldN)] as QteCharge,

                    '$(Jour)' as Jour

                     [Type ressource],

                     [Statut1],

                     [Commentaire affectation]

                  

                  FROM [lib://Desktop/Reprise_Qlik_121_$(MoisFichier).xlsx]

                  (ooxml, embedded labels, table is Feuil1);

                  • Re: Sélectionner un champs à partir d'une partie de son nom
                    Almamy DIABY

                    Utilisez Capitalize

                     

                     

                    let Nom_jour=   Capitalize(left(weekday('$(Date_jour)'),2));


                      • Re: Sélectionner un champs à partir d'une partie de son nom
                        Fk Fisher

                        Merci encore et encore !!!

                         

                        ça fonctionne mais ..... je découvre un autre souci maintenant ! Je vais rechercher de mon côté avant de vous solliciter car cela vient de ma date de fin !!!! En effet, je la bloque au 31 dans ma variable VAR02 alors que pour un  mois comme juin par exemple le mois n'a que 30 jours et je ne sais pas pourquoi mais Qlik récupère le [01/07] avec une date_jour_fin au 01/07/2016 alors que VAR02 est bien enregistrée au 31/06/2016 ???? Pour moi il faut absolument que quelque soit le mois la date_jour_fin soit le dernier jour du mois. Je vais chercher comment faire. Encore une fois merci pour votre aide.

                         

                          • Re: Sélectionner un champs à partir d'une partie de son nom
                            bruno bertels

                            Bonjour

                             

                            En effet j'avais vu dans tes variables que tu prenais date début 01 date de fin 31

                             

                            il faut utiliser monthend() et monthstart()

                             

                            ton champ MoisFichier te sort il un format Date 'MM/YYYY' ou juste un numéro de type 01, 06, 09, etc ?

                             

                            çà donnerait peut être çà : a essayer/adapter pas sur de la syntaxe;

                             

                            si format date :

                             

                            let VAR01='01/' & (MoisFichier) & '/2016';

                            let VAR02='31/' & (MoisFichier) & '/2016';

                             

                            let VAR01=monthstart(MoisFichier);

                            let VAR02=monthend(MoisFichier);

                             

                            si format Num :

                             

                            let VAR01=monthstart(month(MoisFichier)) &'/2016';

                            let VAR02=monthend(month(MoisFichier)) &'/2016';

                              • Re: Sélectionner un champs à partir d'une partie de son nom
                                Fk Fisher

                                Bonjour Merci !!!

                                 

                                J'étais justement en train de lire le fascicule sur les fonctions Monthstart et Monthend. Je viens d'écrire ceci et ça marche très très bien !!!

                                Encore merci

                                 

                                let VAR01='01/'&(MoisFichier) &'/2016';

                                let VAR02=date(VAR011,'DD/MM/YYYY');

                                 

                                let Date_jour_deb = monthstart(VAR02);

                                let Date_jour_fin = monthend(VAR02);

                                set  Errormode=0;

                                 

                                For Date_jour= '$(Date_jour_deb)' to '$(Date_jour_fin)'

                                let Jour= left(date('$(Date_jour)'),5);