Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/06/2011, 14h19   #1
Membre du Club
 
Inscription : novembre 2006
Messages : 70
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 70
Points : 44
Points : 44
Par défaut ouvrir un formulaire access à partir de vb6

salut à tous,
j'essai d'ouvrir un formulaire access à partir d'un code vb6.
Code :
1
2
 
Application.DoCmd.OpenForm "frmAccueil"
pas de problème si le fichier access contenant le formulaire "frmAccueil" est ouvert en premier. Lorsqu'il est ouvert après un autre fichier access, l'objet application ne se réfère plus à lui mais bien au premier, et donc échec du code. Ce qui m'aiderait beaucoup est de savoir comment lister toutes les fichiers access ouverts et assigner chacun à une variable objet pour pouvoir les manipuler sans confusion. En d'autres termes comment faire pour que l'objet application désigne tel ou tel fichier ouvert.

Merci pour votre aide
samloba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 15h39   #2
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
salut samloba,
pas sur de bien comprendre mais si tu utilise du vb6 il te suffit d'attribuer une variable à chacune des instance de l'objet application access.

Code :
1
2
Dim appAccess1 As Object
Set appAccess1 = CreateObject("Access.Application")
...

ainsi: appAccess1.docmd.... appAccess2.docmd... te permet d'éviter des confusions dans les applications.
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 17h48   #3
Membre du Club
 
Inscription : novembre 2006
Messages : 70
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 70
Points : 44
Points : 44
merci vodiem pour ta réponse
En fait, j'écris une application access couplée avec une bibliothèque de classes compilée dans une dll activeX. Les codes dans access ne sont que des appel des fonctions et methodes de la dll. Je n'ouvre donc pas le fichier access à partir de vb6 ce qui me permettrait de faire comme tu dis.

Dans la dll j'ai la classe cConnect qui va gerer toutes les opérations de connection avec la dorsale et lancer le formulaire principal. Dans la frontale je mets
Code :
1
2
3
dim oConnect as new cConnect
oConnect.LancerAppli
set oConnect =nothing
le code de la dll
Code :
Application.DoCmd.OpenForm "frmAccueil"
Si le fichier est ouvert en premier pas de problème car il correspond à "application" sinon y'a plantage.

Cependant ta réponse me fais réfléchir.
Vu que j'utilise une procédure préliminaire dans le fichier access pour vérifier mes références, je pourrais déclarer une variable objet globale pointant sur le fichier access actuel et l'utiliser dans la dll. Je vais essayer
Code :
1
2
global MyApp as Access.Application
set MyApp=currentProject.application
samloba est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h18.


 
 
 
 
Partenaires

Hébergement Web