Bonjour,
Je suis confronté à un problème de sauvegarde de fichier .accdb ouvert.
J'ai bien compris grâce à support.microsoft.com/kb/172711/fr que l'instruction FileCopy ne pouvait pas fonctionner.
J'utilise donc CopyFile à partir de l'API Windows méthode "n° 1" décrite par la base de connaissance et fort bien décrite sur plusieurs posts de Developpez.com.
Cela fonctionne bien avec une base en Access 2002 (.mdb) sur un environnement XP pro version 2002 SP3.
Mais ça ne marche pas sur un autre ordinateur avec une base en Access 2010 (.accdr) sous Vista SP1. J'ai le fameux message d'erreur 70 "Permission refusée". J'ai consulté les échanges sans trouver une solution.
- Je précise que j'ai bien les autorisations de lecture / écritures sur l'ensemble des dossiers.
- J'ai également fait le test en neutralisant bitdefender
J'ai essayé alors la seconde méthode de la base de connaissance avec l'appel de commande MS-DOS Copy sans plus de succès sur Vista.
J'ai alors testé le code en réouvrant la base de données .accdr en lecture seule. La copie de sauvegarde fonctionne alors très bien. Le problème semble bien venir du statut de la base ouverte en lecture / écriture, alors même que j'utilise l'API pour m'en émanciper...
J'ai donc testé l'attribut du fichier lors du lancement de ma fonction de sauvegarde et j'utilise la fonction SetFileAttributes pour mettre ma base en lecture seule au moment où cette fonctionnalité m'est nécessaire, ce que je vérifie sans problème avec l'explorateur dans les propriétés du fichier toujours ouvert. Mais le blocage persiste avec le même message "Permission refusée".
Quelqu'un aurait-il une idée ?
Merci d'avance
Partager