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 :

Problème avec Commande Annuler exécutée avant MAJ


Sujet :

IHM

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut Problème avec Commande Annuler exécutée avant MAJ
    Bonjour,

    Pour exemple, prenons une table toute simple avec 3 champs :

    [Ma table]
    N° auto (clé primaire)
    Champ1 (texte avec les propriétés null interdit et vide interdit)
    Champ2 (texte)


    Faisons en un formulaire en mode feuille de données...
    Affichage uniquement des champs 1 et 2.

    En fait je souhaite, pouvoir supprimer un enregistrement lorsque l'on supprime le texte contenu dans le champ1.

    Donc j'ai mis une macro sur le champ1 sur l'évènement "Avant MAJ" que voilà...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exécuter commande --> Annuler '''ici ça bug !!
    Exécuter commande --> Sélectionner enregistrement
    Exécuter commande --> Supprimer l'enregistrement
    avec pour condition dans la macro :
    [Champ1].[Texte] = ""





    En fait la commande "annuler" ne fonctionne pas...
    En fait il faut annuler avant de pouvoir supprimer l'enregistrement, sinon ça ne marche pas.
    L'envoi de ESCAPE par sendkey ne fonctionne pas non plus...
    Dans les 2 cas rien ne se passe.
    Pourquoi ?
    Comment faire pour annuler ?
    Le reste après fonctionne...



    Des idées ?

    Merci

    Dams'

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    Comment gères-tu
    Exécuter commande --> Annuler
    avec Cancel=True ?

    N'aurait-il pas mieux faire ça Après Mise A Jour ?

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par fgiambelluco Voir le message
    Bonjour
    Comment gères-tu
    avec Cancel=True ?

    N'aurait-il pas mieux faire ça Après Mise A Jour ?
    Dans la macro. Avec pour action "Exécuter Commande" et comme argument "Annuler"


    J'ai aussi essayé avec le code VBA suivant.. mais ça ne marche pas non plus...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Champ1_BeforeUpdate()
     
    Undo
     
    End Sub

    et non après mise à jour ça ne marche pas, puisque je souhaite gérer le cas où le champ1 est vide... or j'interdis que le champ soit vide dans ma table... donc "après MAJ" n'est pas possible !

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re bonjour
    Essaye plutôt ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Champ1_BeforeUpdate(Cancel As Integer)
        If IsNull(Me.Champ1) Then 'teste si le champ est null
            Cancel = True 'annule l'événement de mise à jour
            Me.Undo ' annule la modification de l'enregistrement
            DoCmd.RunCommand acCmdDeleteRecord ' supprime l'enregistrement
        End If
    End Sub
    Bon courage

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re
    On peut compléter le code précédent de façon à vérifier que l'on n'est pas sur un nouvel enrgistrement avant de supprimer->sinon plantage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            If Me.NewRecord = False Then ' vérifie qu'on n'est pas sur un nouvel enregistrement avant de supprimer
                DoCmd.RunCommand acCmdDeleteRecord ' supprime l'enregistrement
            End If

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par fgiambelluco Voir le message
    Re bonjour
    Essaye plutôt ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Champ1_BeforeUpdate(Cancel As Integer)
        If IsNull(Me.Champ1) Then 'teste si le champ est null
            Cancel = True 'annule l'événement de mise à jour
            Me.Undo ' annule la modification de l'enregistrement
            DoCmd.RunCommand acCmdDeleteRecord ' supprime l'enregistrement
        End If
    End Sub
    Bon courage
    Il me fait bien l'annulation, mais il y'a un message d'erreur au niveau du undo...
    Il me met le message suivant :
    "La clé de recherche n'a été trouvée dans aucun enregistrement."

    ça marche mais il faudrait pouvoir virer ce message...

    En fait mon problème est vraiment lié au traitement manuel d'une chaîne vide...

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    je suis sur une piste... ça marche mais j'obtiens un autre message d'erreur à la fin...

    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
    Private Sub Réf_Hoffmann_BeforeUpdate(Cancel As Integer)
     
        If IsNull(Me.champ1) Then
            DoCmd.CancelEvent
            Me.Undo
            DoCmd.SetWarnings False
            DoCmd.RunCommand acCmdSelectRecord
            DoCmd.RunCommand acCmdDelete
            DoCmd.SetWarnings True
        End If
     
    End Sub
    la suppression se fait bien, mais ensuite j'ai le message suivant : "Aucun enregistrement en cours"

  8. #8
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    J'ai fais l'essai sur une petite table avec un champ (Null interdit, Chaine vide autorisée non) et je n'ai aucun problème et surtout pas ce message
    "La clé de recherche n'a été trouvée dans aucun enregistrement."
    As-tu un filtre appliqué sur ton formulaire ?

    Par contre j'ai trouvé un lien vers un autre POST.
    http://www.developpez.net/forums/new...te=1&p=4858682

    Sinon regarde sur Google("3709 La clé de recherche n'a été trouvée dans aucun enregistrement.")

    Bon courage

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re
    la suppression se fait bien, mais ensuite j'ai le message suivant : "Aucun enregistrement en cours"
    Rajoute peut être le Cancel=True , car la mise à jour du champ se fait quand même et comme tu as supprimé l'enregistrement ....

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par fgiambelluco Voir le message
    Re

    Rajoute peut être le Cancel=True , car la mise à jour du champ se fait quand même et comme tu as supprimé l'enregistrement ....
    cela ne change rien

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par fgiambelluco Voir le message
    Bonjour
    J'ai fais l'essai sur une petite table avec un champ (Null interdit, Chaine vide autorisée non) et je n'ai aucun problème et surtout pas ce message

    As-tu un filtre appliqué sur ton formulaire ?

    Par contre j'ai trouvé un lien vers un autre POST.
    http://www.developpez.net/forums/new...te=1&p=4858682

    Sinon regarde sur Google("3709 La clé de recherche n'a été trouvée dans aucun enregistrement.")

    Bon courage

    Non pas de filtre.
    Et ton lien ne marche pas chez moi.
    Et chez toi, la ligne se supprime effectivement si le champ1 est vide ?
    Peux-tu me mettre ton petit test en downolad pour que je compare ?
    Merci

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par fgiambelluco Voir le message
    Re bonjour
    Essaye plutôt ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Champ1_BeforeUpdate(Cancel As Integer)
        If IsNull(Me.Champ1) Then 'teste si le champ est null
            Cancel = True 'annule l'événement de mise à jour
            Me.Undo ' annule la modification de l'enregistrement
            DoCmd.RunCommand acCmdDeleteRecord ' supprime l'enregistrement
        End If
    End Sub
    Bon courage

    la macro plante à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunCommand acCmdDeleteRecord
    et j'ai le message suivant :
    Erreur d'exécution '2046'
    La commande ou l'action << Supprimmer enregistrment >> n'est pas disponible pour l'instant.







    effectivement ça marche en mode formulaire unique... mais pas en mode feuille de données...

    pourquoi ?

Discussions similaires

  1. J'ai un problème avec Wascana, il exécute "scanf" avant "printf"
    Par Tiétio dans le forum Eclipse C & C++
    Réponses: 9
    Dernier message: 29/01/2009, 09h36
  2. Problème avec mon premier exécutable en java
    Par Icefire dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 25/04/2008, 09h42
  3. Réponses: 1
    Dernier message: 11/03/2008, 23h44
  4. Problème avec commande system(MacOs x)
    Par clampin dans le forum C
    Réponses: 3
    Dernier message: 12/09/2007, 16h06
  5. Probléme avec commande service
    Par rach20032 dans le forum Réseau
    Réponses: 10
    Dernier message: 11/07/2007, 13h03

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