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

  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

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 85
    Par défaut Merci pour le conseil.
    Je vais essayer de trouver le bon chemin d'accès grâce à ce que tu m'as dit. Encore merci.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Par défaut
    Bonjour, je suis tombée sur ce post dans mes recherches sur le forum. Ma question portant sur la même chose, si j'ai bien compris, dans mon cas, si je veux, quand je fais une nouvelle saisie dans mon form de saisie, que cela soit se retrouve immédiatement dans mon formulaire de consultation / navigation, sans être obligée de fermer ma base et de l'ouverture pour voir mon enregistrement, je dois faire en fait un Refresh...

    De même, si dans mon form de consult, je fais des modif sur un enregistrement existants que je veux que ça apparaisse immédiatement...


    Merci pour vos précisions.

    Cordialement

  9. #9
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 029
    Par défaut
    Bonjour, Nessie37

    Sache qu'avec des tables et des relations correctement faites, Access valide par défaut automatiquement.

    Dans ton cas il faut remettre à plat tes tables et tes relations (comme je te l'ai déjà suggéré).

    De plus, pour la tenue du forum, ce n'est pas terrible de reprendre un vieux post.

    Bon courage

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Par défaut
    Bonjour Micniv

    Le problème c'est que j'ai peur de tout chambouler.
    Je ne suis pas une experte, j'ai créé mes tables de façon scolaire et je ne vois pas où je pêche.

    Pour la réouverture du vieux post, je ne savais pas que cela posait un problème. Je ne me voyais pas reposter alors que cela avait déjà été posé.

    Mais si cela n'est pas conforme alors je ne le referai plus

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Par défaut
    Citation Envoyé par micniv Voir le message
    Bonjour, Nessie37

    Sache qu'avec des tables et des relations correctement faites, Access valide par défaut automatiquement.

    Je reviens sur tes propos car mes deux ss -form (saisie et consult) sont basés sur la même table. Je n'ai pas ce problème avec mes autres bases.
    Une fois, saisie ou modifiée, cela apparaît automatiquement....

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