Garder un objet en vie

Le
Georges
Bonjour!

Est-ce possible de garder un objet d'Access.Application en vie même après
que la mémoire du module qui a créé cet objet soit libérée?

Parce que si db1.mdb crée un objet de type Access.Application, et aussi un
autre objet de type ADO.DataBase, ceux-ci sont automatiquement fermés dès
que db1.mdb est fermée

Merci pour toute suggestion!
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel_D
Le #6343651
Bonjour,

Bonjour!

Est-ce possible de garder un objet d'Access.Application en vie même après
que la mémoire du module qui a créé cet objet soit libérée?

Parce que si db1.mdb crée un objet de type Access.Application, et aussi un
autre objet de type ADO.DataBase, ceux-ci sont automatiquement fermés dès
que db1.mdb est fermée

Merci pour toute suggestion!


Je ne sais pas ce que tu cherche à faire, mais tu peux créer tes objets
via un script vbs.

Georges
Le #6343641
et tu es sûr que le résultat de la variable ne disparaîtra pas une fois le
script terminé??


"Michel_D" news: %
Bonjour,

Bonjour!

Est-ce possible de garder un objet d'Access.Application en vie même après
que la mémoire du module qui a créé cet objet soit libérée?

Parce que si db1.mdb crée un objet de type Access.Application, et aussi
un autre objet de type ADO.DataBase, ceux-ci sont automatiquement fermés
dès que db1.mdb est fermée

Merci pour toute suggestion!


Je ne sais pas ce que tu cherche à faire, mais tu peux créer tes objets
via un script vbs.



Michel_D
Le #6343611
et tu es sûr que le résultat de la variable ne disparaîtra pas une fois le
script terminé??



Oui, mais il faut lancer Access via la méthode Run de l'objet WScript.Shell
et tu récupère l'objet Access.Application via GetObject(,"Access.Application")


"Michel_D" news: %
Bonjour,

Bonjour!

Est-ce possible de garder un objet d'Access.Application en vie même après
que la mémoire du module qui a créé cet objet soit libérée?

Parce que si db1.mdb crée un objet de type Access.Application, et aussi
un autre objet de type ADO.DataBase, ceux-ci sont automatiquement fermés
dès que db1.mdb est fermée

Merci pour toute suggestion!
Je ne sais pas ce que tu cherche à faire, mais tu peux créer tes objets

via un script vbs.







Georges
Le #6343601
Hello Michel!

Merci beaucoup pour ta réponse!
c'est exactement ce que j'ai fait en utilisant la fonction Shell.. ca marche
très bien pour l'application, mais la base de donnée qui est ouvert dans
cette nouvelle instance d'access disparait aussi tot que la variable
DataBase est supprimée de la mémoire...

Sub OpenPasswordProtectedDB()
Static acc As Access.application
Dim db As DAO.Database, pathDb As String

Shell "MsAccess", vbNormalFocus
Set acc = GetObject("", "Access.Application") 'Car je veux prendre celle
qui n'a pas de base ouverte et pas l'actuelle

acc.Visible = True
Set db = acc.DBEngine.OpenDatabase(pathDb, False, False,
";PWD=myPassword")
acc.OpenCurrentDatabase "C:Program FilesMicrosoft
OfficeOffice10SamplesNorthwind.mdb"
db.Close
Set db = Nothing
End Sub

L'application reste affichée après la fermeture du module (car lancé grâce à
Shell) mais la base est fermée!
Désolé de ne pas avoir expliqué le but de tout ca, c'était pour ne pas faire
fuir les gens..

le but est d'avoir une base sécurisé par un mot de pass (pas au niveau
workspace, car n'apparait pas quand on créé une base vide et importe les
objets de la base pseudo sécurisée)
d'avoir une autre base (ou applic vb desktop, ou n'importe..) qui se check
le login de la session Windows, et en fonction de la personne, ouvre
directement la base, ou au contraire demande le mot de pass!

Merci encore et un très bon weekend!


"Michel_D" news: %
et tu es sûr que le résultat de la variable ne disparaîtra pas une fois
le script terminé??



Oui, mais il faut lancer Access via la méthode Run de l'objet
WScript.Shell
et tu récupère l'objet Access.Application via
GetObject(,"Access.Application")


"Michel_D" de news: %
Bonjour,

Bonjour!

Est-ce possible de garder un objet d'Access.Application en vie même
après que la mémoire du module qui a créé cet objet soit libérée?

Parce que si db1.mdb crée un objet de type Access.Application, et aussi
un autre objet de type ADO.DataBase, ceux-ci sont automatiquement
fermés dès que db1.mdb est fermée

Merci pour toute suggestion!
Je ne sais pas ce que tu cherche à faire, mais tu peux créer tes objets

via un script vbs.








Michel_D
Le #6343551
Bonjour,

Ben avec :
db.Close
Set db = Nothing

C'est normal que tu n'ai plus de base accessible, réfléchit calmement
à ce que tu veux obtenir (garder actif/accessible).

PS:Maintenant pour la finalité recherchée, je ne suis pas sur que ce soit
la bonne méthode (de mon point de vue).
Si j'ai un peu de temps, je me pencherai sur ce probléme de base sécurisée.


Hello Michel!

Merci beaucoup pour ta réponse!
c'est exactement ce que j'ai fait en utilisant la fonction Shell.. ca marche
très bien pour l'application, mais la base de donnée qui est ouvert dans
cette nouvelle instance d'access disparait aussi tot que la variable
DataBase est supprimée de la mémoire...

Sub OpenPasswordProtectedDB()
Static acc As Access.application
Dim db As DAO.Database, pathDb As String

Shell "MsAccess", vbNormalFocus
Set acc = GetObject("", "Access.Application") 'Car je veux prendre celle
qui n'a pas de base ouverte et pas l'actuelle

acc.Visible = True
Set db = acc.DBEngine.OpenDatabase(pathDb, False, False,
";PWD=myPassword")
acc.OpenCurrentDatabase "C:Program FilesMicrosoft
OfficeOffice10SamplesNorthwind.mdb"
db.Close
Set db = Nothing
End Sub

L'application reste affichée après la fermeture du module (car lancé grâce à
Shell) mais la base est fermée!
Désolé de ne pas avoir expliqué le but de tout ca, c'était pour ne pas faire
fuir les gens..

le but est d'avoir une base sécurisé par un mot de pass (pas au niveau
workspace, car n'apparait pas quand on créé une base vide et importe les
objets de la base pseudo sécurisée)
d'avoir une autre base (ou applic vb desktop, ou n'importe..) qui se check
le login de la session Windows, et en fonction de la personne, ouvre
directement la base, ou au contraire demande le mot de pass!

Merci encore et un très bon weekend!


"Michel_D" news: %
et tu es sûr que le résultat de la variable ne disparaîtra pas une fois
le script terminé??


Oui, mais il faut lancer Access via la méthode Run de l'objet
WScript.Shell
et tu récupère l'objet Access.Application via
GetObject(,"Access.Application")


"Michel_D" de news: %
Bonjour,

Bonjour!

Est-ce possible de garder un objet d'Access.Application en vie même
après que la mémoire du module qui a créé cet objet soit libérée?

Parce que si db1.mdb crée un objet de type Access.Application, et aussi
un autre objet de type ADO.DataBase, ceux-ci sont automatiquement
fermés dès que db1.mdb est fermée

Merci pour toute suggestion!
Je ne sais pas ce que tu cherche à faire, mais tu peux créer tes objets

via un script vbs.










Jac
Le #6343521
Et si tu écrivais ta variable dans une table qui ne servirait qu'à ça.
Ensuite, depuis une autre mdb, tu pourrais faire un attachement sur cette
table et récupérer la valeur de la variable.


"Michel_D" news:
Bonjour,

Ben avec :
db.Close
Set db = Nothing

C'est normal que tu n'ai plus de base accessible, réfléchit calmement
à ce que tu veux obtenir (garder actif/accessible).

PS:Maintenant pour la finalité recherchée, je ne suis pas sur que ce soit
la bonne méthode (de mon point de vue).
Si j'ai un peu de temps, je me pencherai sur ce probléme de base
sécurisée.


Hello Michel!

Merci beaucoup pour ta réponse!
c'est exactement ce que j'ai fait en utilisant la fonction Shell.. ca
marche très bien pour l'application, mais la base de donnée qui est
ouvert dans cette nouvelle instance d'access disparait aussi tot que la
variable DataBase est supprimée de la mémoire...

Sub OpenPasswordProtectedDB()
Static acc As Access.application
Dim db As DAO.Database, pathDb As String

Shell "MsAccess", vbNormalFocus
Set acc = GetObject("", "Access.Application") 'Car je veux prendre
celle qui n'a pas de base ouverte et pas l'actuelle

acc.Visible = True
Set db = acc.DBEngine.OpenDatabase(pathDb, False, False,
";PWD=myPassword")
acc.OpenCurrentDatabase "C:Program FilesMicrosoft
OfficeOffice10SamplesNorthwind.mdb"
db.Close
Set db = Nothing
End Sub

L'application reste affichée après la fermeture du module (car lancé
grâce à Shell) mais la base est fermée!
Désolé de ne pas avoir expliqué le but de tout ca, c'était pour ne pas
faire fuir les gens..

le but est d'avoir une base sécurisé par un mot de pass (pas au niveau
workspace, car n'apparait pas quand on créé une base vide et importe les
objets de la base pseudo sécurisée)
d'avoir une autre base (ou applic vb desktop, ou n'importe..) qui se
check le login de la session Windows, et en fonction de la personne,
ouvre directement la base, ou au contraire demande le mot de pass!

Merci encore et un très bon weekend!


"Michel_D" de news: %
et tu es sûr que le résultat de la variable ne disparaîtra pas une fois
le script terminé??


Oui, mais il faut lancer Access via la méthode Run de l'objet
WScript.Shell
et tu récupère l'objet Access.Application via
GetObject(,"Access.Application")


"Michel_D" message de news: %
Bonjour,

Bonjour!

Est-ce possible de garder un objet d'Access.Application en vie même
après que la mémoire du module qui a créé cet objet soit libérée?

Parce que si db1.mdb crée un objet de type Access.Application, et
aussi un autre objet de type ADO.DataBase, ceux-ci sont
automatiquement fermés dès que db1.mdb est fermée

Merci pour toute suggestion!
Je ne sais pas ce que tu cherche à faire, mais tu peux créer tes

objets
via un script vbs.












Georges
Le #6365481
Hello, Merci encore pour ta réponse!

Meme si je ne faisais pas de db.Close et SET db=Nothing, je dois fermer la
première base, et Access s'occupera de vider la place allouée par les
variables..

Une solution serait de garder en la base de départ ouverte mais en mode
caché, seulement ce n'est pas propre de faire ca comme ca.



"Michel_D" news:
Bonjour,

Ben avec :
db.Close
Set db = Nothing

C'est normal que tu n'ai plus de base accessible, réfléchit calmement
à ce que tu veux obtenir (garder actif/accessible).

PS:Maintenant pour la finalité recherchée, je ne suis pas sur que ce soit
la bonne méthode (de mon point de vue).
Si j'ai un peu de temps, je me pencherai sur ce probléme de base
sécurisée.


Hello Michel!

Merci beaucoup pour ta réponse!
c'est exactement ce que j'ai fait en utilisant la fonction Shell.. ca
marche très bien pour l'application, mais la base de donnée qui est
ouvert dans cette nouvelle instance d'access disparait aussi tot que la
variable DataBase est supprimée de la mémoire...

Sub OpenPasswordProtectedDB()
Static acc As Access.application
Dim db As DAO.Database, pathDb As String

Shell "MsAccess", vbNormalFocus
Set acc = GetObject("", "Access.Application") 'Car je veux prendre
celle qui n'a pas de base ouverte et pas l'actuelle

acc.Visible = True
Set db = acc.DBEngine.OpenDatabase(pathDb, False, False,
";PWD=myPassword")
acc.OpenCurrentDatabase "C:Program FilesMicrosoft
OfficeOffice10SamplesNorthwind.mdb"
db.Close
Set db = Nothing
End Sub

L'application reste affichée après la fermeture du module (car lancé
grâce à Shell) mais la base est fermée!
Désolé de ne pas avoir expliqué le but de tout ca, c'était pour ne pas
faire fuir les gens..

le but est d'avoir une base sécurisé par un mot de pass (pas au niveau
workspace, car n'apparait pas quand on créé une base vide et importe les
objets de la base pseudo sécurisée)
d'avoir une autre base (ou applic vb desktop, ou n'importe..) qui se
check le login de la session Windows, et en fonction de la personne,
ouvre directement la base, ou au contraire demande le mot de pass!

Merci encore et un très bon weekend!


"Michel_D" de news: %
et tu es sûr que le résultat de la variable ne disparaîtra pas une fois
le script terminé??


Oui, mais il faut lancer Access via la méthode Run de l'objet
WScript.Shell
et tu récupère l'objet Access.Application via
GetObject(,"Access.Application")


"Michel_D" message de news: %
Bonjour,

Bonjour!

Est-ce possible de garder un objet d'Access.Application en vie même
après que la mémoire du module qui a créé cet objet soit libérée?

Parce que si db1.mdb crée un objet de type Access.Application, et
aussi un autre objet de type ADO.DataBase, ceux-ci sont
automatiquement fermés dès que db1.mdb est fermée

Merci pour toute suggestion!
Je ne sais pas ce que tu cherche à faire, mais tu peux créer tes

objets
via un script vbs.












Jac
Le #6365311
... qu'est-ce qui t'empêche d'écrire les variables dans une table ?
Tu pourrais même avoir cette table dans ta deuxième db et écrire tes
variables dans l'attachement que tu aurais fait dans ta première table.

Je t'explique + si nécessaire.

Jac


"Georges" 47a72ccf$0$21469$
Hello, Merci encore pour ta réponse!

Meme si je ne faisais pas de db.Close et SET db=Nothing, je dois fermer la
première base, et Access s'occupera de vider la place allouée par les
variables..

Une solution serait de garder en la base de départ ouverte mais en mode
caché, seulement ce n'est pas propre de faire ca comme ca.


Georges
Le #6365281
Salut Jac,

Merci pour ta suggestion.. Je n'ai pas essayé de faire passer la variable
dans une table, car je ne vois pas la vrai finalité de ton idée..
je peux faire le code nécessaire pour enregistrer le contenu de la variable
qui doit être de type Integer ou Long dans une table Access, mais après j'en
fais quoi une fois que je l'ai récupéré? ce n'est pas pour autant que la
base restera ouverte... Si tu pouvais etre plus clair, cela m'aidera à
comprendre ta suggestion.

Merci d'avance


"Jac" eZ$v4V%
... qu'est-ce qui t'empêche d'écrire les variables dans une table ?
Tu pourrais même avoir cette table dans ta deuxième db et écrire tes
variables dans l'attachement que tu aurais fait dans ta première table.

Je t'explique + si nécessaire.

Jac


"Georges" 47a72ccf$0$21469$
Hello, Merci encore pour ta réponse!

Meme si je ne faisais pas de db.Close et SET db=Nothing, je dois fermer
la première base, et Access s'occupera de vider la place allouée par les
variables..

Une solution serait de garder en la base de départ ouverte mais en mode
caché, seulement ce n'est pas propre de faire ca comme ca.






Jac
Le #6365271
Donc tu saurais écrire ta variable dans une table de la mdb1.

Reste à la récupérer dans une autre instance d'Access, mdb2.
Dans mdb2, tu vas dans les objets "table", bouton droit, "Lier des tables"
et là, tu vas dans la mdb1, pointer sur la table qui contient la variable
que tu as besoin.
Ensuite, il s'agit d'en faire ce que tu as besoin.

C'est clair ?


"Georges" 47a886be$0$21469$
Salut Jac,

Merci pour ta suggestion.. Je n'ai pas essayé de faire passer la variable
dans une table, car je ne vois pas la vrai finalité de ton idée..
je peux faire le code nécessaire pour enregistrer le contenu de la
variable qui doit être de type Integer ou Long dans une table Access, mais
après j'en fais quoi une fois que je l'ai récupéré? ce n'est pas pour
autant que la base restera ouverte... Si tu pouvais etre plus clair, cela
m'aidera à comprendre ta suggestion.

Merci d'avance


"Jac" eZ$v4V%
... qu'est-ce qui t'empêche d'écrire les variables dans une table ?
Tu pourrais même avoir cette table dans ta deuxième db et écrire tes
variables dans l'attachement que tu aurais fait dans ta première table.

Je t'explique + si nécessaire.

Jac




Publicité
Poster une réponse
Anonyme