Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
num()
If(len(Données)>3, Données, num(Données)) as DONNEES_TRANSFORMEES
Kevin
Je suis surpris que ta fonction text ne fonctionne pas.
Attention, tu as 0402 et 402.
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
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
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.
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;
à 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
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