PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Comment utiliser HDBOuvre dans une boucle?
Comment utiliser HDBOuvre dans une boucle?
Iniciado por Thierry, set., 14 2005 9:06 PM - 5 respostas
Publicado em setembro, 14 2005 - 9:06 PM
Bonjour,
Je transfère 20 fichiers de ventes (F_Vente01 à F_Vente20) au format .DBF vers un unique fichier HF

schématiquement, le code est:
Externe VT // VT est l'abréviation du fichier F_Ventexx.dbf
Pour i = 1 à 20
F_VTE = "F_Vente" + NumeriqueVersCaractere(i,"02d")
HDBOuvre(F_VTE,"VT","chemin" + F_VTE + ".DBF")
transfert sélectif des données DBF vers HF
Fin

Question: Peut-on utiliser l'abréviation "VT" de facon dynamique. En effet, lors du 1er passage, la récupération s'effectue bien, mais dès le second passage, la valeur de VT reste inchangée (elle conserve sa valeur du 1er passage).

Il est bien écrit dans la doc. de la fonction HDBOuvre que plusieurs fichiers ne peuvent avoir la même abrévation...

Quelqu'un a-t-il une solution ou une astuce?

Merci
Publicado em setembro, 15 2005 - 10:54 AM
Essaie hChangeNom avec ton incrémentation dans le nouveau nom logique, puis fais un HDBouvre avec le nom logique.

Est-ce que tu vois ce que je veux dire?

Cordialement

T. FRANCOIS
Publicado em setembro, 15 2005 - 5:28 PM
Bonjour Patrick
j'ai essayé tes solutions, mais sans grand succès:
- Hferme(F_VTE) ne réinitialise pas l'abréviation
- L'abréviation est en "dur": pas moyen de l'utiliser de facon dynamique (en la remplaçant par NumériqueVersChaine(i,"02d") puis en utilisant l'indirection)

Je cherche encore..

Quoi qu'il en soit, un grand merci pour ta réponse qui m'a tout de même donné 1 idée:

VT est 1 chaine
Selon i
cas i = "01" alors
HDBouvre(F_VTES,A1,AdresseNomFichier)
VT = A1
cas i = "02" alors
HDBouvre(F_VTES,A2,AdresseNomFichier)
VT = A2
...

Je devrais trouver quelque chose de plus "propre", mais en tout cas, ça semble marcher
Publicado em setembro, 15 2005 - 5:56 PM
Bonjour TF

Je ne suis pas sur d'avoir bien compris ta suggestion:
sauf erreur, tu me conseilles:
hdbouvre(F_Vente01,"VT",CheminNomFichier)

deuxième passage:
HChangeNom(F_Vente01,F_Vente02)
F_Vente02 devient F_vente01 et cette fois "VT" fera référence au bon fichier, et ainsi de suite...

Je crois bien que c'est génial!

je m'en vais l'essayer de suite (pouvais pas le faire avant, je viens de comprendre à l'instant)

Mille merci,
Thierry
Publicado em setembro, 15 2005 - 6:23 PM
Cette fois j'ai testé, et ca marche!

avec 2 lignes rajoutées et un nom logique modifié!

encore merci
Publicado em setembro, 15 2005 - 8:02 PM
Bonjour,

Un hferme(F_VTE) avant de le reouvrir avec un autre nom
sinon pourquoi pas une abréviation du genre NumeriqueVersCaractere(i,"02d")
tout simplement

Patrick
"Thierry" <sa.smes@worldonline.fr> a écrit dans le message de news:
432843ee$1@news.pcsoft.fr...
Bonjour,
Je transfère 20 fichiers de ventes (F_Vente01 à F_Vente20) au format .DBF
vers un unique fichier HF

schématiquement, le code est:
Externe VT // VT est l'abréviation du fichier F_Ventexx.dbf
Pour i = 1 à 20
F_VTE = "F_Vente" + NumeriqueVersCaractere(i,"02d")
HDBOuvre(F_VTE,"VT","chemin" + F_VTE + ".DBF")
transfert sélectif des données DBF vers HF
Fin

Question: Peut-on utiliser l'abréviation "VT" de facon dynamique. En
effet, lors du 1er passage, la récupération s'effectue bien, mais dès le
second passage, la valeur de VT reste inchangée (elle conserve sa valeur
du 1er passage).

Il est bien écrit dans la doc. de la fonction HDBOuvre que plusieurs
fichiers ne peuvent avoir la même abrévation...

Quelqu'un a-t-il une solution ou une astuce?

Merci