Re: Faire des sauvegardes à partir d'un menu

Posté par drcharly93 le 26/2/2004 10:02:39
Bonjour AngelMJ
Modifie ta procedure comme suit:
PROCEDURE Archivages()
//Variables locales
sUnFichier est une chaînes
FichierNom est une chaînes
FichierSource est une chaînes
FichierDestination est une chaînes
RepertoireDonnees est une chaîne
i est un entier

//Si une erreur intervient 
QUAND EXCEPTION	
 Erreur("Une erreur est intervenu lors de l'archivage desfichiers.","L'opération a été annulée.")
 //Pour dire que la sauvegarde ne s"est pas terminée correctement	retour//
FIN
//Tout d'abord on prend le chemin de l'emplacement où
//l'utilisateur souhaite créer le dossier d'archivage
Répertoire est une chaîne = fRepSélecteur("C:\", "Choisir un répertoire",..."Sélectionnez le répertoire dans lequel vous désirez mettre votre dossier d'archivage :")
//Si il n'y a rien de choisi, on arrête tout
SI Répertoire="" ALORS  
RETOUR
FIN
//Le nom du dossier prend la date
NomRep est une chaîne =DateDuJour()
Info("Le dossier d'archivage portera le nom : "+NomRep)
//On complète le nom du répertoire avec le nom d'archivage
Répertoire=Répertoire+"\"+NomRep
//On récupère le nom du projet
gProjetNom est une chaîne = ProjetInfo(piNomProjet)
//On récupère la liste des fichiers
sListeFichier est une chaîne = HListeFichier(hLstDétail)
//Création du répertoire journalier
SI fRep(Répertoire,frRépertoire)= "" ALORS	
 SI PAS fRepCrée(Répertoire) ALORS
  Erreur(ErreurInfo())		
  //Sauvegarde terminée prématurément		
  RETOUR	
 FIN
FIN
//On change le curseur
Sablier()
//Boucle sur les fichiers
BOUCLE	
 i++	
 //On récupère les infos d'un fichier	
 sUnFichier = ExtraitChaîne(sListeFichier,i,RC)	
 //On sort si il n'y a plus de fichier à traiter	
 SI sUnFichier= EOT ALORS SORTIR	
 //On récupère le nom Physique du fichier en 3ème position	
 sFichierNom = ExtraitChaîne(sUnFichier,3)	
 //On récupère son répertoire    

    
 // *** ICI C'EST LA PARTIE A MODIFIER 	***
 SI RendRepertoire <> "" alors  SREPERTOIRESDONNEES = RendRepertoire{SFICHIERNOM}..REPERTOIRE	
 //Chemin complet du fichier à sauvegarder	 
 sFichierSource = SREPERTOIRESDONNEES+"\"+sFichierNom+{sFichierNom}..Extension	
 // *** FIN DE LA MODIFICATION ***

 //Chemin Complet du fichier a creer	
 sFichierDestination = Répertoire+"\"+sFichierNom+{sFichierNom}..Extension	
 //On ferme le Fichier au cas ou	
 SI PAS HFerme(sFichierNom) ALORS		
  Erreur(HErreurInfo())		
  //Tous les fichiers n'était pas fermés		
  //Le fichier ne peut pas etre fermé alors on quitte la sauvegarde	
 FIN	
 //On copie le fichier	
 fCopieFichier(sFichierSource,sFichierDestination,frJauge)
FIN
Sablier(Faux)
Info("La sauvegarde des fichiers s'est correctement effectuée.")


En effet la fonction RendRepertoire renvoi "" si la fonction à provoque une erreur avec {sFichierNom}..Repertoire
le repertoire etant = "" le fichier n'etait pas trouvé
Avec cette modif SREPERTOIRESDONNEES n'est modifié que si la fonction à réussi
Comme dans la plupart des projet les donnees sont stocké au meme endroit cette solution devrait fonctionner quasiment dans tous les cas

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=5&topic_id=562&post_id=2340