Message de rapport:
 

Re: Faire des sauvegardes à partir d'un menu

Sujet: Re: Faire des sauvegardes à partir d'un menu
par drcharly93 sur 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
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2