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 :

[DAO] problème avec Requery sur mon recordset


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 67
    Points : 37
    Points
    37
    Par défaut [DAO] problème avec Requery sur mon recordset
    Bonjour,

    Voilà mon problème:

    J'ai un recordset rst que j'aimerais mettre à jour en utilisant rst.Requery. Avant de faire appelle à Requery, je parcours chacun des enregistrements de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    While Not rst.EOF
            ...
            rst.MoveNext
    Wend
    rst.Requery
    J'ai volontairement omis qq lignes car j'ai remarqué que même sans celles-ci mon problème survient.

    Bref le problème c'est qu'en appelant .Requery sur mon recordset après la boucle, mon recordset ne contient plus qu'un seul enregistrement, le premier, alors qu'il devrait en contenir plusieurs...

    Quelqu'un a-t-il une idée d'où ça pourrait venir?

    Merci d'avance

  2. #2
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Salut,
    he oui, maintenant on va te demander les fameuses lignes omises et la ligne
    qui définit la source de données de ton recordset

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 67
    Points : 37
    Points
    37
    Par défaut
    Je m'y attendais mais c'est un peu compliqué... Les lignes qui font les modifications font appel a des fonctions que j'ai implémenté moi-même...

    Par contre, j'ai réussi à reconstituer le même problème sur une table Test toute simple. Voilà le code que j'ai mis dans la fonction Load du formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Load()
        Set rst = CurrentDb.OpenRecordset("SELECT * FROM Test")
        Set Me.Recordset = rst
        rst.Requery
        MsgBox rst.RecordCount
    End Sub
    Le nombre d'enregistrement renvoyé est 1 alors qu'il y en a 5 dans ma table, bizarre non?

    A noter que j'ai même pas eu besoin de mettre la boucle de parcours des enregistrements, le problème ne vient donc pas de là...

  4. #4
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    je ne vois pas à quoi sert le rst.requery c'est au niveau du form que tu veux
    appliquer la nouvelle source? Essaye (si je suis dans le vrai )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM Test")
        Set Me.Recordset = rst
        me.requery  ' simplement
        MsgBox rst.RecordCount
    d'après ce que je comprends.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 67
    Points : 37
    Points
    37
    Par défaut
    Je peux même encore plus simplifier le problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_Load()
        Set rst = CurrentDb.OpenRecordset("SELECT * FROM Test")
        MsgBox rst.RecordCount
    End Sub
    Même sans assigner le recordset, le message me retourne 1 seul enregistrement... C'est apparemment la requête qui pose problème. Dois-je choisir un type de recordset spécifique pour que ça marche? Bien sûr dans ce cas j'aurais pu ouvrir la table en utilisant un recodset de type dbOpenTable mais dans mon application c'est pas aussi simple...

  6. #6
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Load()  
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM Test")  
    rst.movelast
    MsgBox rst.RecordCount
     End Sub
    pour les autres codes l'assignation de me.recordset ne me parait pas correcte.
    Que veux-tu faire exactement. A explorer la piste de la propriété RecordSource du formulaire...

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 67
    Points : 37
    Points
    37
    Par défaut
    Bien vu!

    C'est effectivement le .Requery qui posait problème dans mon application. Je l'ai appelé sur le formulaire lui-même et ça fonctionne!

    En ce qui concerne le formulaire de test, c'est effectivement le .MoveLast qui manquait. Bizarre tout de même qu'il faille l'utiliser pour que .RecordCount retourne le bon nombre d'enregistrement non? Dans tous les cas le formulaire contient bien tous les enregistrements si on utilise .Requery sur le formulaire comme tu me l'as indiqué, c'est le principal.

    Merci d'avoir partagé tes lumières Faw

  8. #8
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    En fait il suffit de se positionner sur le recordset. Tu as le même résultat avec

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 67
    Points : 37
    Points
    37
    Par défaut
    C'est bon à savoir!

    Merci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/11/2013, 15h04
  2. Problèmes de calage sur mon site perso avec les nouveaux navigateurs
    Par safeerbandali dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 23/07/2011, 23h28
  3. Réponses: 5
    Dernier message: 17/11/2006, 17h49
  4. Problème avec OnDrawColumnCell sur un DBGrid
    Par n1portki dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/09/2005, 04h18
  5. Problème avec RDTSC sur K6-III
    Par le mage tophinus dans le forum x86 32-bits / 64-bits
    Réponses: 17
    Dernier message: 30/09/2003, 09h43

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