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 :

GoToRecord inactif, comment annuler les actions qui suivent le code?


Sujet :

VBA Access

  1. #1
    Membre actif Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Points : 288
    Points
    288
    Par défaut GoToRecord inactif, comment annuler les actions qui suivent le code?
    Bonsoir,

    dans une méthode BeforeUpdate() je teste la validité d'un de mes champs et je veux que si le résultat obtenu est faux, alors mon focus retourne sur l'enregistrement à enregistrer, et sur le champ voulu. Pour cela, j'ai essayé le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        rc = Me.CurrentRecord
        If re=1  Then                   'test règle de validité
            MsgBox "erreur, retour sur ce  champ pour modif"
            DoCmd.GoToRecord , , acGoTo, rc
            Me.Référence_facture.SetFocus
        End If
    mais mes deux dernières lignes ne fonctionnent pas, elles sont exécutées,puis annulées par l'évènement du bouton sur lequel j'ai cliqué , par exemple si je passe d'un enregistrement à un autre.
    Comment faire donc pour rendre réellement actifs ces deux méthodes soit empêcher qu'un autre "code" ne s'exécute automatiquement ensuite?

    merci d'avance pour votre aide!
    cordialement
    schwarzy2

  2. #2
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Hello !

    Tu n'as rien d'autre comme code avec ce bouton ?
    J'ai fait l'essai chez-moi, ton code fonctionne parfaitement... si on se contente de ce que tu as collé dans ton post...

  3. #3
    Membre actif Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Points : 288
    Points
    288
    Par défaut
    bonsoir bernardmichel, merci de te pencher sur mon problème!
    non je n'ai rien d'autre comme code sur ce bouton mais le retour sur le bon enregistrement et le champ focus ne marchent pas tout le temps.
    Par exemple:si je modifie le champ Référence_facture et que je change d'enregistrement en cliquant sur un bouton de déplacement d'enregistrements, eh bien, je n'ai pas ce que je veux.
    Mais si je change la Référence_facture et que je déplace mon focus sur un autre champ, puis qu'ensuite je change d'enregistrement: là j'ai ce que je veux.
    c'est pour ça que je pense qu'il faudrait que j'empêche toute action après le code.
    merci pour ton aide!
    cordialement
    schwarzy2

  4. #4
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Hello !

    T'es-t'il possible d'alléger ta MDB (en laissant une ou deux données pour les tests) de la compresser et de la joindre à ton prochain post. Je pourrai ainsi tester directement, sans que l'on se perde en conjectures...

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut à tous,

    schwarzy2 vraiment j'ai du mal à comprendre.
    tu as mis sur quel événement BeforeUpdate() ?
    sur le form ou la zone de texte?

    je comprend pas l'utilité de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.GoToRecord , , acGoTo, rc
    puisque si la condition n'est pas valide tu n'a qu'a pas sortir du champ ou de l'enregistrement: pas de changement d'enregistrement donc pas besoin de se repositionner.

    quel est la règle de validité?

  6. #6
    Membre actif Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Points : 288
    Points
    288
    Par défaut
    mon code est sur BeforeUpdate() du form, ma règle de validité est d'empêcher un doublon sur le champ Référence_facture, et je voudrais bien ne pas sortir de mon enregistrement mais si ma mise à jour se fait justement quand je passe à un autre enregistrement, eh bien il y a la règle qui s'applique, un message apparait, et après malgré mon code, je passe qd même à un autreenregistrement.
    voici ma base exemple, c'est le form facts et merci pour votre aide!

  7. #7
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    tu n'as qu'a mettre en mode édition de table sur le champ 'Référence_facture' dans l'onglet général, la propriété 'indexé' : Oui sans doublons.

    c'est suffisant pour bloquer l'enregistrement.

  8. #8
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    je ne suis pas parvenu à ouvrir le form facts: 'Microsoft Access a rencontré un problème et doit fermer.'

  9. #9
    Membre actif Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Points : 288
    Points
    288
    Par défaut
    bah mince alors...attends je vais essayer un autre envoi
    et pour le coup du champ indexé je le connais ce truc là, mais moi je veux des messages personnalisés, c'est pour ça que je fais ça, exigeant..je sais...
    voilà j'espere qu'avec cette base là ça marchera mieux.

  10. #10
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    ca marche mieux j'arrive à ouvrir facts mais je n'arrive pas à enregistrer les modifs...

    essaie simplement un cancel=true.
    et met dans l'événement du champ et pas du form.
    ca devrait aller mieux.

  11. #11
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Hi !

    Si tu mets le code ci-dessous sur l'évènement "Après MAJ" du control "Référence_facture", tu obtiens un message d'erreur en sortant de ton control.
    Cela évitera le "désespoir" de collègues qui auront saisi tout le form pour se rendre compte que le numéro ne concorde pas... et qu'ils ne savent pas quoi inscrire dans ce champ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Référence_facture_AfterUpdate()
        If (Not IsNull(DLookup("[ref_facture]", "Table_devis", "[ref_facture] ='" & Me.Référence_facture & "'"))) Then
            MsgBox "Cette référence facture existe déja, merci d'en prendre une autre."
            Me!Référence_facture = ""
            SendKeys "+{TAB}"
        End If
    End Sub

  12. #12
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    oui bernardmichel, c'est ce que recherche schwarzy2, se repositionner sur l'entrée erronné.

    mais à ce propos tu m'as ouvert les yeux sur qqc:
    la saisie de Référence_facture doit être unique, tu imagines si le pauvre gars il n'arrive pas à trouver un numéro libre?

    ben oui schwarzy2 c'est pour cela que Référence_facture sont, en générale, généré automatiquement.

  13. #13
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    La possibilité qu'il y a en plus avec ce mode de faire est que le N° de facture peut devenir "parlant" (Exemple: left(NomClient,3 & format(date,"ddmmyy")... ou quelque chose qui rappelle le jour de la facture ainsi que le nom du client. On peut évidemment faire deux controls pour cela
    1. Id Facture : NuméroAuto
    2. N°Facture : Que l'on compose à l'envi

    C'est une facilité que mes clients apprécient beaucoup !

  14. #14
    Membre actif Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Points : 288
    Points
    288
    Par défaut
    oui c'est celle que j'ai aussi! J'ai 2 champs: Référence_facture et ref_facture!
    ref_facture étant un num_auto! pour ce qui est de vos solutions, je n'ai pas la possibilité de les tester maintenant, la base est chez moi..et je n'y suis pas!
    mais dès que je rentre, je les teste, merci beaucoup!!!

  15. #15
    Membre actif Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Points : 288
    Points
    288
    Par défaut
    ben...ça ne marche pas si l'on passe à l'enregistrement suivant
    j'ai mis le code derrière la fonction mise à jour du champ et non du form, et tout se passe bien si je reste dans l'enregistrement présent, mais si je modifie mon champ "Référence_facture" (mon focus est donc sur ce champ) et que je clique ensuite sur le bouton "suivant" pour passer à l'enregistrement suivant, si ma Référence est un doublon, mon message s'affiche, ...et je passe à l'enregistrement suivant!

  16. #16
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    C'est peut-être une connerie que je vais te dire mais dans ce genre de cas là, où il faut absolument sécuriser l'intégrité des données, je prends d'autres précautions, entre-autre de supprimer les boutons de navigation pour les remplacer par des boutons que je peux contrôler. Dès lors, le bouton "Suivant" et "Nouveau" sont désactivés tant que la condition principale n'est pas remplie.

  17. #17
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Pour imager mon propos, voici une capture d'écran de l'un des forms d'une de mes applics.

    La disposition des boutons du haut se retrouve à l'identique sur TOUS mes forms et de là, je gère tout en terme d'intégrité les données saisies dans mon application.

  18. #18
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    ... le même après avoir cliqué sur le bouton "Modifier"
    Lorsque le client ouvre le form, tous les controls sont enabled = false et locked = true. Le fait de cliquer - par exemple - le bouton "Modifier" inverse les choses mais rend également enabled = false tous les autres boutons pouvant présenter un danger pour l'intégrité des données.

    Voilà, c'est peut-être une piste pour toi également ?

  19. #19
    Membre actif Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Points : 288
    Points
    288
    Par défaut
    ok merci bernardmichel, je vais faire ça, je pense que ça va effectivement résoudre une bonne partie de mes problèmes! J'ai souvent ce genre de difficultés de vérification des données lors de passage à un autre enregistrement.
    Merci donc pour ton conseil, il résoud de nombreux problèmes!
    et merci également à toi vodiem, pour ton aide!


    Cordialement
    schwarzy2

  20. #20
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Tu peux aller voir , c'est un petit code sympa qui évite de nombreuses lignes de code...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/10/2006, 18h14
  2. Réponses: 11
    Dernier message: 03/09/2006, 21h25
  3. Réponses: 5
    Dernier message: 31/03/2006, 18h12
  4. [c#] comment annuler l'action d'un requireValidator
    Par shams dans le forum ASP.NET
    Réponses: 3
    Dernier message: 07/07/2005, 12h03
  5. Comment désactiver les actions automatiques de Windows ?
    Par j-phi dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 06/01/2005, 12h53

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