Fermer formulaire sans sauvegarde sous access

Lili -  
blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour tout le monde

Je voudrais savoir si il est possible de quitter un formulaire access sans sauvegarder les données ?

merci

10 réponses

  1. djsbens
     
    J'ai eu le mm probleme.
    Je l'ai corriger de cette maniere :
    1) creer un bouton fermer
    2) dans le code mettre ca:

    Private Sub Fermer_Click()
    On Error GoTo Err_Fermer_Click

    DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
    DoCmd.Close

    Exit_Fermer_Click:
    Exit Sub

    Err_Fermer_Click:
    If (Err.Number = 2046) Then
    DoCmd.Close
    Else
    MsgBox Err.Description
    Resume Exit_Fermer_Click
    End If

    End Sub

    Voila.
    BOn courage.
    2
    1. Amine
       
      Bonsoir,

      Ton code ne supprime que la derniere modification dans le formulaire.
      moi j'aimerais supprimer tous les changements depuis l'ouverture du formulaire.
      Je ne sais pas si c'est possible ?
      0
      1. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455 > Amine
         
        Salut,

        pas possible, puisque la mise à jour est validée quand on passe à l'enregistrement suivant...

        Dans ce cas, il faut que tu journalises ce que tu fais, afin de pouvoir le "rejouer" à l'envers...
        0
  2. Utilisateur anonyme
     
    En simulant l'appui sur la touche échapp (--> sendkeys {esc} lors de l'évènement fermeture de ton formulaire) ça devrait le faire...
    0
  3. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    il n'est pas possible de quitter sans sauvegarder les données, puisqu'access met à jour dès que tu passes au champ suivant.

    La seule solution, si le formulaire est mono-enregistrement (pas en mode continu), est effectivement d'appuyer sur ESC (ou de le faire faire avec SENDKEY) pour annuler les modifs faites à l'enregistrement en cours.

    A+ Blux
     "Les cons, ça ose tout.
    C'est même à ça qu'on les reconnait"
    0
    1. PAt
       
      "Les cons, ça ose tout.
      C'est même à ça qu'on les reconnait"
      On t'a reconnu!!!
      0
    2. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Merci pour ce commentaire qui amène une valeur ajoutée indéniable à la discussion...
      0
  4. Lili
     
    Merci pour vos reponses !

    Mais... en fait j'ai cherché sur le net, et j'ai associé un bouton 'quitter sans sauver' au code suivant :

    Me.Undo
    docmd.close

    et ca marche très bien pour le formulaire principal.
    Cependant j'ai des sous formulaires qui eux gardent les modifs. Je n'arrive pas à y faire réference pour leur associer undo également...
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Peux-tu associer le code .undo à l'évènement 'sur fermeture' des sous-formulaires ?

    A+ Blux
     "Les cons, ça ose tout.
    C'est même à ça qu'on les reconnait"
    0
  7. Lili
     
    Bonjour !

    Hum non ca ne fonctionne pas.
    Je ne sais pas si access les considère comme ouverts de plus comme ce sont des sous formulaires affichés par mon formulaire directement ?
    J'ai essayé après maj mais bon, je me suis baladée sur des forums anglo et je me suis rendue compte que après maj veut bien dire ce que ca veut dire, la maj est déja faite donc ce n'est pas bon non plus.
    Ca marche bien avec avant maj mais ca à peu d'interet :)

    J'ai lu aussi qu'une solution était peut être d'ouvrir une table intermediaire, copie de la table d'origine, et de supprimer les données de cette table si on ne fait pas de changements, ou d'updater la vrai table avec la copie si on fait des changements...
    Mais là ca me parait 1. Pas propre, 2. Compliqué :p
    0
  8. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    y'aurait un truc à essayer, mais c'est tordu !

    Déclarer une transaction à l'ouverture du formulaire
    Modifier les données
    Valider ou non la transaction à la fermeture (commit ou rollback)

    Sans garantie...

    A+ Blux
     "Les cons, ça ose tout.
    C'est même à ça qu'on les reconnait"
    0
  9. Lili
     
    Merci pour ton aide c'est gentil.

    Je viens de regarder l'aide d'access pour les transactions. Je ne connaissais pas ça, ca à l'air assez puissant mais à tester.

    Pourrais tu m'aider sur l'emploi de cette fonction ?

    Si j'ai compris a l'ouverture du formulaire je fait un workspace.BeginTrans et si je sauve je fait CommitTrans, sinon Rollback ?
    Mais quelle est la syntaxe exacte des transactions ? :p

    Merci
    0
  10. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Une transaction est définie (en gros) par tout traitement cohérent modifiant les données.

    Voilà un exemple de code :

    On déclare une transaction, on exécute un certain nombre de requête, si l'une d'elle vient à mal fonctionner, alors on revient à l'état initial (fait automatiquement puisque dans ce cas, on ne va jamais au commit)

    Dim Ws As Workspace
    Dim Bds As Database
    Dim Req As QueryDef
    Set Ws = DBEngine.Workspaces(0)
    Set Bds = CurrentDb
    ' Effacement des tables temporaires (gestion des modifs)
    Ws.BeginTrans
    Set Req = Bds.QueryDefs("R_Efface_Dat-heure")
    Req.Execute
    Set Req = Bds.QueryDefs("R_Efface_T-Gamelle")
    Req.Execute
    Set Req = Bds.QueryDefs("R_Efface_T-UMC/Gamelle")
    Req.Execute
    Set Req = Bds.QueryDefs("R_Efface_T-Umc")
    Req.Execute
    Set Req = Bds.QueryDefs("R_Efface_T-Volset")
    Req.Execute
    Set Req = Bds.QueryDefs("R_Efface_T-Historique")
    Req.Execute
    Set Req = Bds.QueryDefs("R_Efface_System")
    Req.Execute
    Ws.CommitTrans

    Mais j'ai des doutes quant au fonctionnement à l'intérieur d'un formulaire, car ce n'est pas géré en VB mais directement par l'exécutable d'ACCESS, des GROS doutes ! :-)

    A+ Blux
     "Les cons, ça ose tout.
    C'est même à ça qu'on les reconnait"
    0
  11. Lili
     
    J'ai craquée en cedant à la simplicité :p

    Apres chaque ligne saisie d'un sous formulaire je demande si on veut sauver ou non, plutot que de tout essayer de centraliser sur un bouton.

    J'ai une vbquestion à la propriété avant maj de chaque sous formulaire et si on dit non : me.undo.

    Pas super fun pour l'utilisateur mais tellement plus simple pour moi.

    Merci pour ton aide !
    0