OVH Cloud OVH Cloud

VBA: exécuter une fonction dans la base dorsale via la base frontale

6 réponses
Avatar
Stach
Salut =E0 tous,

Est-ce possible par un code VBA, d'ex=E9cuter une fonction=20
dans une base dorsale =E0 partir de la base frontale? si=20
oui, quek code VBA utiliser?

J'ai bien essayer de cr=E9er dans la base dorsale une=20
macro "autoexec" qui applique la fonction en question,=20
mais cette macro ne fonctionne pas lorsque c'est la base=20
frontale qui "appelle" la base dorsale.

qq peut-il m'aider svp

Merci.

Stach ;-)=20
=20

6 réponses

Avatar
Anor
Bonjour

Stach a confié :
| Salut à tous,
|
| Est-ce possible par un code VBA, d'exécuter une fonction
| dans une base dorsale à partir de la base frontale? si
| oui, quek code VBA utiliser?
|
| J'ai bien essayer de créer dans la base dorsale une
| macro "autoexec" qui applique la fonction en question,
| mais cette macro ne fonctionne pas lorsque c'est la base
| frontale qui "appelle" la base dorsale.
|
| qq peut-il m'aider svp
|
| Merci.
|
| Stach ;-)

cette façon de procéder est pour le moins étrange....
une dorsale n'est supposée contenir que des tables et à la limite
une petite fonction qui empêche son ouverture en direct....

que fait cette fonction ?
pourquoi ne pas la mettre dans la base frontale ?

Bon, quoi qu'il en soit, je pense que pour faire ce que tu souhaites,
il faut référencer la base dorsale depuis la base frontale en utilisant le bouton parcourir
depuis un module, menu outils > références..
me tromp-je ?

--
à+
Arnaud
--------------------------------------------------
Avant toute chose : http://users.skynet.be/mpfa/
Access Memorandum - http://memoaccess.free.fr
## Réponses souhaitées sur ce forum, merci. ##
--------------------------------------------------
Avatar
Raymond
Bonsoir.

Le client est roi comme on dit. tu peux faire ce genre de manoeuvre:

Dim ACC As New Access.Application
With ACC
.OpenCurrentDatabase "c:bd1.mdb"
.DoCmd.OpenForm "formulaire1"
.DoCmd.RunMacro "seneque"
.CloseCurrentDatabase
.Quit acQuitSaveNone
End With
Set ACC = Nothing

Tu risques un jour d'avoir des problèmes de base bloquée par toi-même et tu
ne pourras pas t'en sortir. Evites ce genre de gymnastique.


--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Stach" a écrit dans le message de
news:003f01c398b1$0df63b20$
Salut à tous,

Est-ce possible par un code VBA, d'exécuter une fonction
dans une base dorsale à partir de la base frontale? si
oui, quek code VBA utiliser?

J'ai bien essayer de créer dans la base dorsale une
macro "autoexec" qui applique la fonction en question,
mais cette macro ne fonctionne pas lorsque c'est la base
frontale qui "appelle" la base dorsale.

qq peut-il m'aider svp

Merci.

Stach ;-)
Avatar
Merci pour ta réponse,

mais lorsque j'essaye d'ouvrir ma base dorsale, j'ai un
message me disant que la base est déjà ouverte en
mode "exclusif" alors que dans les options elle est
définie en mode "partagé".

Que puis-je faire svp?

Stach ;-)


-----Message d'origine-----
Bonsoir.

Le client est roi comme on dit. tu peux faire ce genre de
manoeuvre:


Dim ACC As New Access.Application
With ACC
.OpenCurrentDatabase "c:bd1.mdb"
.DoCmd.OpenForm "formulaire1"
.DoCmd.RunMacro "seneque"
.CloseCurrentDatabase
.Quit acQuitSaveNone
End With
Set ACC = Nothing

Tu risques un jour d'avoir des problèmes de base bloquée
par toi-même et tu

ne pourras pas t'en sortir. Evites ce genre de
gymnastique.



--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Stach" a écrit
dans le message de

news:003f01c398b1$0df63b20$
Salut à tous,

Est-ce possible par un code VBA, d'exécuter une fonction
dans une base dorsale à partir de la base frontale? si
oui, quek code VBA utiliser?

J'ai bien essayer de créer dans la base dorsale une
macro "autoexec" qui applique la fonction en question,
mais cette macro ne fonctionne pas lorsque c'est la base
frontale qui "appelle" la base dorsale.

qq peut-il m'aider svp

Merci.

Stach ;-)


.



Avatar
Raymond
Bonjour.

Autant pour moi. on ne peut pas ouvrir deux fois la même base sur le même
poste sauf si on passe par un lancement de la base par le raccourci access.
access n'accepte pas deux sessions sur la même base.
la seule solution qui reste, à vérifier !, c'est de lancer l'ouverture par
un Shell de msaccess.exe, encore, à condition que la première ait été lancé
par un raccourci vers access et non vers la base.

Pour se résumer, si on lance les bases par un raccourci vers la base mdb, on
ne peut pas avoir 2 fois la même base ouverte. Si on lance les base à partir
d'un raccourci vers access (shell "c:...msaccess.exe" ....) on peut avoir
plusieurs bases ouvertes.

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


a écrit dans le message de
news:096501c39931$e356a720$
Merci pour ta réponse,

mais lorsque j'essaye d'ouvrir ma base dorsale, j'ai un
message me disant que la base est déjà ouverte en
mode "exclusif" alors que dans les options elle est
définie en mode "partagé".

Que puis-je faire svp?

Stach ;-)


-----Message d'origine-----
Bonsoir.

Le client est roi comme on dit. tu peux faire ce genre de
manoeuvre:


Dim ACC As New Access.Application
With ACC
.OpenCurrentDatabase "c:bd1.mdb"
.DoCmd.OpenForm "formulaire1"
.DoCmd.RunMacro "seneque"
.CloseCurrentDatabase
.Quit acQuitSaveNone
End With
Set ACC = Nothing

Tu risques un jour d'avoir des problèmes de base bloquée
par toi-même et tu

ne pourras pas t'en sortir. Evites ce genre de
gymnastique.



--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Stach" a écrit
dans le message de

news:003f01c398b1$0df63b20$
Salut à tous,

Est-ce possible par un code VBA, d'exécuter une fonction
dans une base dorsale à partir de la base frontale? si
oui, quek code VBA utiliser?

J'ai bien essayer de créer dans la base dorsale une
macro "autoexec" qui applique la fonction en question,
mais cette macro ne fonctionne pas lorsque c'est la base
frontale qui "appelle" la base dorsale.

qq peut-il m'aider svp

Merci.

Stach ;-)


.



Avatar
Stach
Pas de chance, sa pose problème parceque à mon avis je
lance mon application par un raccourci vers ma base...

Stach ;-)

-----Message d'origine-----
Bonjour.

Autant pour moi. on ne peut pas ouvrir deux fois la même
base sur le même

poste sauf si on passe par un lancement de la base par le
raccourci access.

access n'accepte pas deux sessions sur la même base.
la seule solution qui reste, à vérifier !, c'est de
lancer l'ouverture par

un Shell de msaccess.exe, encore, à condition que la
première ait été lancé

par un raccourci vers access et non vers la base.

Pour se résumer, si on lance les bases par un raccourci
vers la base mdb, on

ne peut pas avoir 2 fois la même base ouverte. Si on
lance les base à partir

d'un raccourci vers access
(shell "c:...msaccess.exe" ....) on peut avoir

plusieurs bases ouvertes.

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


a écrit dans le
message de

news:096501c39931$e356a720$
Merci pour ta réponse,

mais lorsque j'essaye d'ouvrir ma base dorsale, j'ai un
message me disant que la base est déjà ouverte en
mode "exclusif" alors que dans les options elle est
définie en mode "partagé".

Que puis-je faire svp?

Stach ;-)


-----Message d'origine-----
Bonsoir.

Le client est roi comme on dit. tu peux faire ce genre de
manoeuvre:


Dim ACC As New Access.Application
With ACC
.OpenCurrentDatabase "c:bd1.mdb"
.DoCmd.OpenForm "formulaire1"
.DoCmd.RunMacro "seneque"
.CloseCurrentDatabase
.Quit acQuitSaveNone
End With
Set ACC = Nothing

Tu risques un jour d'avoir des problèmes de base bloquée
par toi-même et tu

ne pourras pas t'en sortir. Evites ce genre de
gymnastique.



--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Stach" a écrit
dans le message de

news:003f01c398b1$0df63b20$
Salut à tous,

Est-ce possible par un code VBA, d'exécuter une fonction
dans une base dorsale à partir de la base frontale? si
oui, quek code VBA utiliser?

J'ai bien essayer de créer dans la base dorsale une
macro "autoexec" qui applique la fonction en question,
mais cette macro ne fonctionne pas lorsque c'est la base
frontale qui "appelle" la base dorsale.

qq peut-il m'aider svp

Merci.

Stach ;-)


.



.




Avatar
Stach
Bonjour,

en fait, cette manoeuvre a pour but d'exécuter un module
dans la base dorsale qui permet automatiquement d'importer
une table de la base dorsale contenant un champ NumeroAuto
que je veux incrémenter (et ne perdre aucun numéro dans ce
champ si par malheur je dois supprimer le dernier
enregistrement)puis exporter cette copie vers la base
dorsale afin qu'elle remplace l'ancienne table

J'ai bien essayé de faire tout ça à partir de la base
frontale en faisant un "import-export" de cette table,
puis en rétablissant les liens entre la dorsale et la
frontale, mais le problème est que lorsque je veux
supprimer l'ancienne table, access me crée des misère car
elle dépend de une ou plusieure relation.

si je savais exactement comment à partir de la base
Frontale:

1°) supprimmer les relations de la table "tblTEST" (champs
de relation "plusieur": [txt]) avec celle de la
table "tblTXT" (champs de relation "un": [txt] aussi) (???)

2°) Importer "tblTEST" dans ma base frontale (OK)
3°) Exporter la copie de "tblTEST" vers la base Dorsale
(OK)
4°) Rétablir les relations dans la base Dorsale (???)
5°) Rétablir les liens entre Frontale et Dorsale (OK)

Cela me permettrai de ne plus jamais perdre de NumeroAuto
qui me servent de clé primaire dans la table.

On m'a bien conseiller d'utiliser "DMax()+1" mais ça ne
s'applique pas vu que ce genre de formule ne peux être
stocquée dans une table.

Grand merci de m'aider.

Stach ;-)