PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Modifier la structure d'un fichier .FIC
Modifier la structure d'un fichier .FIC
Iniciado por michel.driant, 04,mar. 2019 12:07 - 10 respuestas
Miembro registrado
299 mensajes
Publicado el 04,marzo 2019 - 12:07
Bonjour,

Je cherche à modifier la structure d'un .FIC pour y ajouter un champ et le mettre en adéquation avec l'analyse.
Comment faut-il procéder ?

Merci d'avance
Miembro registrado
299 mensajes
Publicado el 04,marzo 2019 - 17:09
Vraiment personne n'a jamais eu à modifier un fichier .FIC a posteriori ?
Miembro registrado
1.330 mensajes
Publicado el 04,marzo 2019 - 17:16
Salut Michel,

Pour modifier, il faut passer par l'analyse si tu ne veux pas de problèmes, il n'y a pas d'autres solutions.

Cordialement
Daryl

--
http://www.concept4u2.com
Miembro registrado
299 mensajes
Publicado el 04,marzo 2019 - 18:19
Merci de m'avoir répondu.
Donc cela va impliquer de rapatrier les fichiers du client chez moi pour les modifier via WD.

Ou regénerer un kit de déploiement juste pour ajouter une zone dans un fichier.
Publicado el 05,marzo 2019 - 08:25
Heureusement que l'on ne doit pas rapatrier les fichiers clients à chaque modification de structure ! :)
WDModfic.exe : https://doc.pcsoft.fr/?3044270
Miembro registrado
215 mensajes
Publicado el 05,marzo 2019 - 08:53
Bonjour,
Dans le code de l'init du projet, tu peux adatper le code ci-dessous

ListeDesErreurs est une chaîne
HVérifieStructure("*", hIdentique)
POUR TOUTE CHAÎNE sNomUnFichier DE HListeFichier() SEPAREE PAR RC
QUAND EXCEPTION DANS
HCréationSiInexistant(sNomUnFichier)
FAIRE
SI HErreur(hErrEnCours) = 70016 ALORS
ToastAffiche("Mise à jour de la structure du fichier <" +sNomUnFichier + "> en cours...", toastCourt, cvMilieu, chCentre)
SI PAS HModifieStructure(sNomUnFichier) ALORS
ListeDesErreurs += [RC] +"- Erreur de modification de structure pour le fichier <" +sNomUnFichier + "> : " + HErreurInfo()
FIN
SINON
ListeDesErreurs += [RC] + "- Erreur d'accès au fichier <" +sNomUnFichier + "> : " + HErreurInfo()
FIN
FIN
FIN
HVérifieStructure("*", hCompatible)
Publicado el 05,marzo 2019 - 09:19
Le 04/03/2019 à 11:07, MICHEL a écrit :
Bonjour,

Je cherche à modifier la structure d'un .FIC pour y ajouter un champ et
le mettre en adéquation avec l'analyse.
Comment faut-il procéder ?

Merci d'avance


VOici du code que je mets pour vérifier et modifier la structure de mes
fichires
PROCÉDURE HOuvreEtModifieSiNecessaire(sNomFichier, sMotDePasse = "",
nModeAcces = -1, sRepertoireSauvegarde est une chaîne = "", sChampJauge
est une chaîne = "")

// Variables
bResultat est un booléen

QUAND EXCEPTION DANS
SI nModeAcces <> -1 ALORS
bResultat = HOuvre(sNomFichier,sMotDePasse,nModeAcces)
SINON
bResultat = HOuvre(sNomFichier,sMotDePasse)
FIN
FAIRE
// Déphasage de structure ?
SI HErreur() = ERREUR_DEPHASAGE ALORS
// Modifie le fichier

HModifieStructure(sNomFichier,hmsNormal,Null,sRepertoireSauvegarde,sChampJauge)

// On re-essaye de l'ouvrir
SI nModeAcces <> -1 ALORS
bResultat = HOuvre(sNomFichier,sMotDePasse,nModeAcces)
SINON
bResultat = HOuvre(sNomFichier,sMotDePasse)
FIN
SINON
bResultat = Faux
FIN
FIN

RENVOYER bResultat

Bon windev
Miembro registrado
299 mensajes
Publicado el 05,marzo 2019 - 10:03
D'abord merci à tous les 3

Je réfléchis à un moyen d'incorporer dans mon application une fonction qui implémenterait le HModifieStructure.
Je ne connaissais pas. Je ne sais pas à quel niveau de version cette fonction est arrivée mais je ne me rappelle pas en avoir entendu parler lors de la formation WD

Pour ce qui est de WDModFic.exe je suis en train de le chercher sur mon PC.
Pour l'instant rien. Je suppose que c'est à télécharger.

Merci encore
Miembro registrado
215 mensajes
Publicado el 05,marzo 2019 - 14:18
C'est dans les outils
Publicado el 05,marzo 2019 - 14:20
WDModfic est dans le répertoire 'programmes' de Windev
Ex: C:\Program Files (x86)\PC SOFT\WINDEV 24\Programmes

Ou comme dit plus haut, tu peux coder avec HModifieStructure()
Miembro registrado
299 mensajes
Publicado el 05,marzo 2019 - 14:45
A partir de vos différents messages voici ma procédure
Cela fonctionne et, vraiment, je vous remercie tous parce que j'étais bloqué
Cela me rappelle cependant des codes qu'on écrivait fin des années 80 quand j'ai commencé avec dBase III ou Clipper et je ne croyais pas devoir y revenir un jour.


POUR TOUTE chaîne LO_Fichier de LC_Liste SEPAREE PAR RC
LC_Fichier est une chaîne = ComplèteRep(psRepert) + LO_Fichier + ".FIC"
SI fFichierExiste(LC_Fichier) ALORS
SI HModifieStructure(LO_Fichier, hmsSansContrôle) = Faux ALORS
LO_IAD.IAD_Ecrittrace("Erreur régénération " + LC_Fichier, HErreurInfo(hErrMessage), "")
FIN
LN_Resultat = HVérifieIndex(LO_Fichier)
SELON LN_Resultat
CAS 0
CAS 1, 2
fSupprime(ComplèteRep(psRepert)+SansEspace(LO_Fichier) + ".ndx")
SI HRéindexe({LO_Fichier}, hNdxNormal) = Faux ALORS
LO_IAD.IAD_Ecrittrace("Erreur régénération index " + LC_Fichier, HErreurInfo(hErrMessage), "")
FIN
FIN
FIN
FIN