Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
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 - Creator III
Partner - Creator III

num()

kevinchevrier
Partner - Creator III
Partner - Creator III

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

Kevin

lcloatre
Partner - Creator III
Partner - Creator III

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 - Creator III
Partner - Creator III

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 - Creator III
Partner - Creator III

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 - Creator III
Partner - Creator III

à 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 - Creator III
Partner - Creator III

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