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 :

Problème de gestion de la position d'un enregistrement sur un formulaire


Sujet :

VBA Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Points : 146
    Points
    146
    Par défaut Problème de gestion de la position d'un enregistrement sur un formulaire
    Bonjour, alors j'ai un formulaire qui affiche en mode colonne des infos contenues dans ma base. Sous cette colonne, j'ai créé 4 boutons qui permettent d'afficher :
    B1 : le premier enregistrement,
    B2 : l'enregistrement précédant,
    B3 : l'enregistrement suivant,
    B4 : le dernier enregistrement avec les codes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DoCmd.GoToRecord , , acFirst
    DoCmd.GoToRecord , , acPrevious
    DoCmd.GoToRecord , , acNext
    DoCmd.GoToRecord , , acLast
    A côté de ces boutons j'ai un controle textbox dans lequel j'affiche la position de l'enregistrement courant par rapport au nombre total d'enregistrement, du style 1 sur 7. Pour cela j'ai cette formule dans mon textbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[CurrentRecord] & " sur " & Compte(*)
    Au chargement de la page, cela m'indique bien 1 sur 7. Mais lorsque je clique sur le bouton suivant, ça reste à 1 sur 7, lorsque je reclique ça me mets 2 sur 7, etc ... J'arrive au 7° enregistrement, et l'affichage en est donc à 6 sur 7 ! Si je clique sur B2, on redescend à 5 sur 7, je reclique, ça remonte à 6 sur 7, je reclique ça reviens à 5 sur 7, etc ... Bref j'arrive au 1° enregistrement et l'affichage en est à 2 sur 7 !! Il y a toujours un décalage.

    De plus, si au chargement de la page je clique directement sur B4 , l'affichage se mets bien sur le dernier enregistrement mais la textbox laisse 1 sur 7...

    Je précise que pourtant cela détecte bien la position de l'enregistrement, puisque j'ai codé pour que les boutons "suivant" ne soient pas visibles si on est sur le dernier enregistrement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If [CurrentRecord] = Form.RecordsetClone.RecordCount Then
            B3.Visible = False
            B4.Visible = False
       End If
    et idem pour les boutons "précédent" si on est sur le premier, et qu'ils disparaissent bien lorsqu'on y est ...

    Avez-vous une idée d'où viennent mes problèmes ? Un mauvais codage de la formule pour récupérer l'enregistrement actuel et/ou le nombre d'enregistrement ? Un rafraichissement forcé de la textbox à chaque action de boutons ? Merci d'avance.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Points : 146
    Points
    146
    Par défaut
    Bon j'ai résolu mon problème tout seul, je poste quand même ma technique pour ceux que ça intéresse.

    Au lieu de mettre une formule dans ma textbox "compteur", j'ai choisi l'affichage par VB. Au chargement de la page je lui assigne cette valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Compteur.Value = [CurrentRecord] & " sur " & Form.Recordset.RecordCount
    ce qui me donne un affichage 1 sur 1 au premier lancement. C'est normal, il faut forcer la lecture du dernier enregistrement pour avoir la valeur réelle du nombre d'enregistrement. Mais également penser, dans mon cas, à remettre l'affichage sur le premier enregistrement, ce qui nous donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Form.Recordset.MoveLast
    Form.Recordset.MoveFirst
    Me.Compteur.Value = [CurrentRecord] & " sur " & Form.Recordset.RecordCount
    Au chargement de la page on a bien maintenant 1 sur 7, et pour chaque bouton je répète la phrase de comptage de la position, ce qui me donne 2 sur 7, 3 sur 7 ...

    Et voilà !

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

Discussions similaires

  1. Problème de gestion de positions avec contraintes
    Par iGwendal dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/03/2010, 16h07
  2. Position de l'enregistrement dans un formulaire
    Par guidzit dans le forum IHM
    Réponses: 5
    Dernier message: 14/08/2008, 07h55
  3. problème de gestion de fenêtre
    Par clemsouz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/11/2004, 14h35
  4. Problème de gestion fichiers
    Par glutock dans le forum ASP
    Réponses: 2
    Dernier message: 08/04/2004, 11h55
  5. [TFrame] Problème de gestion du OnMouseDown avec une Frame
    Par xherault dans le forum Composants VCL
    Réponses: 5
    Dernier message: 23/05/2003, 15h35

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