OVH Cloud OVH Cloud

Encore ouverture de base

7 réponses
Avatar
Florent
Bonjour

Voil=E0 j'ai =E9cris mon code pour ouvrir une base =E0 partir=20
d'une autre base. Ca marche bien, mais le pb est que d=E8s=20
que j'essais de la manipuler elle se ferme et revient sur=20
la premi=E8re base.

Voici mon code ou j'ai volontairement enlev=E9 la lib=E9ration=20
de mon objet car je veux manipuler ma deuxi=E8me base en=20
gardant la premi=E8re ouverte et vice versa :

Private Sub OuvrirAutreBase_Click()
Dim wdApp As Access.Application

Set wdApp =3D New Access.Application

With wdApp
.Visible =3D True
.Application.OpenCurrentDatabase=20
("C:\MaDeuxi=E8meBase.mdb")
End With

D'avance merci

End Sub

7 réponses

Avatar
Raymond [mvp]
Bonjour.

le code n'a rien d'anormal, mais le vice versa oui. Le versa ne serait-il
pas un peu de vice ? si je comprend bien, à partir d'une base, tu en ouvres
une autre qui va manipuler la base appelante en tant que base appelée et
ceci peut-être plusieurs fois ? je crois bien que ton problème est là car tu
ne peux pas ouvrir indéfiniment les mêmes bases.
.

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


"Florent" a écrit dans le message de
news:007e01c3be6a$0dffbae0$
Bonjour

Voilà j'ai écris mon code pour ouvrir une base à partir
d'une autre base. Ca marche bien, mais le pb est que dès
que j'essais de la manipuler elle se ferme et revient sur
la première base.

Voici mon code ou j'ai volontairement enlevé la libération
de mon objet car je veux manipuler ma deuxième base en
gardant la première ouverte et vice versa :

Private Sub OuvrirAutreBase_Click()
Dim wdApp As Access.Application

Set wdApp = New Access.Application

With wdApp
.Visible = True
.Application.OpenCurrentDatabase
("C:MaDeuxièmeBase.mdb")
End With

D'avance merci

End Sub
Avatar
Xavier HUE
Bonjour Florent,

1) Quand tu dis "manipuler", c'est effectuer toi même des
modif dans la base ou via du code VBA.
Par VBA pas de problème, mais toi, je ne suis pas sûr que
tu puisses accéder à la session Access ouverte par
OpenDatabase.

2) Ta fonction créé une session Access dés que la méthode
OpenDataBase est invoquée. Cette session est affecté à la
variable wdApp. Laquelle est locale à ta fonction.
Donc dés que ta fonction se termine, la variable est
détruite, ainsi que, normalement, la session Access.
Il est trés fortement déconseillé de ne pas clore tout
objet créé dans une procédure ou fonction.
En général:
Objet.Close
Set Objet = Nothing.

Cordialement.

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

Voilà j'ai écris mon code pour ouvrir une base à partir
d'une autre base. Ca marche bien, mais le pb est que dès
que j'essais de la manipuler elle se ferme et revient sur
la première base.

Voici mon code ou j'ai volontairement enlevé la
libération

de mon objet car je veux manipuler ma deuxième base en
gardant la première ouverte et vice versa :

Private Sub OuvrirAutreBase_Click()
Dim wdApp As Access.Application

Set wdApp = New Access.Application

With wdApp
.Visible = True
.Application.OpenCurrentDatabase
("C:MaDeuxièmeBase.mdb")
End With

D'avance merci

End Sub
.



Avatar
Florentr
En fait je me suis mal exprimé.

Une fois que j'ai ouvert la deuxième base à partir de la
première, je me dis que je peux faire l'inverse, mais à
condition que la première soit fermée bien sûr.

Quand je disais que je ne pouvais pas manipuler la base,
je voulais dire je ne peux pas la faire fonctionner (je ne
parlais pas d'un point de vue conceptuel mais d'un point
de vue fonctionnel). Je ne peux pas faire fonctionner ma
base.

Voilà mon vrai problème
(Désolé d'avance pour ma mauvaise expression)



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

le code n'a rien d'anormal, mais le vice versa oui. Le
versa ne serait-il

pas un peu de vice ? si je comprend bien, à partir d'une
base, tu en ouvres

une autre qui va manipuler la base appelante en tant que
base appelée et

ceci peut-être plusieurs fois ? je crois bien que ton
problème est là car tu

ne peux pas ouvrir indéfiniment les mêmes bases.
..

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


"Florent" a écrit
dans le message de

news:007e01c3be6a$0dffbae0$
Bonjour

Voilà j'ai écris mon code pour ouvrir une base à partir
d'une autre base. Ca marche bien, mais le pb est que dès
que j'essais de la manipuler elle se ferme et revient sur
la première base.

Voici mon code ou j'ai volontairement enlevé la libération
de mon objet car je veux manipuler ma deuxième base en
gardant la première ouverte et vice versa :

Private Sub OuvrirAutreBase_Click()
Dim wdApp As Access.Application

Set wdApp = New Access.Application

With wdApp
.Visible = True
.Application.OpenCurrentDatabase
("C:MaDeuxièmeBase.mdb")
End With

D'avance merci

End Sub


.



Avatar
Raymond [mvp]
RE.

je comprend mieux,

est-ce qu'un utilisateur 'utilise' la base ? ou est-ce uniquement de
l'automation access ?

peux-tu donner un peu plus de code car avec celui du 1er poste c'est un peu
court ?

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


"Florentr" a écrit dans le message de
news:0a3701c3be6e$340e7ab0$
En fait je me suis mal exprimé.

Une fois que j'ai ouvert la deuxième base à partir de la
première, je me dis que je peux faire l'inverse, mais à
condition que la première soit fermée bien sûr.

Quand je disais que je ne pouvais pas manipuler la base,
je voulais dire je ne peux pas la faire fonctionner (je ne
parlais pas d'un point de vue conceptuel mais d'un point
de vue fonctionnel). Je ne peux pas faire fonctionner ma
base.

Voilà mon vrai problème
(Désolé d'avance pour ma mauvaise expression)
Avatar
Florent
Un utilisateur peut effectivement utiliser la base mais il
obtient le même pb que moi (il ne peut pas la manipuler).
Quoi qu'il en soit, le bout de code que je t'ai donné est
le seul que j'utilise pour l'ouverture de la base.

Donc je suppose qu'il doit manquer qqch mais je ne vois
pas quoi.

Je te le redonne :

Private Sub OuvrirAutreBase_Click()
Dim wdApp As Access.Application

Set wdApp = New Access.Application

With wdApp
.Visible = True
.Application.OpenCurrentDatabase
("C:MaDeuxièmeBase/mdb")
End With

End Sub




-----Message d'origine-----
RE.

je comprend mieux,

est-ce qu'un utilisateur 'utilise' la base ? ou est-ce
uniquement de

l'automation access ?

peux-tu donner un peu plus de code car avec celui du 1er
poste c'est un peu

court ?

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


"Florentr" a écrit
dans le message de

news:0a3701c3be6e$340e7ab0$
En fait je me suis mal exprimé.

Une fois que j'ai ouvert la deuxième base à partir de la
première, je me dis que je peux faire l'inverse, mais à
condition que la première soit fermée bien sûr.

Quand je disais que je ne pouvais pas manipuler la base,
je voulais dire je ne peux pas la faire fonctionner (je ne
parlais pas d'un point de vue conceptuel mais d'un point
de vue fonctionnel). Je ne peux pas faire fonctionner ma
base.

Voilà mon vrai problème
(Désolé d'avance pour ma mauvaise expression)


.



Avatar
Raymond [mvp]
Bonjour.

je crois que tu t'égares dans l'automation. l'automation access n'est pas
faite pour ouvrir une base et laisser la main à l'utilisateur mais pour
ouvrir une base, exécuter des fonctions, fermer et revenir dans la base
appelante. si tu veux laisser la main à l'utilisateur, tu lances access par
le shell et tu fermes ta propre base éventuellement.

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


"Florent" a écrit dans le message de
news:09aa01c3bef2$563b3630$
Un utilisateur peut effectivement utiliser la base mais il
obtient le même pb que moi (il ne peut pas la manipuler).
Quoi qu'il en soit, le bout de code que je t'ai donné est
le seul que j'utilise pour l'ouverture de la base.

Donc je suppose qu'il doit manquer qqch mais je ne vois
pas quoi.

Je te le redonne :

Private Sub OuvrirAutreBase_Click()
Dim wdApp As Access.Application

Set wdApp = New Access.Application

With wdApp
.Visible = True
.Application.OpenCurrentDatabase
("C:MaDeuxièmeBase/mdb")
End With

End Sub
Avatar
Florent
Effectivement je pensais qu'on pouvait prendre la main

Merci tout de même



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

je crois que tu t'égares dans l'automation. l'automation
access n'est pas

faite pour ouvrir une base et laisser la main à
l'utilisateur mais pour

ouvrir une base, exécuter des fonctions, fermer et
revenir dans la base

appelante. si tu veux laisser la main à l'utilisateur, tu
lances access par

le shell et tu fermes ta propre base éventuellement.

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


"Florent" a écrit
dans le message de

news:09aa01c3bef2$563b3630$
Un utilisateur peut effectivement utiliser la base mais il
obtient le même pb que moi (il ne peut pas la manipuler).
Quoi qu'il en soit, le bout de code que je t'ai donné est
le seul que j'utilise pour l'ouverture de la base.

Donc je suppose qu'il doit manquer qqch mais je ne vois
pas quoi.

Je te le redonne :

Private Sub OuvrirAutreBase_Click()
Dim wdApp As Access.Application

Set wdApp = New Access.Application

With wdApp
.Visible = True
.Application.OpenCurrentDatabase
("C:MaDeuxièmeBase/mdb")
End With

End Sub



.