IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Question sur la déclaration de recordset


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 113
    Points : 124
    Points
    124
    Par défaut Question sur la déclaration de recordset
    Bonjour à tous,

    Attention, question de néophyte...

    Je fais de plus en plus appel aux recordset dans mes projets et il m'arrive parfois, dans une même procédure de faire appel à plusieurs recordsets successivement.

    Généralement, je déclare une variable (que je nomme rst) et lui affecte la table, la requête ou le code sql qui va bien.

    Quand j'ai fini de l'utiliser, je la ferme et la vide par les instructions suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rst.close
    set rst = nothing
    C'est parfois fastidieux notamment lorsque dans la même procédure, je vais devoir accéder à 5 ou 6 recordsets différents.

    Bref, faut-il fermer/vider la variable recordset à chaque utilisation ou est-il suffisant de le faire 1 seule fois à la fin de la procédure ?

    Merci pour vos conseils avisés !

    el

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Je ne pense pas qu'il y ai de réponse absolue.

    Personnellement je m'efforce d'utiliser mes ressources le moins longtemps possible donc je déclare, j'utilise et je libère au plus proche du point d'utilisation.
    Pour ma défense j'ai commencé à programmer à une époque, pas si lointaine, où on comptait les octets pour s'assurer de ne pas saturer la mémoire vive donc libérer les ressources était crucial.

    L'autre avantage c'est qu'il y a moins de chance que quelqu'un "détourne" ta ressource en cours de route pour l'utiliser. C'est moins vrai maintenant mais il m'est arrivé de voir un programme où la seule variable de type entier était nommée I et elle servait aussi bien d'index de boucle que de définition de ligne et elle était passée en paramètre modifiable ... un vrai cauchemar à maintenir.

    L'efficacité du code était aussi plus dépendant de la façon d'écrire ton code. Maintenant les compilateurs font pas mal d'optimisation pour toi.

    Je pense qu'il est important de libérer les ressources à un endroit logique pour un humain.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Bonsoir,

    Pour préciser les choses avec un exemple concernant la gestion de la mémoire dans le cas comme vous dites de l'utilisation de la même variable, ne peut-on pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set rs=db.openRecordSet("Table1")
     
    ' traitement 1
     
    Set rs=db.openRecordSet("Table2")
     
    ' traitement 2
    (
    Sans libérer la variable rs entre les 2, puisque il me semble que l'instruction Set rs=db.openRecordSet("Table2") implique une libération + une ouverture.

    Autrement dit un set rs = nothing n'est peut-être pas utile avant le Set rs=db.openRecordSet("Table2").

    Qu'en dites-vous ?
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur une déclaration de fonction
    Par deubelte dans le forum Débuter
    Réponses: 2
    Dernier message: 08/03/2010, 10h13
  2. Question sur la déclaration d'un paramètre lors de l'appel du procédure stockée
    Par th.garcia dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 26/06/2009, 13h58
  3. Question sur la déclaration de la classe
    Par Faiche dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 02/10/2008, 12h08
  4. question sur la déclaration des classes
    Par nina08 dans le forum Qt
    Réponses: 2
    Dernier message: 06/07/2008, 12h43
  5. question sur une déclaration de tableau
    Par isidore dans le forum C
    Réponses: 5
    Dernier message: 29/11/2006, 15h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo