Il était une fois Dim db As DAO.Database...
Le
Jeff
Bonjour à tous
Avant toute chose, je pense avoir déjà posé la question mais j'ai perdu les
réponses ;-)
Donc si tel est le cas, ne criez pas trop fort !!
Voici la question: à votre avis, faut-il à chaque fois que l'on en a besoin
déclarer une variable locale
Dim db As DAO.Database ou bien peut-on (est-ce conseillé ?) en déclarer une
en globale et
l'utiliser tout au long des différentes fonctions et procédures exécutées
dans une application ?
Je ne cherche a priori aucune optimisation particulière si ce n'est de
n'avoir qu'une seule fois à déclarer
ma variable et de pouvoir l'utiliser sans avoir à faire à nouveau les
déclarations.
Bien sur dans le cas d'une utilisation globale, je l'affecte au démarrage et
la cloture à la fermeture de la base
par un Set db = Nothing (db.Close ne suffisant pas, n'est-ce pas ?)
Merci d'avance pour vos réponses
Cordialement
Jeff
Avant toute chose, je pense avoir déjà posé la question mais j'ai perdu les
réponses ;-)
Donc si tel est le cas, ne criez pas trop fort !!
Voici la question: à votre avis, faut-il à chaque fois que l'on en a besoin
déclarer une variable locale
Dim db As DAO.Database ou bien peut-on (est-ce conseillé ?) en déclarer une
en globale et
l'utiliser tout au long des différentes fonctions et procédures exécutées
dans une application ?
Je ne cherche a priori aucune optimisation particulière si ce n'est de
n'avoir qu'une seule fois à déclarer
ma variable et de pouvoir l'utiliser sans avoir à faire à nouveau les
déclarations.
Bien sur dans le cas d'une utilisation globale, je l'affecte au démarrage et
la cloture à la fermeture de la base
par un Set db = Nothing (db.Close ne suffisant pas, n'est-ce pas ?)
Merci d'avance pour vos réponses
Cordialement
Jeff

Poser une question


Désolé
Cordialement
Jeff
"Jeff" news:ci8r0c$q73$
Petit complément à ma question :
Que pensez de la méthode suivante :
Au lieu de :
Dim db As DAO.Database, rst As DAO.Recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("...")
Faire :
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("...")
Est-ce conseillé ?
Pour information, je suis sous Access 2002 (j'avais omis de le précisé).
Merci
Cordialement
"Jeff" news:ci8r0c$q73$
justement à partir de access 2000 il y a risque de conflit (de bordel) entre ADO et DAO, donc il est plus mieux de préciser
DAO.Recordset
et il est préferable de mettre currentdb dans une variable
donc ton premier jet était bien
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Jeff"
comme on dit, tu peux le faire !
Sauf qu'il ne faut pas oublier que:
- CurrentDb n'est pas un objet unique
- Currentdb ouvre obligatoirement un autre objet database chaque fois qu'on
l'utilise
- Il faut fermer le currentdb par CurrentDb.Close quand on a terminé.
- Nothing ne peut pas s'appliquer à currentdb
quand on applique ça, il n'y a aucun avantage à partir directement sur le
currentdb.
Dim Db As DAO.Database
Dim Rst As DAO.Recordset
Dim Tdf As DAO.TableDef
doivent être placés dans les déclaratives du formulaire et non dans la
procédure pour éviter de le déclarer plusieurs fois (sauf exception).
Dans la procédure Form_Load tu places cette ligne :
Set db = CurrentDb
Dans la procédure Form_UnLoad tu places cette ligne :
Set db = Nothing
de cette façon tu n'oublieras pas de déclarer et fermer ton objet Db.
ça va mieux ?
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Jeff" news:ci8sil$tjn$
Cordialement
Jeff
"Pierre CFI [mvp]" news: