OVH Cloud OVH Cloud

Connecter une base Access à une autre base Access déjà ouverte

14 réponses
Avatar
Warrio
Bonjour,

Est-il possible de connecter une base Access à une autre base Access déjà
ouverte et ensuite avoir la possibilité d'agir dessus?
J'ai essayé ce code:

Dim MyDB as Access.Application
Set MyDB = CreateObject("Access.Application")
MyDB.OpenCurrentDatabase "C:\db2.mdb"
MyDB.DoCmd.OpenForm "SayHello"

Mais le code ci-dessus ouvre une nouvelle instance db2.mdb!
Comment faire pour que je puisse me connecter à db2.mdb sans l'ouvrir une
deuxième fois?

Merci pour toute suggestion.

4 réponses

1 2
Avatar
Warrio
ok! je ne voulais pas le dire pour ne pas compliquer la question et ne pas
m'éloigner de mon but.

j'ai une grande base (db2.mdb) à la quelle les utilisateurs souhaitent s'y
connecter rapidement et commencer leur travail directement après son
ouverture. Sauf que la base doit faire des taches répétitives au démarrage.

Alors ce que j'essaye de faire c'est de faire une autre (petite) base
(db1.mdb) contenant la référence ainsi que des tables liées à db2.mdb.

donc ca devrait se passer comme ceci:
l'utilisateur lance db2 qui elle va ouvrir db1 (en mode caché) et cette
dernière va faire tout le travail routinier.
Pendant ce temps, l'utilisateur peut travailler sur db2 normalement.
Une fois que db1 ait finit le travail, elle demande fait signe à db2 que le
travail et de proposer à l'utilisateur de voir le résultat
une fois la main passée à db2, db1 n'a plus de raison de rester ouverte donc
se ferme.

si ca peut aider à répondre à ma question, alors merci.




"Pierre CFI [mvp]" a écrit dans le message de
news:
bonjour
juste comme çà, quel est l'intérét de la manip ??

--
Pierre CFI
MVP Microsoft Access

Site pour bien commencer
Access http://www.mpfa.info

"Warrio" a écrit dans le message de news:
458177d0$0$8559$
Rebonjour,

L'option que tu me propose fonctionne très bien seulement la fenêtre
s'ouvre dans la base de données qui reférencie la deuxième base.
Seulement ce que j'essaye de faire, c'est d'ouvrir la fenêtre et quitter
la base de départ et laisser la fenêtre ouverte dans la base de donnée
référenciée.

en résumé:
Base1 ouvre Form1 dans Base2
Fermeture de Base 2

Merci encore!

"Jessy Sempere [MVP]" a écrit dans le message
de news: 458149dd$
Ok donc, voilà ce que je te propose :

Copis ce code dans un module standard de la base qui "contient"
les formulaires.

'*********************************************
Function fOpenForm(FormName$, Optional View As AcFormView = acNormal, _
Optional FilterName$ = "", Optional WhereCondition$ = "", _
Optional DataMode As AcFormOpenDataMode = acFormPropertySettings, _
Optional WindowMode As AcWindowMode = acWindowNormal, _
Optional OpenArgs$ = "")

DoCmd.OpenForm FormName, View, FilterName, WhereCondition, _
DataMode, WindowMode, OpenArgs

End Function
'*********************************************

Ensuite dans ton autre base, rajoutes la référence de ta base qui
contient
les formulaires.

Maintenant, dans cette base, au lieu d'utiliser
Docmd.openform...

utilises :

fOpenForm "tonformulaire", ...


--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------

"Warrio" a écrit dans le message de news:
45812b61$0$8560$
Bonjour Jessy!

Je veux effectivement ouvrir un formulaire et ensuite fermer la
connection mais laisser la fenêtre ouverte dans db2.mdb

Merci d'avance.

"Jessy Sempere [MVP]" a écrit dans le
message de news: 458125ac$
Bonjour

Peux-tu nous préciser ce que tu souhaite faire en te "connectant" ???
Tu veux ouvrir des formulaires d'une autre base dans la base
principale, tu veux modifier les données d'une autre base, ... ?

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------

"Warrio" a écrit dans le message de news:
458122de$0$8561$
Bonjour,

Est-il possible de connecter une base Access à une autre base Access
déjà ouverte et ensuite avoir la possibilité d'agir dessus?
J'ai essayé ce code:

Dim MyDB as Access.Application
Set MyDB = CreateObject("Access.Application")
MyDB.OpenCurrentDatabase "C:db2.mdb"
MyDB.DoCmd.OpenForm "SayHello"

Mais le code ci-dessus ouvre une nouvelle instance db2.mdb!
Comment faire pour que je puisse me connecter à db2.mdb sans l'ouvrir
une deuxième fois?

Merci pour toute suggestion.























Avatar
Warrio
ok! J'ai trouvé un moyen bricolé c'est sur, car on arrive pas à trouver le
moyen direct pour le faire via vba... meme si je suis qu'il existe bien.

le moyen c'est d'ouvrir un shortcut (raccourci) d'un formulaire en fichier
.maf et de le lancer simplement depuis db1
seulement je la commande:
Shell "C:OpenMyForm.maf"
me donne l'erreur "Procédure invalide"

alors ce que j'ai fait c'est de créer un fichier .bat contenant la commande:
C:OpenMyForm.maf
et de lancer ce fichier bat à partir de vba avec:
Shell "C:OpenMyForm.bat"
et ca fonctionne meme si c'est bricolé...

cependant je reste toujours interéssé si qqun connaîtrait un code pour
ouvrir un formulaire de cette manière

Merci encore pour tout le temps passé sur cette question
A+

"Warrio" a écrit dans le message de news:
45817e81$0$8554$
ok! je ne voulais pas le dire pour ne pas compliquer la question et ne pas
m'éloigner de mon but.

j'ai une grande base (db2.mdb) à la quelle les utilisateurs souhaitent s'y
connecter rapidement et commencer leur travail directement après son
ouverture. Sauf que la base doit faire des taches répétitives au
démarrage.

Alors ce que j'essaye de faire c'est de faire une autre (petite) base
(db1.mdb) contenant la référence ainsi que des tables liées à db2.mdb.

donc ca devrait se passer comme ceci:
l'utilisateur lance db2 qui elle va ouvrir db1 (en mode caché) et cette
dernière va faire tout le travail routinier.
Pendant ce temps, l'utilisateur peut travailler sur db2 normalement.
Une fois que db1 ait finit le travail, elle demande fait signe à db2 que
le travail et de proposer à l'utilisateur de voir le résultat
une fois la main passée à db2, db1 n'a plus de raison de rester ouverte
donc se ferme.

si ca peut aider à répondre à ma question, alors merci.




"Pierre CFI [mvp]" a écrit dans le message
de news:
bonjour
juste comme çà, quel est l'intérét de la manip ??

--
Pierre CFI
MVP Microsoft Access

Site pour bien commencer
Access http://www.mpfa.info

"Warrio" a écrit dans le message de news:
458177d0$0$8559$
Rebonjour,

L'option que tu me propose fonctionne très bien seulement la fenêtre
s'ouvre dans la base de données qui reférencie la deuxième base.
Seulement ce que j'essaye de faire, c'est d'ouvrir la fenêtre et quitter
la base de départ et laisser la fenêtre ouverte dans la base de donnée
référenciée.

en résumé:
Base1 ouvre Form1 dans Base2
Fermeture de Base 2

Merci encore!

"Jessy Sempere [MVP]" a écrit dans le
message de news: 458149dd$
Ok donc, voilà ce que je te propose :

Copis ce code dans un module standard de la base qui "contient"
les formulaires.

'*********************************************
Function fOpenForm(FormName$, Optional View As AcFormView = acNormal, _
Optional FilterName$ = "", Optional WhereCondition$ = "", _
Optional DataMode As AcFormOpenDataMode = acFormPropertySettings, _
Optional WindowMode As AcWindowMode = acWindowNormal, _
Optional OpenArgs$ = "")

DoCmd.OpenForm FormName, View, FilterName, WhereCondition, _
DataMode, WindowMode, OpenArgs

End Function
'*********************************************

Ensuite dans ton autre base, rajoutes la référence de ta base qui
contient
les formulaires.

Maintenant, dans cette base, au lieu d'utiliser
Docmd.openform...

utilises :

fOpenForm "tonformulaire", ...


--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------

"Warrio" a écrit dans le message de news:
45812b61$0$8560$
Bonjour Jessy!

Je veux effectivement ouvrir un formulaire et ensuite fermer la
connection mais laisser la fenêtre ouverte dans db2.mdb

Merci d'avance.

"Jessy Sempere [MVP]" a écrit dans le
message de news: 458125ac$
Bonjour

Peux-tu nous préciser ce que tu souhaite faire en te "connectant" ???
Tu veux ouvrir des formulaires d'une autre base dans la base
principale, tu veux modifier les données d'une autre base, ... ?

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------

"Warrio" a écrit dans le message de news:
458122de$0$8561$
Bonjour,

Est-il possible de connecter une base Access à une autre base Access
déjà ouverte et ensuite avoir la possibilité d'agir dessus?
J'ai essayé ce code:

Dim MyDB as Access.Application
Set MyDB = CreateObject("Access.Application")
MyDB.OpenCurrentDatabase "C:db2.mdb"
MyDB.DoCmd.OpenForm "SayHello"

Mais le code ci-dessus ouvre une nouvelle instance db2.mdb!
Comment faire pour que je puisse me connecter à db2.mdb sans
l'ouvrir une deuxième fois?

Merci pour toute suggestion.



























Avatar
Jessy Sempere [MVP]
Bonjour

Je ne comprends plus rien... ;-)))
Tu voulais ouvrir dans ta base un formulaire d'une autre ???
Mais a quoi te sert ce formulaire ? Si tu veux l'ouvrir juste pour lancer un
code, il ne sert à rien.
Si tu veux lancer un code d'une autre base, il te suffit de référencer cette
base dans la principale, et là tu auras accès à toutes ces fonctions.

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------

"Warrio" a écrit dans le message de news:
45819379$0$8561$
ok! J'ai trouvé un moyen bricolé c'est sur, car on arrive pas à trouver le
moyen direct pour le faire via vba... meme si je suis qu'il existe bien.

le moyen c'est d'ouvrir un shortcut (raccourci) d'un formulaire en fichier
.maf et de le lancer simplement depuis db1
seulement je la commande:
Shell "C:OpenMyForm.maf"
me donne l'erreur "Procédure invalide"

alors ce que j'ai fait c'est de créer un fichier .bat contenant la
commande:
C:OpenMyForm.maf
et de lancer ce fichier bat à partir de vba avec:
Shell "C:OpenMyForm.bat"
et ca fonctionne meme si c'est bricolé...

cependant je reste toujours interéssé si qqun connaîtrait un code pour
ouvrir un formulaire de cette manière

Merci encore pour tout le temps passé sur cette question
A+

"Warrio" a écrit dans le message de news:
45817e81$0$8554$
ok! je ne voulais pas le dire pour ne pas compliquer la question et ne
pas m'éloigner de mon but.

j'ai une grande base (db2.mdb) à la quelle les utilisateurs souhaitent
s'y connecter rapidement et commencer leur travail directement après son
ouverture. Sauf que la base doit faire des taches répétitives au
démarrage.

Alors ce que j'essaye de faire c'est de faire une autre (petite) base
(db1.mdb) contenant la référence ainsi que des tables liées à db2.mdb.

donc ca devrait se passer comme ceci:
l'utilisateur lance db2 qui elle va ouvrir db1 (en mode caché) et cette
dernière va faire tout le travail routinier.
Pendant ce temps, l'utilisateur peut travailler sur db2 normalement.
Une fois que db1 ait finit le travail, elle demande fait signe à db2 que
le travail et de proposer à l'utilisateur de voir le résultat
une fois la main passée à db2, db1 n'a plus de raison de rester ouverte
donc se ferme.

si ca peut aider à répondre à ma question, alors merci.




"Pierre CFI [mvp]" a écrit dans le message
de news:
bonjour
juste comme çà, quel est l'intérét de la manip ??

--
Pierre CFI
MVP Microsoft Access

Site pour bien commencer
Access http://www.mpfa.info

"Warrio" a écrit dans le message de news:
458177d0$0$8559$
Rebonjour,

L'option que tu me propose fonctionne très bien seulement la fenêtre
s'ouvre dans la base de données qui reférencie la deuxième base.
Seulement ce que j'essaye de faire, c'est d'ouvrir la fenêtre et
quitter la base de départ et laisser la fenêtre ouverte dans la base de
donnée référenciée.

en résumé:
Base1 ouvre Form1 dans Base2
Fermeture de Base 2

Merci encore!

"Jessy Sempere [MVP]" a écrit dans le
message de news: 458149dd$
Ok donc, voilà ce que je te propose :

Copis ce code dans un module standard de la base qui "contient"
les formulaires.

'*********************************************
Function fOpenForm(FormName$, Optional View As AcFormView = acNormal,
_
Optional FilterName$ = "", Optional WhereCondition$ = "", _
Optional DataMode As AcFormOpenDataMode = acFormPropertySettings, _
Optional WindowMode As AcWindowMode = acWindowNormal, _
Optional OpenArgs$ = "")

DoCmd.OpenForm FormName, View, FilterName, WhereCondition, _
DataMode, WindowMode, OpenArgs

End Function
'*********************************************

Ensuite dans ton autre base, rajoutes la référence de ta base qui
contient
les formulaires.

Maintenant, dans cette base, au lieu d'utiliser
Docmd.openform...

utilises :

fOpenForm "tonformulaire", ...


--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------

"Warrio" a écrit dans le message de news:
45812b61$0$8560$
Bonjour Jessy!

Je veux effectivement ouvrir un formulaire et ensuite fermer la
connection mais laisser la fenêtre ouverte dans db2.mdb

Merci d'avance.

"Jessy Sempere [MVP]" a écrit dans le
message de news: 458125ac$
Bonjour

Peux-tu nous préciser ce que tu souhaite faire en te "connectant"
???
Tu veux ouvrir des formulaires d'une autre base dans la base
principale, tu veux modifier les données d'une autre base, ... ?

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------

"Warrio" a écrit dans le message de news:
458122de$0$8561$
Bonjour,

Est-il possible de connecter une base Access à une autre base
Access déjà ouverte et ensuite avoir la possibilité d'agir dessus?
J'ai essayé ce code:

Dim MyDB as Access.Application
Set MyDB = CreateObject("Access.Application")
MyDB.OpenCurrentDatabase "C:db2.mdb"
MyDB.DoCmd.OpenForm "SayHello"

Mais le code ci-dessus ouvre une nouvelle instance db2.mdb!
Comment faire pour que je puisse me connecter à db2.mdb sans
l'ouvrir une deuxième fois?

Merci pour toute suggestion.































Avatar
Warrio
Bonjour Jessy!
Désolé pour la confusion!! mais merci encore de me répondre!

ce que j'essaye de faire c'est simuler une exécution parallèle simultanée
sur des données communes. Vue que ce n'est pas possible avec Access.

a. J'ai une base applée MyDB contenant des tables, des modules, des
formulaires et du code.
->Vu que celle ci doit démarré rapidement et rester à disposition de
l'utilisateur quand il le souhaite, je ne peux pas lancer un processus qui
peut prendre jusqu'à 5min. Ce processus sert a créer automatiquement des
transferts, ainsi que des données dans MyDB.

b. Donc, ce que j'ai fait, c'est qu'au chargement de MyDB, j'ouvre une autre
base applée Loading.mdb à l'aide de :
Shell "MsAccess 'C:Loading.mdb'", vbHide
->La base Loading possède, aux options de démarrage, une fenêtre vide
qui elle va lancer tout le processus de création de données. Loading possède
également des tables liées à MyDB et une référence à MyDB. de ce fait elle
peut accéder au code et données de MyDB. et pendant que Loading fait des
traitements sur les données, MyDB est complètemet libre et peut répondre à
tout moment aux demandes de l'utilisateur.

c. Une fois que Loading a finit ses traitements, elle demande à
l'utilisateur: "Traitement terminé! Voulez-vous voir le résultat?" si oui,
alors elle doit ouvrir la fenêtre frm_Résultat dans MyDB.


Seuelemt si je fais, comme tu me l'a conséillé, une procédure dans MyDB
qui va ouvrir le formulaire frm_Résultat et l'appeler depuis Loading, alors
frm_Résultat s'ouvrira dans la base Loading!!! ce que je ne veux justemet
pas, car je dois fermer Loading parcequ'elle a finit son travail.

alors ce que j'ai bricolé, c'est que j'ai sorti un raccourci vers le
formulaire frm_Résultat en fichier .amf et l'ai enregistré sur le disque. et
pour l'ouvrir dans MyDB à partir de Loading, j'exécute ce raccourci depuis
Loading et je n'ai pas de probleme de double ouvrerture de MyDB et je peux
donc fermer Loading.

Sauf que c'est bricolé.... c'est lent à expliquer, j'en suis désolé

Merci encore pour tout le temps passé sur cette question :0)










"Jessy Sempere [MVP]" a écrit dans le message de
news: 4582842b$
Bonjour

Je ne comprends plus rien... ;-)))
Tu voulais ouvrir dans ta base un formulaire d'une autre ???
Mais a quoi te sert ce formulaire ? Si tu veux l'ouvrir juste pour lancer
un code, il ne sert à rien.
Si tu veux lancer un code d'une autre base, il te suffit de référencer
cette base dans la principale, et là tu auras accès à toutes ces
fonctions.

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------

"Warrio" a écrit dans le message de news:
45819379$0$8561$
ok! J'ai trouvé un moyen bricolé c'est sur, car on arrive pas à trouver
le moyen direct pour le faire via vba... meme si je suis qu'il existe
bien.

le moyen c'est d'ouvrir un shortcut (raccourci) d'un formulaire en
fichier .maf et de le lancer simplement depuis db1
seulement je la commande:
Shell "C:OpenMyForm.maf"
me donne l'erreur "Procédure invalide"

alors ce que j'ai fait c'est de créer un fichier .bat contenant la
commande:
C:OpenMyForm.maf
et de lancer ce fichier bat à partir de vba avec:
Shell "C:OpenMyForm.bat"
et ca fonctionne meme si c'est bricolé...

cependant je reste toujours interéssé si qqun connaîtrait un code pour
ouvrir un formulaire de cette manière

Merci encore pour tout le temps passé sur cette question
A+

"Warrio" a écrit dans le message de news:
45817e81$0$8554$
ok! je ne voulais pas le dire pour ne pas compliquer la question et ne
pas m'éloigner de mon but.

j'ai une grande base (db2.mdb) à la quelle les utilisateurs souhaitent
s'y connecter rapidement et commencer leur travail directement après son
ouverture. Sauf que la base doit faire des taches répétitives au
démarrage.

Alors ce que j'essaye de faire c'est de faire une autre (petite) base
(db1.mdb) contenant la référence ainsi que des tables liées à db2.mdb.

donc ca devrait se passer comme ceci:
l'utilisateur lance db2 qui elle va ouvrir db1 (en mode caché) et cette
dernière va faire tout le travail routinier.
Pendant ce temps, l'utilisateur peut travailler sur db2 normalement.
Une fois que db1 ait finit le travail, elle demande fait signe à db2 que
le travail et de proposer à l'utilisateur de voir le résultat
une fois la main passée à db2, db1 n'a plus de raison de rester ouverte
donc se ferme.

si ca peut aider à répondre à ma question, alors merci.




"Pierre CFI [mvp]" a écrit dans le message
de news:
bonjour
juste comme çà, quel est l'intérét de la manip ??

--
Pierre CFI
MVP Microsoft Access

Site pour bien commencer
Access http://www.mpfa.info

"Warrio" a écrit dans le message de news:
458177d0$0$8559$
Rebonjour,

L'option que tu me propose fonctionne très bien seulement la fenêtre
s'ouvre dans la base de données qui reférencie la deuxième base.
Seulement ce que j'essaye de faire, c'est d'ouvrir la fenêtre et
quitter la base de départ et laisser la fenêtre ouverte dans la base
de donnée référenciée.

en résumé:
Base1 ouvre Form1 dans Base2
Fermeture de Base 2

Merci encore!

"Jessy Sempere [MVP]" a écrit dans le
message de news: 458149dd$
Ok donc, voilà ce que je te propose :

Copis ce code dans un module standard de la base qui "contient"
les formulaires.

'*********************************************
Function fOpenForm(FormName$, Optional View As AcFormView = acNormal,
_
Optional FilterName$ = "", Optional WhereCondition$ = "", _
Optional DataMode As AcFormOpenDataMode = acFormPropertySettings,
_
Optional WindowMode As AcWindowMode = acWindowNormal, _
Optional OpenArgs$ = "")

DoCmd.OpenForm FormName, View, FilterName, WhereCondition, _
DataMode, WindowMode, OpenArgs

End Function
'*********************************************

Ensuite dans ton autre base, rajoutes la référence de ta base qui
contient
les formulaires.

Maintenant, dans cette base, au lieu d'utiliser
Docmd.openform...

utilises :

fOpenForm "tonformulaire", ...


--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------

"Warrio" a écrit dans le message de news:
45812b61$0$8560$
Bonjour Jessy!

Je veux effectivement ouvrir un formulaire et ensuite fermer la
connection mais laisser la fenêtre ouverte dans db2.mdb

Merci d'avance.

"Jessy Sempere [MVP]" a écrit dans le
message de news: 458125ac$
Bonjour

Peux-tu nous préciser ce que tu souhaite faire en te "connectant"
???
Tu veux ouvrir des formulaires d'une autre base dans la base
principale, tu veux modifier les données d'une autre base, ... ?

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------

"Warrio" a écrit dans le message de news:
458122de$0$8561$
Bonjour,

Est-il possible de connecter une base Access à une autre base
Access déjà ouverte et ensuite avoir la possibilité d'agir dessus?
J'ai essayé ce code:

Dim MyDB as Access.Application
Set MyDB = CreateObject("Access.Application")
MyDB.OpenCurrentDatabase "C:db2.mdb"
MyDB.DoCmd.OpenForm "SayHello"

Mais le code ci-dessus ouvre une nouvelle instance db2.mdb!
Comment faire pour que je puisse me connecter à db2.mdb sans
l'ouvrir une deuxième fois?

Merci pour toute suggestion.



































1 2