Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour
j'ai une application dans laquelle je charge des fichiers Excel (XLS) systématiquement identique. Seul le nom du fichier change mensuellement.
Pour limiter les temps de chargement et supprimer les fichiers XLS , je souhaitais créer un qvd et concatener mes fichiers XLS au fur et a mesure.
Afin d'avoir un identifiant unique, j'ai essayé de récupérer le nom du fichier (c'est pas terrible mais je ne trouve pas d'autre solution pour avoir un id unique) puis ensuite je charge dans un QVD sauf si le nom du fichier existe mais en fait ça ne marche pas!!
j'ai essayé de créer un champ date d'extraction (today() as dateextract et de mettre uen clause where not existe today mais sanss suces également
ou alors j'ai un message d'erreur a la fin du script. ou alors si je supprime mes données je n'ai plus les data dans mon qvd .. bref .. désarroi
J'ai regardé dans les forums, et sur les exemple que j'ai trouvé je ne peux pas les mettre en oeuvre car je n'ai pas de "primary key" dans mes fichiers XLS.
Pourriez vous m'aider sur ce point svp? merci
mon script :
Data:
LOAD [Compte d'achat],
[Libellé Compte],
[Compte matière],
[Libellé Cpt matière],
[QTE STK INI],
[VAL STK INI],
[QTE ENTREES],
[VAL ENTREES],
[QTE SORTIE],
[VAL SORTIES],
[QTE en stock],
[Valeur stock],
filename() as nomfichier
FROM
(biff, embedded labels, header is 1 lines, table is Rapport1$);
qvd:
Concatenate LOAD
[Compte d'achat],
[Libellé Compte],
[Compte matière],
[Libellé Cpt matière],
[QTE STK INI],
[VAL STK INI],
[QTE ENTREES],
[VAL ENTREES],
[QTE SORTIE],
[VAL SORTIES],
[QTE en stock],
[Valeur stock],
nomfichier
FROM
Store Data into
(qvd);
Bonjour,
J'aurai tendance à enlever "qvd:" avant ton concatenate.
Kevin
Bonjour
Merci de ta réponse.
ça marche "a moitié" dans le sens ou lorsque je supprime mes fichiers XLS, je n'ai plus de données. par contre je n'ai plsu de message d'erreur.
je pensais que c'était le QVD qui allait servir de base de données ? suis je obligé de conserver mes extractions excel?
Je ne comprends pas. Actuellement tu store "Data". Donc pourquoi ne pas concaténer tout dans cette même table si c'est ce que tu souhaites ?
Kevin
heu.... je ne comprends pas trop.
en fait ce que je souhaiterai c'est :
- charger mes fichier(s) XLS dans un QVD (puis les supprimer / déplacer) (il s'agit des fichiers pour créer un historique des 2 dernières années)
- travailler depuis le QVD dans mon application
- incrémenter au fur et a mesure des périodes mes autres fichiers xls dans mon QVD en fonction d'une clause (soit le nom du fichier, soit un champ de date soit une autre solution.
- puis supprimer / déplacer les fichiers excel dont je n'aurais plus besoin
est ce plus clair?
Bonjour,
De ce que j'ai compris de ton besoin, je pense qu'il faut que tu fasses l'inverse dans ton script :
1 : Charger le QVD créé à partir des fichier excel
2 : charger les fichiers excel existant dans ton dossier avec un where not exists(nomfichier,filename())
3 : faire un store de ton QVD qui ecrasera le précédent
Maybe
Change the script with your fields, files, xls, path, etc.........
DIRECTORY;
//
// read all excel, add a filename_xls field
//
Data:
LOAD
cod,
desc,
FileName() as filename,
FileName() as filename_xls
FROM
[.\*.xlsx]
(ooxml, embedded labels, table is Foglio1);
//
// if qvd exists read the record with filename <> filename_xls
//
IF QvdCreateTime('Data.qvd') THEN
TRACE 'Read QVD';
Concatenate (Data)
load * from Data.qvd (qvd)
where
not exists (filename_xls, filename)
;
ELSE
TRACE 'Do not Read QVD';
ENDIF
//
// overwrite qvd without filename_xls field
//
DROP field filename_xls;
Store Data into Data.qvd (qvd);
Drop table Data;
HI Massimo,
apologize for my english .. not as fluent as your's..
Il take your script , it seem's working with no errors but after loading i've no data ?
I understand the operation but i don't know all the code.. can you have a look please?
Data:
LOAD
x,
y,
[VAL SORTIES],
[QTE en stock],
[Valeur stock],
FileName() as filename,
FileName() as filename_xls,
Date(Date#(MOIS_en_date),'MMMM-YYYY') as _MoisYearStkIni,
timestamp(now()) as _DateImport
FROM
(biff, embedded labels, header is 1 lines, table is Rapport1$);
//if qvd exists read the record with filename <> filename_xls
IF QvdCreateTime('Data.qvd') THEN
TRACE 'Read QVD';
Concatenate (Data)
load * from Data.qvd (qvd)
where
not exists (filename_xls, filename) ;
ELSE
TRACE 'Do not Read QVD';
ENDIF
//
// overwrite qvd without filename_xls field
//
DROP field filename_xls;
Store Data into Data.qvd (qvd);
Drop table Data;
Bonsoir
Effectivement j'ai essayé mais je dois avoir un pb avec ma clause where not exist car mes données ne se charge pas.
sans doute a cause du nom de fichier
j'ai créé un champ 'MoisYear' pour pouvoir faire la même chose ( ne pas charger dans mon qvd les données ou 'MoisYear' seraient pésent quelque soit le nom du fichier mais je n'y arrive pas ..
une petite idée?
Add a comment to the last line
// Drop table Data;
Sorry I can't write in french
Il y a longtemps que j'ai étudié le Français a l'école, maintenant je ne peux que lire