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

IHM Discussion :

Evénement sur keydown, touche Enter, donne drôle de résultats


Sujet :

IHM

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 69
    Par défaut Evénement sur keydown, touche Enter, donne drôle de résultats
    Bonjour à tous, voici mon code:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    Option Compare Database
     
    Private Sub Decrementer()
     
    'Si la valeur du champs Code Barre est valide
    If Not IsNull(Me.CodeBarre.Value) Then
     
            'Recherche et affichage de l'enregistrement correspondant au Code Barre entré
            With Me.RecordsetClone
     
                .FindFirst "[Code_Barre]=" & Me.CodeBarre.Value
     
                'Si enregistrement trouvé, Affichage de l'enregistrement
                If .NoMatch = False Then
     
                    Me.Bookmark = .Bookmark:
     
                End If
     
                'Si enregistrement trouvé
                If .NoMatch = False Then
     
                    'Plus grand que 0, décrémente de 1
                    If [Total_en_inventaire].Value > 0 Then
     
                    [Total_en_inventaire] = [Total_en_inventaire] - 1
     
                    'Sinon, message d'erreur
                    Else
     
                    MsgBox "Il n'y a plus de cette article en inventaire."
     
                    End If
     
                End If
     
                'Actualise le formulaire
                If .NoMatch = False Then
     
                    Me.Refresh
     
                End If
     
     
                'Si enregistrement non trouvé, Affichage message d'erreur
                If .NoMatch = True Then
     
                    MsgBox "Aucun enregistrement valide" & Chr(13) + Chr(10) & "Essayer un nouveau code barre."
     
                End If
     
            End With
     
        Else
            'Si champs texte vide, Message d'erreur
            MsgBox "Vous devez saisir un code barre."
     
        End If
     
        'Efface la valeur du champs texte et lui remet le focus
        Me.CodeBarre.Value = Null
        Me.CodeBarre.SetFocus
     
    End Sub
     
    Private Sub BTN_Decrementer_Click()
     
        Decrementer
     
    End Sub
     
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
     
        If KeyCode = vbKeyReturn Then
     
            Decrementer
     
        End If
     
    End Sub
     
    Private Sub Form_Load()
     
    'À l'ouverture, formulaire vide
    DoCmd.GoToRecord , , acNewRec
     
    End Sub
    Alors, mon problème est que quand j'appuie sur la touche "Enter", au lieu d'avoir ma requête Decrementation qui fait -1 à mon champs dans ma bd, il me sort le MsgBox comme si mon champs Code Barre de mon formulaire serait vide?

    La même requête Decrementation en appuyant sur le bouton fonctionne sans problèmes.

    Alors j'avoue que je n'y comprends rien? Quelqu'un peut m'aider à comprendre pourquoi il pense que mon champs est vide quand j'appuie sur "Enter", mais que si j'appuie sur le bouton tout fonctionne bien?

    Merci de votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 286
    Par défaut
    Bjr
    Cela vient probablement du fait que tant que tu n'es pas sorti de la rubrique
    Me.CodeBarre, sa propriété ".value" n'est pas affectée.

    Perso je résoud ce genre de problème (quand il m'arrive de le rencontrer) en donnant le focus à un autre champ du formulaire dans le code de test de la touche actionnée.
    Je ne sais pas si je suis bien clair, mais un petit exemple peut peut-être t'aiguiller

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
     If KeyCode = vbKeyReturn Then
        Me.essai.SetFocus 'un autre champ de mon formulaire
        Decrementer
    End If
    End Sub
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub CodeBarre_KeyDown(KeyCode As Integer, Shift As Integer)
     If KeyCode = vbKeyReturn Then
        Me.essai.SetFocus 'un autre champ de mon formulaire
        Decrementer
    End If
    End Sub
    Alors que quand tu cliques sur le bouton, cela enlève le FOCUS de ton champ 'CodeBarre' et la sa propriété '.value' est alors affectée

    Michel

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 69
    Par défaut
    Merci Orion,

    En changenant le focus de mon champs, ma fonction décrémenter fonctionne à merveille. Par contre, sa créé un autre petit bug.

    Je m'explique, quand je décrémente un produit, disons qui en reste 30 en inventaire. Donc, après ma première décrémentation, mon champs total indique 29. Jusque là super ça va bien!

    Je décrémente une autre fois, on serait sensé voir 28, et bien non, c'est un gros 1 qui apparait.

    Je décrémente une autre fois, et hop, 27 apparait. Donc au niveau de la fonction sa fonctionne impeccable. Par contre, niveau affichage des résultats, pourquoi il me sort un 1 une fois sur deux??

    Si vous avez une idée! :p

    Autre petite question, dans mon champs Code Barre, si au lieu d'inscrire un code je fais les touche : fleche haut, fleche bas, il est possible de naviguer à travers tous mes enregistrements. Quelqu'un connais un moyen de bloquer cette possibilité?

    Merci à tous!!!

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 69
    Par défaut
    Petite info supplémentaire.

    En faisant d'autres tests et tentatives pour résoudre mon problème, je me rends compte d'une chose.

    Mon enregistrement ne me montre pas 1 une fois sur deux, c'est complètement l'enregistrement suivant qui s'affiche. Donc, je décrémente l'enregistrement disons 33, et bien une fois sur 2 mon formulaire m'affiche l'enregistrement 34, mais sans la décrémenter.

    Si sa peut aider, still working sur une solution! :p

    Merci!

Discussions similaires

  1. [SWT] Binder le clic du bouton sur la touche Enter
    Par LeBabouin dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 10/10/2011, 11h34
  2. [XL-2003] pb sur formule qui ne donne pas le résultat escompté
    Par midge dans le forum Excel
    Réponses: 2
    Dernier message: 06/02/2011, 15h49
  3. Gestion de la touche Enter sur les webforms
    Par ag007 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 15/11/2006, 15h46
  4. Evenement "Appuyer sur la touche Enter"
    Par Benjy dans le forum C++Builder
    Réponses: 4
    Dernier message: 29/09/2005, 11h14
  5. [Listener] Réagir sur la touche ENTER
    Par Sarrus dans le forum Agents de placement/Fenêtres
    Réponses: 14
    Dernier message: 07/09/2005, 11h31

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