1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    juin 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : juin 2016
    Messages : 14
    Points : 12
    Points
    12

    Par défaut Annuler/Sauvegarder un enregistrement

    Bonjour,

    J'essaye de faire un formulaire dans lequel je souahite demander a l'utilisateur si il veut sauvegarder ou non l'enregistrement en cours lors de: la fermeture du formulaire, ou de la création d'un nouveau enregistrement.

    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
    Private Sub btnAjout_Ticket_Click()
    DoCmd.GoToRecord , , acNewRec
     'DoCmd.RunCommand acCmdRecordsGoToNew
    End Sub
     
    Private Sub Form_BeforeUpdate(Cancel As Integer)
    If Me.Dirty = True Then
        If MsgBox("Voulez vous enregistrer l'enregistrement en cours?", vbYesNo + vbQuestion, "Save") = vbYes Then
        Else
            Me.Undo
        End If
    End If
    End Sub
    Quand je ferme le formulaire pas de problème l'enregistrement est sauvegardé ou non selon ce que je choisis dans la msgbox.
    Par contre si j'appelle la procédure btnAjout_Ticket_click() et que je ne veux pas sauvegarder l'enregistrement je reçois l'erreur '2105': Impossible d'atteindre l'enregistrement spécifié et le code bloque a la ligne DoCmd.GoToRecord , , acNewRec.

    On dirait que c'est Me.Undo qui pose problème... Quelq'un a t-il une idée?

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 046
    Points : 15 398
    Points
    15 398

    Par défaut

    Bonjour.

    Je pense que ta réponse est là.

    Comment fait-on pour un avoir un message de confirmation avant sauvegarder un enregistrement modifié ?
    https://access.developpez.com/faq/?p...ees#MsgConfirm

    Et Dirty est un indicateur très peu fiable de la "qualité" d'un enregistrement.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    juin 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : juin 2016
    Messages : 14
    Points : 12
    Points
    12

    Par défaut

    Citation Envoyé par marot_r Voir le message
    Bonjour.

    Je pense que ta réponse est là.

    Comment fait-on pour un avoir un message de confirmation avant sauvegarder un enregistrement modifié ?
    https://access.developpez.com/faq/?p...ees#MsgConfirm

    Et Dirty est un indicateur très peu fiable de la "qualité" d'un enregistrement.

    A+
    Merci pour la réponse mais cela n'as pas vraiment répondu a ma question.

    Mon probème venait du fait que "DoCmd.GoToRecord , , acNewRec" fait appel a l'evénemment BeforeUpdate. Donc ce qui se passe c'est que access crée un nouveau enregistrement qui s'annulle immédiatement si je clique sur Non dans la msgbox, et me voila avec le message d'erreur 2105.

    Ce que j'ai du faire est d'appeller l'événement BeforUpdate avant de créer un nouvel enregistrement afin d'agir sur l'enregistrement actuel avant d'en créer un autre, voila 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
    Private Sub btnAjout_Ticket_Click()
    Call Form_BeforeUpdate(False)
    DoCmd.GoToRecord , , acNewRec
    End Sub
     
    Private Sub Form_BeforeUpdate(Cancel As Integer)
    If Me.Dirty Then
        If MsgBox("Voulez vous enregistrer l'enregistrement en cours?", vbYesNo + vbQuestion, "Save") = vbNo Then
            Me.Undo
            Cancel = True
        End If
    End If
    End Sub
    Par contre quel meilleure alternative existe-il a Me.dirty pour vérifier le changement d'un record?

Discussions similaires

  1. Sauvegarder un enregistrement dans une table de base de données
    Par souha2008 dans le forum Bases de données
    Réponses: 4
    Dernier message: 20/05/2008, 17h43
  2. Réponses: 2
    Dernier message: 22/05/2007, 11h45
  3. Réponses: 1
    Dernier message: 06/05/2007, 15h25
  4. Annuler changement d'enregistrement
    Par the big ben 5 dans le forum Access
    Réponses: 1
    Dernier message: 04/10/2006, 18h09
  5. Réponses: 2
    Dernier message: 27/07/2006, 13h53

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