Crazyturky
Messages postés2Date d'inscriptionjeudi 17 mars 2005StatutMembreDernière intervention21 mars 2005
-
18 mars 2005 à 22:19
andalo
Messages postés102Date d'inscriptionlundi 23 avril 2007StatutMembreDernière intervention20 octobre 2012
-
8 nov. 2007 à 15:10
Salut à tous !
En fait je suis actuellement sur une application sur vb6 et je souhaiterais dans la mesure du possible pourvoir sauvegarder ma base de données Acces.
Le problème, c'est que cela peut et doit se faire n'importe quand à partir d'un clique sur un "CommandBouton" par exemple apres avoir selectionné le chemin où l'on souhaite enregistrer la base de données, il faut également savoir que la base de données est ouverte d'office lors de l'execution de l'application dans le module, c'est du DAO que je fais plus précisement.
J'ai regardé les divers éléments qui auraient pu m'aidé sur le site, mais je n'ai pas trouvé de remède, ou alors ça ne collait pas avec ce que je voulais faire.
Y a-t-il quelqu'un apte à m'aider s'il vous plait?
Merci d'avance.
A voir également:
Exemple base de données access gestion du personnel
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 18 mars 2005 à 23:37
Salut,
Pour pouvoir sauvegarder ta base, il faut qu'elle ne soit ouverte par aucun prog.
Si ta base est mono-utilisateur, tu dois la fermer, faire ta sauvegarde puis la réouvrir. Pas d'autre solution avec access.
Si tu as un recorset en cours, ça signifie aussi que tu dois le recréer et rafraichir ton affichage.
Neo.balastik
Messages postés796Date d'inscriptionjeudi 17 mai 2001StatutMembreDernière intervention 5 mai 20097 19 mars 2005 à 15:17
Salut ;O)
CanisLupus > dans le cas d'un simple FileCopy de VB, en effet il faut que la DB soit fermée sinon il y aura une erreur 70 : Permission Denied. Mais il ne faut pas dire qu'il n'y a pas d'autre solution avec Access... Tu te trompes !
Il est donc possible de copier un fichier en cours d'utilisation. Pour simple exemple, ouvre une DB Access, va dans l'explorateur de Windows et fais un copier-coller de cette DB. Et Ô miracle, cela fonctionne...
Pour arriver à cela, FileCopy de VB n'est pas approprié. Il faudra utiliser l'API CopyFileEx.
Code :
'DECLARATION API
Public Declare Function CopyFileEx Lib "kernel32.dll" Alias "CopyFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal lpProgressRoutine As Long, lpData As Any, ByRef pbCancel As Long, ByVal dwCopyFlags As Long) As Long
Crazyturky
Messages postés2Date d'inscriptionjeudi 17 mars 2005StatutMembreDernière intervention21 mars 2005 21 mars 2005 à 16:22
Salut
je vous remercie de m'avoir répondu et le probleme est effectivement le fait que la bd soit ouverte, donc dès lors, jai fait un "bd.close" et apres avoir effectuer l'enregistrement je reouvre la bd et là ça fonctionne !! c'est comme un miracle parfois (lol) mais le souci c'est qu'une disquette c'est trop petit pour la base de données que j'ai à sauvegarder mais heuresement que je peux egalement enregistrer sur mon disque dur ou sur une clé usb
par contre pour l'API je ne sais pas m'en servir malheuresement
merci de votre aide
@ bientot
Neo.balastik
Messages postés796Date d'inscriptionjeudi 17 mai 2001StatutMembreDernière intervention 5 mai 20097 22 mars 2005 à 08:42
Crazyturky> Il suffisait de faire un copier-coller et d'adapter selon ton besoin. Mais tu n'es peut-être pas habitué avec les API... L'avantage de l'API proposée est que la DB peut rester ouverte pendant la copie. A toit de voir.
andalo
Messages postés102Date d'inscriptionlundi 23 avril 2007StatutMembreDernière intervention20 octobre 2012 8 nov. 2007 à 15:10
j'aadore, neobalastik, les deux methodes sont bonnes, mais pas fermer sa base et pas relancer la connexion et tous l'affichage c'est vraiment la classe. Le seul truc que je ne pige pas ce sont les variables aprés le chemin d'origine et le chemin de destination, j'ai utilisé tel quel sans savoir cea quoi ca sert, mais bon ca marche du feu de dieu.