|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éclairé
![]() Michel Développeur informatique Inscription : février 2008 Messages : 261 ![]() |
Bonsoir,
J'aimerais pouvoir, depuis un module ACCESS qui s'ouvre grâce à une macro autoexec (pas encore de fenêtre ouverte) lancer une deuxième application Access et refermer l'actuelle application... puis la supprimer ! J'explique le but : La première application à son ouverture teste si une mise à jour du programme existe (dans un dossier partagé sur serveur), si c'est le cas, elle la récupère depuis ce dossier partagé, la recopie sur le poste local (jusque là, je sais faire) et l'exécute, puis se ferme d'elle même (là ça devient problématique pour moi en ce qui concerne la dite "exécution"). Les Noms des deux applications (la première et sa mise à jour) intègrent le numéro de version, ce qui me permet de différencier l'une de l'autre. (exêmple : monappli v1.0 et monappli V1.1) Cerise sur le gâteau, j'aimerais que la 2° application dès lors que la première est fermée supprime cette première version devenue obsolète. (Ca à priori, je dois pouvoir le faire plus tard lorsque l'utilisateur "quitte" la 2° application, ce qui laissera le temps à la première de ne plus être "en prise". Mais j'aurais aimé le faire dans la foulée ). J'ai tenté avec shellexecute... jusqu'à présent sans succès, d'autant que devant l'exécuter depuis un module avant toute ouverture de fenêtre, je ne vois pas comment indiquer un quelconque handle en premier paramètre, puisque pas de fenêtre encore ouverte. PS : je travaille sur XP avec ACCESS 2002 et les utilisateurs de mon application sont soit sous acces 2002 SP3, soit sous ACCESS 2003 Merci par avance à qui voudra bien perdre un peu de tps à m'éclairer. Michel |
|
|
00
|
|
|
#2 | ||
|
Membre régulier
![]() Bruno EscaronInscription : janvier 2010 Messages : 84 ![]() |
Salut,
J'ai déjà configuré ce que tu veux faire. Mais je lance toujours la même base qui elle vérifie l'existence de nouvelle version puis la lance : Code :
Bon courage |
||
|
00
|
|
|
#3 | |||||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonsoir,
Citation:
1) Ouverture par automation. Je pars du principe que j'ai une fonction VerifNouvVersion() qui vérifie l'existence d'une nouvelle version de l'application. Cette fonction, si elle détecte une nouvelle version, recopie la nouvelle base dans le dossier de l'application, et renvoie le chemin complet vers la nouvelle base. Dans le cas contraire elle ne renvoie rien, c'est à dire une chaîne vide. Code :
Code :
Elle permet de désigner au formulaire (nouvelle version), la base de données à supprimer (ancienne version), et aussi de démarrer le Timer. A+ |
|||||
|
|
00
|
|
|
#4 | |||
|
Membre éclairé
![]() Michel Développeur informatique Inscription : février 2008 Messages : 261 ![]() |
Tout d'abord merci pour ta réponse
Citation:
Code :
A l'exécution ... c'est l'Hécatombe de messages : 1/ La ligne de commande utilisée pour lancer MS Access comporte une option que MS Access ne reconnait pas : quittez Ms Access et relancez-le en utilisant les options de la ligne de cde. (2 fois ce message) 2/ Ensuite ouverture d'accès avec message : Ms Access Ne peut trouver le fichier de Base de données c:\documents.mdb ... Bref : soucis ! |
|||
|
|
00
|
|
|
#5 |
|
Membre éclairé
![]() Michel Développeur informatique Inscription : février 2008 Messages : 261 ![]() |
Merci pour ce code ... qui va m'occuper quelque temps (j'avoue qu'ouvrir "par automation" ne veut pour l'instant pas dire grand chose pour moi ... mais je promets de m'y mettre
Le dommage est de devoir ouvrir un formulaire ... j'aurais aimé que le changement de version soit totalement transparent pour l'utilisateur d'où l'idée de faire ça dans le module lancé par l'autoexec avant toute ouverture de formulaire. Deux renseignements supplementaires : dans le code d'ouverture "par automation", je n'arrive pas à repérer : 1/ à quel moment se copie la nouvelle version sur le poste local 2/ à quel moment alors qu'on travaillait avec l'ancienne version (pour tester l'existence de la nlle version et la "copier" en local, on la quitte pour travailler avec la nouvelle (celle qui, in fine, supprimera l'ancienne version) ... Je sais pas si je suis très clair, là, dans mes demandes !!! Merci en tous cas pour les tentatives d'explication ! Michel |
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Michel Développeur informatique Inscription : février 2008 Messages : 261 ![]() |
Merci aux deux intervenants qui m'ont aidé. Grâce à eux j'ai pu réaliser le programme tel que je le voulais.
J'ai un peu tatonné, mais les codes fournis par LedZeppII m'ont été d'une aide considérable. Je peux mainteant faire des mises à jour sur les postes "clients" d'une manière quasi-transparente pour les 200 utilisateurs Merci donc Michel |
|
|
00
|
|
|
#7 | ||||||||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonsoir,
Citation:
Code :
Citation:
Je l'ai matérialisée par la fonction VerifNouvVersion(). Citation:
Code :
Citation:
Lorsque l'ancienne base donne la main à la nouvelle base avant de se fermer, la nouvelle base ne peut pas supprimer l'ancienne, immédiatement. Erreur 70 : accès (sous entendu au fichier) refusé.Il y a un certain délai (dont la durée est inconnue) avant que l'ancienne base soit totalement fermée et libérée (plus aucun verrou). D'où l'idée d'utiliser un Timer pour faire des tentatives répétées de suppression du fichier de l'ancienne base. A+ |
||||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com