GNT sans publicité, site mobile, fonctionnalitées exclusives...

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
Lire les 11 réponses

Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jeff
Le #5309421
Oopps j'ai retrouvé...

Désolé

Cordialement

Jeff

"Jeff" news:ci8r0c$q73$
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




Jeff
Le #5309371
Rebonjour,

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$
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




Pierre CFI [mvp]
Le #5309341
bonjour
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"
Rebonjour,

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$
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








Raymond [mvp]
Le #5309331
Bonjour 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$
Rebonjour,

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$
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








Jeff
Le #5309321
Merci pour la réponse

Cordialement

Jeff

"Pierre CFI [mvp]" news:
bonjour
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" news:ci8sil$tjn$

Rebonjour,

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$
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












Publicité
Suivre les réponses
Poster une réponse
Anonyme