Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fermer recordset avant sa reutiisation ?

3 réponses
Avatar
LeGoldo
Travailleurs du dimanche (et des autres jours ,-), bonsoir,

Dans une fonction, je cr=E9e un recordset que j'alimente plusieurs fois
de suite, apr=E8s utilisation fonctionnelle, par un

db.openrecordset( "SELECT * FROM Ma_Table WHERE [Mon_Champ] =3D " &
sMonCrit=E8re & ";" )

sMonCrit=E8re =E9tant diff=E9rent =E0 chaque appel.

Dois-je fermer mon recordset entre chaque alimentation ?
Quelles cons=E9quences si je le fais ou pas ?

Subsidairement, serait-il plus rentable, en terme d'acc=E8s et de
gestion m=E9moire, d'utiliser directement un filtre sur la table sachant
que les enregistrements ne sont pas modifi=E9s ?

Merci de vos r=E9ponses et ...
... =E0 vous lire !

Cordialement,

LeGoldo

3 réponses

Avatar
Argyronet
Bonjour,

Il faut fermer le Recordset et le mettre à Nothing.
Vous pouvez aussi créer une requête filtrée où vous paramétrez dynamiquement
la propriété SQL de l'objet QueryDef sollicité.
Votre filtre deveint alors dynamique et il n'y a plus besoin de Recordset.
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442 )
Empaquetage avec Runtime 2007 :
http://argyronet.developpez.com/office/access/runtime/2007/


"LeGoldo" a écrit :

Travailleurs du dimanche (et des autres jours ,-), bonsoir,

Dans une fonction, je crée un recordset que j'alimente plusieurs fois
de suite, après utilisation fonctionnelle, par un

db.openrecordset( "SELECT * FROM Ma_Table WHERE [Mon_Champ] = " &
sMonCritère & ";" )

sMonCritère étant différent à chaque appel.

Dois-je fermer mon recordset entre chaque alimentation ?
Quelles conséquences si je le fais ou pas ?

Subsidairement, serait-il plus rentable, en terme d'accès et de
gestion mémoire, d'utiliser directement un filtre sur la table sachant
que les enregistrements ne sont pas modifiés ?

Merci de vos réponses et ...
.... à vous lire !

Cordialement,

LeGoldo



Avatar
LeGoldo
Bonjour,

Il faut fermer le Recordset et le mettre à Nothing.


Ayant oublié de dire que le recordset est alimenté dans une boucle
incluse dans la fonction qui le crée,
est-ce bien raisonnable ?-)

Vous pouvez aussi créer une requête filtrée où vous paramétrez dynamiquement
la propriété SQL de l'objet QueryDef sollicité.
Votre filtre deveint alors dynamique et il n'y a plus besoin de Recordset .


J'ai aussi oublié de préciser que le recorset ne ne sert qu'à une
lecture séquencielle,
... ?-)

A+

LeGoldo
Avatar
Argyronet
Oui, c'est sûr, si vous ne dîtes pas tout ;o
Je pense qu'il faut aborder la problématique autrement.
Donc vous allez avoir un jeu d'enregistrements avec la correspondance de
l'ensemble des critères que vous pouvez passer en bloc avec un IN() par
exemple...
Vous créez alors dynamiquement et comme dit précédemment une requête fondée
sur ces critères...
Vous n'aurez qu'à ouvrir le RS à ce moment là et consulter les
enregistrements comme vous l'entendez.
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442 )
Empaquetage avec Runtime 2007 :
http://argyronet.developpez.com/office/access/runtime/2007/


"LeGoldo" a écrit :

Bonjour,

> Il faut fermer le Recordset et le mettre à Nothing.
Ayant oublié de dire que le recordset est alimenté dans une boucle
incluse dans la fonction qui le crée,
est-ce bien raisonnable ?-)

> Vous pouvez aussi créer une requête filtrée où vous paramétrez dynamiquement
> la propriété SQL de l'objet QueryDef sollicité.
> Votre filtre deveint alors dynamique et il n'y a plus besoin de Recordset..
J'ai aussi oublié de préciser que le recorset ne ne sert qu'à une
lecture séquencielle,
.... ?-)

A+

LeGoldo