Fermer formulaire sans sauvegarde sous access

Lili -  
blux Messages postés 27997 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
A voir également:

10 réponses

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
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
blux Messages postés 27997 Date d'inscription   Statut Modérateur Dernière intervention   3 367 > 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
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
blux Messages postés 27997 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
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
PAt
 
"Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
On t'a reconnu!!!
0
blux Messages postés 27997 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Merci pour ce commentaire qui amène une valeur ajoutée indéniable à la discussion...
0
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blux Messages postés 27997 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
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
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
blux Messages postés 27997 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
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
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
blux Messages postés 27997 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
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
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