Salut,
Voici le code nécessaire pour gérer la mise à jour :
Le principe est d'ouvrir le formulaire d'une autre base se trouvant dans le même dossier, cette base effectue une copie du serveur vers le dossier du PC client, du fait qu'il est le même nom la nouvelle écrase la précédente. Juste avant la copie je renomme la bdd actuelle en changeant l'extension pour mettre bck à la place de mdb, ceci permet d'avoir la version - 1 si problème.
1 - Copie se code dans un nouveau module de ta base cliente et ta base de MAJ.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| Option Compare Database
Private Declare Function apiSetForegroundWindow Lib "user32" _
Alias "SetForegroundWindow" _
(ByVal hwnd As Long) _
As Long
Private Declare Function apiShowWindow Lib "user32" _
Alias "ShowWindow" _
(ByVal hwnd As Long, _
ByVal nCmdShow As Long) _
As Long
Private Const SW_MAXIMIZE = 3
Private Const SW_NORMAL = 1
'
Function MAJ_Base()
'Fonction permettant la montée de version de la base.
'1-Ouverture base MAJ (contient toutes les cdes DOS).
'2-Fermeture de cette base.
'3-Exécution MAJ.
'4-Fermeture de la Base MAJ
'5-Ouverture de celle-ci (nouvelle version).
' Initialise la chaîne au chemin d'accès à la base de données.
' Crée une nouvelle instance de Microsoft Access.
Set objAccess = New Access.Application
With objAccess
lngRet = apiSetForegroundWindow(.hWndAccessApp)
lngRet = apiShowWindow(.hWndAccessApp, SW_NORMAL)
'le premier appel à ShowWindow semble rester sans effet
lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE)
.OpenCurrentDatabase CurrentProject.Path & "\MAJ.mdb"
.DoCmd.OpenForm "frmMAJ" ', , , , , , Application.CurrentDb.Name
End With
DoCmd.Quit
End Function |
Mais le nom de ta base sur cette ligne :
.OpenCurrentDatabase CurrentProject.Path & "\MAJ.mdb"
le nom du Formulaire :
.DoCmd.OpenForm "frmMAJ" ', , , , , ,
2 - Il te suffit de créer ton code dans la base de mise à jour, renommer l'ancienne base, tester la présence sur le serveur de la nouvelle bdd, effectue la copie avec animation sur un formulaire pour signaler qu'un travail est en cours, une fois la copie finie il te suffit d'appeler le même code que précédemment pour ouvrir la base cliente sur le poste sur le formulaire de démarrage.
Si tu veux rendre plus professionnel ta bdd, tu créer un champ bool qui est à 1 et lors de l'aafichage du form de démarrage tu test ce champ pour afficher un message de bienvenue dans le nouvelle version avec quelques ligne pour expliquer les nouvelles fonctions et tu met le champ à 0 ensuite ce qui fait qu'au prochain démarrage pas de message.
3 - pour appeler la fonction il te suffit de mettre :
Tu devrais t'en sortir avec cela.
Dolphy
Partager