Qlik Community

Groupe des Utilisateurs Francophones

Announcements
Submit your remarkable customer story for the Global Transformation Awards at QlikWorld Denver 2022. SUBMIT A STORY
cancel
Showing results for 
Search instead for 
Did you mean: 
bckaps69
Contributor
Contributor

Problème d'interprétation des données

Bonjour,

J'importe d'un fichier QVD une liste de machine mais Qlikview interprète mal et rajoute un 0 à gauche

Données (code machine)     Interprétation QV

0100                                   0100

0200                                   0200

0300                                   0300

0402                                   0402

402                                     0402 (il rajoute un 0)

0500                                   0500

J'ai essayé une fonction Text() sans succès.

Avez-vous une solution à mon problème ?

Merci d'avance

11 Replies
kevinchevrier
Partner
Partner

num()

kevinchevrier
Partner
Partner

If(len(Données)>3, Données, num(Données)) as DONNEES_TRANSFORMEES

Kevin

lcloatre
Partner
Partner

Je suis surpris que ta fonction text ne fonctionne pas.

Attention, tu as 0402 et 402.

bckaps69
Contributor
Contributor
Author

La fonction LEN renvoie 4 pour les deux !!!

La fonction TEXT renvoie 0402 pour les deux.

Je pense que le problème vient de la constitution du QVD

kevinchevrier
Partner
Partner

Pourquoi ne pas faire tes formules dans le script qui permet de créer le QVD ? C'est à dire en amont.

En effet, si l'erreur est déjà présente dans le QVD, c'est les formules avant qu'il faut modifier.

Kevin

lcloatre
Partner
Partner

Julien,

Si tu ne l'as pas déjà, je t'encourage à utiliser Q-Eye, un outil très pratique pour consulter des QVD/QVX pour visualiser tes QVD.

bckaps69
Contributor
Contributor
Author

Je viens de regarder avec l'outil Q-Eye, le problème est bien au niveau du QVD.

Mais je ne vois pas ce qui cloche dans mon code :

SET vRefTablesChamps = $(vParamFolder)REF_EXTRACT_CO.xlsx;

SET vCodeSite = CO;

Tables_A_Extraire:

LOAD TABLE,

     EXPORT,

     CONDITION

FROM

[$(vRefTablesChamps)]

(ooxml, embedded labels, table is TABLES);

$(Include=$(vParamFolder)connect_comera.txt);

FOR i = 0 to (NoOfRows('Tables_A_Extraire')-1)

    LET vTable = peek('TABLE', $(i), 'Tables_A_Extraire');

    LET vExport = peek('EXPORT', $(i), 'Tables_A_Extraire');

    LET vCondition = peek('CONDITION', $(i), 'Tables_A_Extraire');   

    IF ('$(vExport)'='1' or '$(vExport)'='O' or '$(vExport)'='o') THEN

    //Si la table est à exporter

            TRACE Export de la table $(vTable);

            TRACE Export complet de la table $(vTable);

                //Préparation de la clause SELECT

            Champs_A_Extraire:

            LOAD distinct concat(CHAMP, ', ') as CHAMPS

            FROM

            [$(vRefTablesChamps)]

            (ooxml, embedded labels, table is CHAMPS)

            WHERE TABLE = '$(vTable)';

           

            LET vClauseSelect = peek('CHAMPS', -1, 'Champs_A_Extraire');

            IF ('$(vClauseSelect)'='') THEN

                SET vClauseSelect=*;

            ENDIF;

            DROP TABLE Champs_A_Extraire;

       

            //Préparation de la clause WHERE

           

            IF (not (isnull('$(vCondition)') or trim('$(vCondition)')='')) THEN

            //Si la condition est renseignée

                LET vClauseFrom = 'WHERE '&'$(vCondition)';

            ELSE

                LET vClauseFrom = '';

            ENDIF;

           

           

            $(vTable):

            SQL SELECT $(vClauseSelect)

            FROM $(vTable)

            $(vClauseFrom);

           

            STORE $(vTable) into [$(vQVDFolder)$(vTable)_$(vCodeSite).QVD] (qvd);

           

            DROP TABLE $(vTable);

                   

    ENDIF;

NEXT i;

DROP TABLE Tables_A_Extraire;

kevinchevrier
Partner
Partner

à quoi correspond données machine dans ton script ?

Si tu mets cela : If(len(Données)>3, Données, num(Données)) as DONNEES_TRANSFORMEES


en remplacant Données par le nom du champ où tu as ce que tu appelles les "Données(machine)", alors ça devrait fonctionner.


Kevin

kevinchevrier
Partner
Partner

Si je comprends bien ton script ça doit être à cet endroit :

$(vTable):

            SQL SELECT $(vClauseSelect),

               If(len(Données)>3, Données, num(Données)) as DONNEES_TRANSFORMEES

            FROM $(vTable)

            $(vClauseFrom);

Si c'est pas bon, essaie avec lenght :

If(lenght(Données)>3, Données, num(Données)) as DONNEES_TRANSFORMEES


Ensuite tu regardes dans ton QVD à quoi ressemble DONNEES_TRANSFORMEES