Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

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

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

1 Solution

Accepted Solutions
almamy_diaby
Creator
Creator

Utilisez Capitalize

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


View solution in original post

8 Replies
brunobertels
Master
Master

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

Not applicable
Author

Bonjour,

Merci,je ne connaissais pas cette fonction. Cependant mon problème reste le même car je crains que c'est mon IF..then qui n'est pas bon!! il faut sans doute autre chose à la place mais je n'arrive pas à trouver même sur la communauté et pas plus sur l'aide en en ligne. J'espère qu'un expert va pouvoir m'aider.

Encore merci

almamy_diaby
Creator
Creator

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

Not applicable
Author

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);

almamy_diaby
Creator
Creator

Utilisez Capitalize

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


Not applicable
Author

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.

brunobertels
Master
Master

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';

Not applicable
Author

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);