Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
t_moutault
Contributor III
Contributor III

Pb avec la fonction FileSize

Bonjour,

je souahiate utiliser la fonction FileSize pour lire les fichiers dont la taille est supérieur à 0ko mais cela ne semble pas fonctionner.

Voici un extrait du code :

 

IF FileSize('\\serveur\test_$(Mois_Moins_1)*') > 0 then

      table:

          Load *

          From [\\serveur\test_$(Mois_Moins_1)*](txt, codepage is 1252, embedded labels, delimiter is ',', msq) WHERE dateTimeConnect>0;

ENDIF

Le script semble lire tous les fichiers quelque soit leur taille !

Si quelqu'un peut m'apporter une explication, je suis preneur.

Merci.

1 Solution

Accepted Solutions
t_moutault
Contributor III
Contributor III
Author

  Christian,

     Je veux charger uniquement les fichiers "non vides" d'où le test sur la taille.

     C'est bon j'ai réussi grâce au code ci-dessous.

SUB ListeFichiers (Root)

     FOR Each File in filelist (Root&'\*' )

     IF FileSize('$(File)') > 0 then
          Logs :
          LOAD *
          FROM [$(File)]
          (
txt, codepage is 1252, embedded labels, delimiter is ',', msq)
          WHERE dateTimeConnect >0 and cdrRecordType<>'INTEGER';
     ENDIF


     NEXTFile


ENDSUB


('D:\QLIKVIEW\EXTERNE\TEST')

Je ne comprends toujours pas pourquoi cela ne marchait pas la 1ère fois.

Merci pour ton aide.

View solution in original post

8 Replies
Not applicable

Bonjour Thomas

IF ( filesize('$(PathQVD)\$(DimActiv).qvd') > 0) THEN   // QVD already exists

LOAD * FROM Table;

END IF

Voici ce que j'utilise, cela teste bien la taille du fichier donc forcément son existence.

C'est peut-être le caractère * à la fin de ta chaîne qui pose problème. Insère le dans ta variable

cordialement

Christian

t_moutault
Contributor III
Contributor III
Author

Christian,

même avec le caractère * dans la variable cela ne fonctionne pas.

Merci pour ton aide.

Not applicable

Thomas

c'est peut-être juste le chemin qui n'est pas correct. Ca dépend d'où part le chargement de ton QVW.

Moi j'utilise des positionnements relatifs et des variables à partir du répertoire où sont les qvw.

Essaie de rapatrier tes fichiers au même endroit que les QVW juste pour faire un test

Christian

t_moutault
Contributor III
Contributor III
Author

Christian,

pour moi le chemin est correct puisque les fichiers sont chargés.

Le problème est qu'il ne tient pas compte de mon FileSize.

Not applicable

Thomas,

si les fichiers sont chargés c'est que la condition fileSize() > 0 est remplie, donc que le fichier existe.

Que veux-tu faire exactement ?

Christian

t_moutault
Contributor III
Contributor III
Author

  Christian,

     Je veux charger uniquement les fichiers "non vides" d'où le test sur la taille.

     C'est bon j'ai réussi grâce au code ci-dessous.

SUB ListeFichiers (Root)

     FOR Each File in filelist (Root&'\*' )

     IF FileSize('$(File)') > 0 then
          Logs :
          LOAD *
          FROM [$(File)]
          (
txt, codepage is 1252, embedded labels, delimiter is ',', msq)
          WHERE dateTimeConnect >0 and cdrRecordType<>'INTEGER';
     ENDIF


     NEXTFile


ENDSUB


('D:\QLIKVIEW\EXTERNE\TEST')

Je ne comprends toujours pas pourquoi cela ne marchait pas la 1ère fois.

Merci pour ton aide.

Not applicable

Thomas,

je pense que le test était appliqués à plusieurs fichiers et qu'à partir du moment où il en trouve 1 il considère la condition comme remplie.

le fait d'utiliser le FOR EACH exécute la condition sur chaque fichier

christian

t_moutault
Contributor III
Contributor III
Author

Christian,


Effectivement tu dois avoir raison.

Je pensais que la fonction s'éxécutait automatiquement sur tous les fichiers avec le caractère "*" mais apparemment pas. Au moins, j'aurai appris à utiliser foreach et filesize !!!