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 :

enregistrement sélectionné sur souris appuyée : impossible?


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 18
    Par défaut enregistrement sélectionné sur souris appuyée : impossible?
    Bonjour. J'ai un sous-formulaire.

    Lorsque je clique en maintenant enfoncé la souris sur le sous-formuliare, j'aimerais récupérer le numéro de l'enregistrement sur lequel j'ai cliqué pour pouvoir réaliser une action (cette action s'annulera lorsque je relâcherai le bouton de la souris).

    Problème : la propriété CurrentRecord ne marche pas pour faire cela. Elle est correctement actualisée lors de l'évenement OnClick mais pas sur l'évenement sur souris appuyée qui précède.

    Pourtant, dans le sous formulaire, au déclenchement de l'évenement sur souris appuyée, la ligne cliquée est bien sélectionnée et s'affiche en noir.
    Il y a donc peut être un moyen de récupérer ce numéro d'enregistrement. Mais je n'ai rien trouvé qui convienne.

    Quelqu'un a-til une solution à ce problème a priori ardu ?

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 193
    Par défaut
    Et avec les événements reception le focus et perte du focus?

  3. #3
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    slt,

    la ligne cliquée est bien sélectionnée et s'affiche en noir.
    alors regarde les propriétés du formulaire qui commencent par sel
    il foit y avoir seltop ou selstart ou quelque chose comme ça qui pourrait te servir

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 18
    Par défaut
    merci pour ces réponses pertinentes, je regarderai ça ce we, pas possible auj.

  5. #5
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 133
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Tu peux aussi jeter un oeil sur ce tutoriel qui est en mesure de t'apporter quelques compléments d'information pour ta question...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  6. #6
    Faw
    Faw est déconnecté
    Membre Expert

    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
    Par défaut
    Salut,
    Il me semble que l'événement OnCurrent (sur activation) se déclanche dès qu'on
    appuie sur la souris...Utilise donc cet événement.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 18
    Par défaut
    j'ai testé toutes ces suggestions.

    Apparemment, aucune ne fonctionne.

    Les évenements GotFocus et cie ne sont pas utiles pour faire ça, surtout lorsque le sous-formulaire ne perd pas le focus entre deux clics.

    L'évenement Current ne se déclenche que lorsque la souris est relâchée.

    Le tutoriel est sympa mais n'apporte pas plus que l'idée la plus intéressante qui avait déjà été citée : la propriété selTop.

    Franchement, j'y ai cru, selTop donne en effet le numéro de la première ligne sélectionnée (en noir) du carré de sélection (donc de la ligne sélectionnée lorsqu'il y en a qu'une). C'est tout à fait ce qu'il me fallait.
    Et bien, cette propriété n'est pas actualisée lors de l'évenement "sur souris appuyé" (Form_MouseDown) qui semble se produire avant tout autre chose.

    Je ne vois pas donc pas comment faire ça avec access et vba, qui m'apparait limité (comme souvent d'ailleurs...) dans ce cas. Qu'on m'arrete si je me trompe (ce que j'espère).

    Donc pour ce détail d'egonomie, je procède en deux étapes, d'abord sélection de la ligne puis appui prolongé sur la souris pour créer l'évenement. On peut aussi utiliser un bouton spécifique.

  8. #8
    Faw
    Faw est déconnecté
    Membre Expert

    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
    Par défaut
    Citation Envoyé par irie
    L'évenement Current ne se déclenche que lorsque la souris est relâchée.
    Faux. Teste le comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Current()
            MsgBox Me.MonChamp
    End Sub
    tu verras que msgbox apparaît Avant de relâcher le mulot
    MAIS, current ne se déclanche qu'à chaque changement d'enregistrement.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 18
    Par défaut
    Citation Envoyé par Faw
    tu verras que msgbox apparaît Avant de relâcher le mulot
    Je viens de refaire le test et chez moi, l'évenement se déclenche après que la souris soit relâchée. J'ai access2000, peut être que sur ta version, c'est différent.
    Et effectivement dans tous les cas, comme tu le soulignes, current se déclenche à chaque changement d'enregistrement donc ça ne convient pas.
    Merci qd même.

  10. #10
    Faw
    Faw est déconnecté
    Membre Expert

    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
    Par défaut
    Bonsoir,
    suis sous office11.
    Je viens de faire un test avec le code de l'aide sur l'événement MouseDown. Mis au niveau formulaire, le code ne fonctionne pas
    On dirait que l'évènement ne se déclanche pas...
    Par contre, mis au niveau d'un champ du form, ça marche.

    Maintenant, sur Current j'ai mis une msgbox. Cela donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Private Sub Form_Current()
     MsgBox Me.CurrentRecord
    End Sub
     
     
    Private Sub Monchamp_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
     
        If Button = acLeftButton Then
            MsgBox "You pressed the left button."
        End If
        If Button = acRightButton Then
            MsgBox "You pressed the right button."
        End If
        If Button = acMiddleButton Then
            MsgBox "You pressed the middle button."
        End If
     
    End Sub
    Résultat quand j'appuie sur le bouton gauche au niveau du contrôle, et dans cet ordre:

    La valeur de CurrentRecord
    "You pressed the left button."
    Donc dans ma version, Current est pris en charge avant la souris.

    je rappelle que MouseDown n'a fonctionné qu'au niveau Contrôle, pas formulaire.
    Si ça peut t'aiguiller.

  11. #11
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    En même temps, y a surement moyen de faire autrement. C'est pas vraiment une limitation mais plutot une spécfication.

    Si le changement d'enregistrement n'est effectif qu'une fois la souris relachée, tu n'y peux pas grand chose. C'est comme ça. Et forcément ça convient à ceux qui ont besoin que ça ne soit déclenché qu'aprés cet évenement. Programmer, c'est savoir s'adapter aux spécifications du langage utilisé et ne pas parler de limite quand il n'y en a pas

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 18
    Par défaut
    ok j'ai compris.
    Belle perspicacité de ta part.

    Effectivement, l'évenement Form_Current peut se produire immédiatement lorsque le souris est enfoncée, comme tu l'as décrit. J'ai fait l'expérience et il apparait que Form_current se produit sur bouton de la souris enfoncé uniquement lorsque la souris est placée sur un champ.

    Moi, jusque là, je plaçais le curseur sur les cases grises à gauche de chaque ligne (je suis en mode feuille de données), là où il y a le selecteur d'enregistrements. Tu peux le vérifier pour qu'on soit d'accord. Dans ce cas, l'evenement Form_Current ne se déclenche que lorsque la souris est relâchée. C'est assez étonnant.

    Donc ce détail n'est pas un problème de version.

    Ce qui est vraiment intéressant, c'est qu'en utilisant l'évenement MouseDown sur un champ comme tu l'as fait, la propriété SelTop est accessible et actualisée correctement (lié au fait que dans ce cas, Form_Current a eu lieu).
    Donc, de cette façon là (souris enfoncé sur un champ, celui de l'identifiant par exemple), il est possible de récupérer les informations de l'enregistrement sur lequel on maintient la souris enfoncée, pour réaliser un traitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Private Sub n°_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
     
      Dim rs As DAO.Recordset 
      Set rs = Me.RecordsetClone
      With rs
        If Not .BOF And Not .EOF Then
          rs.MoveFirst
          rs.Move (Me.SelTop - 1)
     
          Dim id_intervention As Integer
          id_intervention = rs.Fields("id_intervention").Value 
       End If
      End With
     
    end Sub
    Donc de cette façon, mon problème de base peut être résolu.

    Merci bcp.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 18
    Par défaut
    merci tofalu pour la nuance apportée, je suis ok, c'est une spécification.
    Je voulais dire que VBA est tellement spécifié qu'on ne peut pas faire tout ce qu'on veut, sans jugement de valeur -ou alors je n'ai pas pris le temps de voir comment il faut faire -> tu peux m'indiquer où voir ça.

    Dans mon sens, je voulais dire qu'une façon plus élégante d'obtenir le résultat aurait été de pouvoir (re)définir les évenement d'actualisation du formulaire par exemple.

    En VB, il faut s'adapter comme tu dis.

    Vraiment ne te braques pas et sans vouloir lancer un débat, j'ai pris l'habitude de pouvoir explorer et étendre le code de swing en java et VBA me semble parfois etriqué pour arriver exactement à ses fins.
    Cependant, réaliser une interface graphique avec VB reste de loin plus rapide , plus facile et très efficace pour la plupart des besoins courants.

  14. #14
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Vraiment ne te braques pas et sans vouloir lancer un débat, j'ai pris l'habitude de pouvoir explorer et étendre le code de swing en java et VBA me semble parfois etriqué pour arriver exactement à ses fins.
    Cependant, réaliser une interface graphique avec VB reste de loin plus rapide , plus facile et très efficace pour la plupart des besoins courants.
    Tout à fait d'accord avec toi. VBA manque de souplesse, mais trés simple. Je pense que c'est le prix à payer pour avoir quelque chose de simple. Seulement des fois comme tu le dis, on aimerait bien pouvoir faire plus

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

Discussions similaires

  1. supprimer l'enregistrement sélectionné sur DBgrid
    Par rinuom99 dans le forum Débuter
    Réponses: 5
    Dernier message: 30/04/2012, 22h50
  2. Stopper l'enregistrement du microphone en appuyant sur une touche
    Par bachintosh dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 09/01/2012, 12h07
  3. [AC-2007] Evénement sur clic et Sur sourie appuyée ou relâchée
    Par miamou dans le forum IHM
    Réponses: 3
    Dernier message: 11/12/2009, 13h36
  4. Réponses: 3
    Dernier message: 02/09/2008, 18h13
  5. Réponses: 5
    Dernier message: 01/08/2006, 14h39

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