Re: maj structure fichiers temp. : stratégie... |
Sujet: Re: maj structure fichiers temp. : stratégie... par R&B sur 13/3/2003 12:23:33 ouaip C'est bien gentil mais à supposer qu'on ai supprimé des rubriques entre temps, que va dire le programme qui écrit ? bon j'ai trouvé une solution mais je ne parvien pas à créer le fichier à partir de la nouvelle description... hcreation me prend l'ancienne description et donc ma nouvelle rubrique n'est pas crée. en revanche dump/import sont ok faire sauter la dernière desc de rubrique, lancer une fois re-activeer la dernier rubrique et relancer... // Cre Fichier temporaition PROCEDURE _FIC_Cree() // Crée un fichier temporaire en dynamique dFic est une Description Fichier dRub est une Description Rubrique Abv est une chaîne = "CG" cNomFic est une chaîne = "FIC_"+Abv m_cRep est une chaine =frepencours() dFic..Nom = cNomFic dFic..Répertoire = m_cRep dFic..Type = hFichierNormal dRub..Nom = "ID"+cNomFic dRub..Type = hRubIdAuto4 HDécritRubrique(dFic,dRub) dRub..Nom = Abv+"_NUMERO" dRub..Type = hrubEntier4 dRub..Taille = 3 dRub..TypeClé = hCléDoublon HDécritRubrique(dFic,dRub) //----- rubrique à masquer pour la première execution dRub..Nom = Abv+"_RUB_VERSION2" dRub..Type = hrubtexte dRub..Taille = 30 dRub..TypeClé = hCléDoublon HDécritRubrique(dFic,dRub) //fin de rubrique à masquer pour la première execution ----- // Annule la déclaration précedemment faite SI PAS HAnnuleDéclaration(cNomFic) ALORS Erreur(HErreur()) // Décrit le fichier temporaire HDécritFichier(dFic) // Si le fichier temporaire n'existe pas, le crée à vide //HCréationSiInexistant(cNomFic) cFicPhys est une chaîne = m_cRep+"\"+cNomFic+".fic" SI fRep(cFicPhys,frFichier)<>"" ALORS HVérifieStructure(cNomFic,hIdentique) QUAND EXCEPTION DANS RENVOYER HOuvre(cNomFic) FAIRE SI ExceptionInfo(errCode)<>70016 ALORS EXCEPTION FIN cFicDel est une chaîne = m_cRep+"\"+cNomFic+".*" ctxt est une chaîne = m_cRep+"\"+cNomFic+"_.txt" nfic est un entier ssrc est une source de données hdeclareexterne(cficphys,"ssrc") // DUMP le fichier dans un txt Sablier nfic=fOuvre(ctxt,foCréation+foLectureEcriture) SI nfic<>-1 ALORS POUR TOUT ssrc fEcritLigne(nfic,HRécupèreEnregistrement(ssrc,";")) FIN fFerme(nfic) FIN HFerme(ssrc) HAnnuleDéclaration(ssrc) // supprime le fichier physique fSupprime(cFicDel,frLectureSeule) // crée le fichier avec nouvelle structure // c la que ca merdoie HCréation(cNomFic) Info("nouvelle structure "+HListeRubrique(cNomFic)) // re-importe les données HImporteTexte(cNomFic,ctxt,cListeRub,";"+Caract(127)+""""+Caract(127)+RC,hImpSansDélimiteur) fSupprime(ctxt) HOuvre(cNomFic) Sablier(Faux) RENVOYER Vrai SINON RENVOYER HCréationSiInexistant(cNomFic) FIN |