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

VBA Access Discussion :

Refresh et Requery.


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 85
    Par défaut Refresh et Requery.
    Bonjour,

    Pourriez-vous m'expliquer de manière très simple quelle est la différence entre Refresh et Requery ?

    Je vous remercie d'avance.

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Pour faire TRES simple. Soit un formulaire et sa source de données, les 2 méthodes s'appliquent au formulaire :
    - Refresh met à jour la source de données des modifications saisies dans le formulaire;
    - Requery remet à jour le formulaire en réinterrogeant la source de données ( les données ou la requête ont pu changer)

    La réalité est pus hard mais pas très éloignée.

    PGZ

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 85
    Par défaut Si je comprends bien.
    Pour être sûre d'avoir compris, prenons l'exemple de ma base de données.

    J'ai un sous-formulaire "SF1" qui affiche la liste des salariés d'une entreprise.

    Pour indiquer qu'un salarié appartient à une entreprise, une case "coche1" dans le formulaire principal est décochée. Pour indiquer qu'un salarié n'appartient plus à une entreprise, "coche1" est cochée.

    Par exemple, le "SF1" affiche trois salariés pour l'entreprise CHEVAL : DUPOND, DURANT et DUCHEMIN. Si je coche "coche1" dans la fiche de DUCHEMIN, cela veut dire qu'il ne travaille plus chez CHEVAL.

    Je souhaite que si l'utilisateur coche "coche1", "SF1" se mette automatiquement à jour.

    S'agit-il bien d'un Requery ? Si oui, comment le mettre en oeuvre ?

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Re,

    Si, à mon tour, j'ai bien compris, les cases à cocher sont dans le formulaire et tu veux mettre à jour le sous formulaire.
    Si c'est ca (...), une procédure évènementielle après mise à jour de de la case à cocher qui fait un .requery sur le sous-formulaire.
    Suivant la structure de tes tables et de ton formulaire, tu peux être obligée de faire d'abord un Refresh du formulaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub MaCaseACocher_AfterUpdate
    me.Refresh
    Me.ConteneurSf.Requery
    End sub
    Mais je n'ai peut-être rien compris...

    Bon courage,

    PGZ

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 85
    Par défaut Encore une petite précision.
    Bonjour,

    J'ai essayé ce code en l'appliquant à ma case à cocher. Je pense que je ne suis pas loin mais j'ai encore un petit souci.

    En fait, il y a plusieurs niveaux de hiérarchie dans mes formulaires et sous-formulaires. Ma case à cocher "coche1" est dans un sous-formulaire "SF1" qui lui-même est dans le formulaire principal "F1" contenu dans l'onglet 1. Mon sous-formulaire à actualiser "SF2" est dans un autre sous-formulaire "SF3" contenu dans l'onglet 2.

    Quand j'applique le code que tu m'as donné en mettant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub coche1_AfterUpdate()
      Me.Refresh
      Me.SF2.Requery
    End Sub
    Access me répond que SF2 est un membre de méthode ou de données introuvable. Je suppose que c'est parce qu'il n'est pas situé dans le même formulaire que ma case à cocher.

    Je vous remercie d'avance pour vos conseils.

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    C'est à toi de trouver le "chemin" de ton objet. Si tu ne maîtrise pas bien la structure de ton formulaire, voici une méthode simple.
    Par exemple, ton code est dans SF1 et tu veux atteindre SF2, les 2 SF sont placés dans F.

    Tu vérifies que tu es bien dans SF1Tu essaies de trouver le formulaireSi c'est bon, tu peux maintenant redescendre à SF2, et tu vérifies
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Me.Parent.SF2.NAme
    Si tu as atteint le contrôle de SF, alors tu peux écrireTu vois le truc. A toi maintenant de trouver le chemin de ton SF2 depuis SF1.

    Bon courage,

    PGZ

Discussions similaires

  1. [AC-2010] Rafraichissement Requery,Refresh Scintillement Onglet
    Par bachintosh dans le forum IHM
    Réponses: 8
    Dernier message: 20/07/2011, 16h58
  2. [AC-2003] Refresh or Requery ?
    Par maxireussite dans le forum IHM
    Réponses: 3
    Dernier message: 28/07/2009, 18h36
  3. Probleme de Refresh avec TQuery et DBGrid
    Par insoo dans le forum C++Builder
    Réponses: 7
    Dernier message: 25/11/2003, 17h20
  4. Réponses: 2
    Dernier message: 23/12/2002, 20h34
  5. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 09h38

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