Annuler les modifications faites sur un formulaire
4 réponses
Stéphane
Bonjour,
Je suis tout nouveau dans le monde ACCESS et je cherche,=20
en vain, le moyen de d'annuler ou confirmer les=20
modifications faites par l'utilisateur lorsque ce dernier=20
ferme une forme qui est associ=E9e =E0 l'ensemble des champs=20
d'une table.
N'est-il pas possible de modifier le comportement par=20
d=E9faut qui consiste =E0 mettre =E0 jour les modifications=20
faites sur un enregistrement d=E8s lors que l'on en=20
s=E9lectionne un autre ?
Je n'arrive pas =E0 utiliser le m=E9canisme de d=E9but de=20
transaction puis de "commit" et "rollback" que j'essaye de=20
mettre en oeuvre en utilisant la connexion du projet=20
courant (CurrentProject.Connexion) ; ce m=E9canisme peut-il=20
=EAtre utilis=E9 pour les modifications faites =E0 partir du=20
recordset associ=E9 =E0 une form ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
3stone
Salut,
"Stéphane" Je suis tout nouveau dans le monde ACCESS et je cherche, en vain, le moyen de d'annuler ou confirmer les modifications faites par l'utilisateur lorsque ce dernier ferme une forme qui est associée à l'ensemble des champs d'une table.
N'est-il pas possible de modifier le comportement par défaut qui consiste à mettre à jour les modifications faites sur un enregistrement dès lors que l'on en sélectionne un autre ?
En demandant, par l'événement "Avant mise à jour" du formulaire, tout simplement.
If Msgbox("Voulez-vous enregistrer les modifications ?",vbYesNo,"Sauver") = vbNo Then Cancel = true Me.Undo ' éventuellement annuller la saisie End if
-- A+ Pierre (3stone) Access MVP ----------------------------- http://users.skynet.be/mpfa -----------------------------
Salut,
"Stéphane"
Je suis tout nouveau dans le monde ACCESS et je cherche,
en vain, le moyen de d'annuler ou confirmer les
modifications faites par l'utilisateur lorsque ce dernier
ferme une forme qui est associée à l'ensemble des champs
d'une table.
N'est-il pas possible de modifier le comportement par
défaut qui consiste à mettre à jour les modifications
faites sur un enregistrement dès lors que l'on en
sélectionne un autre ?
En demandant, par l'événement "Avant mise à jour" du formulaire, tout simplement.
If Msgbox("Voulez-vous enregistrer les modifications ?",vbYesNo,"Sauver") = vbNo Then
Cancel = true
Me.Undo ' éventuellement annuller la saisie
End if
--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
"Stéphane" Je suis tout nouveau dans le monde ACCESS et je cherche, en vain, le moyen de d'annuler ou confirmer les modifications faites par l'utilisateur lorsque ce dernier ferme une forme qui est associée à l'ensemble des champs d'une table.
N'est-il pas possible de modifier le comportement par défaut qui consiste à mettre à jour les modifications faites sur un enregistrement dès lors que l'on en sélectionne un autre ?
En demandant, par l'événement "Avant mise à jour" du formulaire, tout simplement.
If Msgbox("Voulez-vous enregistrer les modifications ?",vbYesNo,"Sauver") = vbNo Then Cancel = true Me.Undo ' éventuellement annuller la saisie End if
-- A+ Pierre (3stone) Access MVP ----------------------------- http://users.skynet.be/mpfa -----------------------------
Stéphane
Merci pour la réponse.
Un petit problème cependant, cet évènement arrive à chaque modification d'enregistrement et je voudrais poser cette question une seule fois, lors de la fermeture du formulaire.
Pour info en fouillant dans ces newsgroup j'ai trouvé des info concernant les transactions et ci-dessous le code permettant de déclarer une transaction sur le formulaire courant (à placer dans le Form_Load par ex.) : .... Dim rst as DAO.Recordset Dim xdb as Database Set WrkSp = DBEngine.CreateWorkspace(Me.Name, "Admin", vbNullString) Set xdb = WrkSp.OpenDatabase(CurrentDb.Name) WrkSp.BeginTrans Set rst = xdb.OpenRecordset(Me.RecordSource, dbOpenDynaset) Set Me.Recordset = rst Set rst = Nothing Set xdb = Nothing ....
Où l'objet WrkSp et un objet du formulaire ("Dim WrkSp as Workspace)
Par la suite (dans le Form_Close par ex.) l'appel à "WrkSp.Rollback" annule les modifications et celui à "WrkSp.CommitTrans" les confirme.
-----Message d'origine----- Salut,
"Stéphane" Je suis tout nouveau dans le monde ACCESS et je cherche, en vain, le moyen de d'annuler ou confirmer les modifications faites par l'utilisateur lorsque ce dernier ferme une forme qui est associée à l'ensemble des champs d'une table.
N'est-il pas possible de modifier le comportement par défaut qui consiste à mettre à jour les modifications faites sur un enregistrement dès lors que l'on en sélectionne un autre ?
En demandant, par l'événement "Avant mise à jour" du formulaire, tout simplement.
If Msgbox("Voulez-vous enregistrer les modifications ?",vbYesNo,"Sauver") = vbNo Then
Cancel = true Me.Undo ' éventuellement annuller la saisie End if
-- A+ Pierre (3stone) Access MVP ----------------------------- http://users.skynet.be/mpfa -----------------------------
.
Merci pour la réponse.
Un petit problème cependant, cet évènement arrive à chaque
modification d'enregistrement et je voudrais poser cette
question une seule fois, lors de la fermeture du
formulaire.
Pour info en fouillant dans ces newsgroup j'ai trouvé des
info concernant les transactions et ci-dessous le code
permettant de déclarer une transaction sur le formulaire
courant (à placer dans le Form_Load par ex.) :
....
Dim rst as DAO.Recordset
Dim xdb as Database
Set WrkSp = DBEngine.CreateWorkspace(Me.Name, "Admin",
vbNullString)
Set xdb = WrkSp.OpenDatabase(CurrentDb.Name)
WrkSp.BeginTrans
Set rst = xdb.OpenRecordset(Me.RecordSource,
dbOpenDynaset)
Set Me.Recordset = rst
Set rst = Nothing
Set xdb = Nothing
....
Où l'objet WrkSp et un objet du formulaire
("Dim WrkSp as Workspace)
Par la suite (dans le Form_Close par ex.) l'appel à
"WrkSp.Rollback" annule les modifications et celui
à "WrkSp.CommitTrans" les confirme.
-----Message d'origine-----
Salut,
"Stéphane"
Je suis tout nouveau dans le monde ACCESS et je cherche,
en vain, le moyen de d'annuler ou confirmer les
modifications faites par l'utilisateur lorsque ce dernier
ferme une forme qui est associée à l'ensemble des champs
d'une table.
N'est-il pas possible de modifier le comportement par
défaut qui consiste à mettre à jour les modifications
faites sur un enregistrement dès lors que l'on en
sélectionne un autre ?
En demandant, par l'événement "Avant mise à jour" du
formulaire, tout simplement.
If Msgbox("Voulez-vous enregistrer les
modifications ?",vbYesNo,"Sauver") = vbNo Then
Cancel = true
Me.Undo ' éventuellement annuller la saisie
End if
--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
Un petit problème cependant, cet évènement arrive à chaque modification d'enregistrement et je voudrais poser cette question une seule fois, lors de la fermeture du formulaire.
Pour info en fouillant dans ces newsgroup j'ai trouvé des info concernant les transactions et ci-dessous le code permettant de déclarer une transaction sur le formulaire courant (à placer dans le Form_Load par ex.) : .... Dim rst as DAO.Recordset Dim xdb as Database Set WrkSp = DBEngine.CreateWorkspace(Me.Name, "Admin", vbNullString) Set xdb = WrkSp.OpenDatabase(CurrentDb.Name) WrkSp.BeginTrans Set rst = xdb.OpenRecordset(Me.RecordSource, dbOpenDynaset) Set Me.Recordset = rst Set rst = Nothing Set xdb = Nothing ....
Où l'objet WrkSp et un objet du formulaire ("Dim WrkSp as Workspace)
Par la suite (dans le Form_Close par ex.) l'appel à "WrkSp.Rollback" annule les modifications et celui à "WrkSp.CommitTrans" les confirme.
-----Message d'origine----- Salut,
"Stéphane" Je suis tout nouveau dans le monde ACCESS et je cherche, en vain, le moyen de d'annuler ou confirmer les modifications faites par l'utilisateur lorsque ce dernier ferme une forme qui est associée à l'ensemble des champs d'une table.
N'est-il pas possible de modifier le comportement par défaut qui consiste à mettre à jour les modifications faites sur un enregistrement dès lors que l'on en sélectionne un autre ?
En demandant, par l'événement "Avant mise à jour" du formulaire, tout simplement.
If Msgbox("Voulez-vous enregistrer les modifications ?",vbYesNo,"Sauver") = vbNo Then
Cancel = true Me.Undo ' éventuellement annuller la saisie End if
-- A+ Pierre (3stone) Access MVP ----------------------------- http://users.skynet.be/mpfa -----------------------------
.
3stone
re,
"Stéphane" Un petit problème cependant, cet évènement arrive à chaque modification d'enregistrement et je voudrais poser cette question une seule fois, lors de la fermeture du formulaire.
Oui ;-)
Et si, après avoir modifier, volontairement ou involontairement quelques dizaines d'enregistrements, on pose la question...
comment savoir ?
;-)
-- A+ Pierre (3stone) Access MVP ----------------------------- http://users.skynet.be/mpfa -----------------------------
re,
"Stéphane"
Un petit problème cependant, cet évènement arrive à chaque
modification d'enregistrement et je voudrais poser cette
question une seule fois, lors de la fermeture du
formulaire.
Oui ;-)
Et si, après avoir modifier, volontairement ou involontairement
quelques dizaines d'enregistrements, on pose la question...
comment savoir ?
;-)
--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
"Stéphane" Un petit problème cependant, cet évènement arrive à chaque modification d'enregistrement et je voudrais poser cette question une seule fois, lors de la fermeture du formulaire.
Oui ;-)
Et si, après avoir modifier, volontairement ou involontairement quelques dizaines d'enregistrements, on pose la question...
comment savoir ?
;-)
-- A+ Pierre (3stone) Access MVP ----------------------------- http://users.skynet.be/mpfa -----------------------------
phil
Pour pouvoir demander la confirmation des modifications effectuées sur la totalité des enregistrements, il faut obligatoirement passer par du code VBA un peu musclé...
Il faut, à l'ouverture du formulaire, créer un tableau (variable) qui regroupe les données de ta table. Ton formulaire sera alors basé sur ce tableau, non sur la table, ce qui signifie qu'il faut que toutes les zones de textes soient "indépendantes", et qu'il faut gérer manuellement toutes les initialisations et mises à jour de leurs données. Une modification d'une zone de texte ne modifie pas ta table, mais met à jour ton tableau. Et lorsque l'on quitte le formulaire, il faut, si on accepte les modifications, mettre à jour la table à partir du tableau (variable).
En un mot, c'est difficile à mettre en oeuvre. Alors si tu n'est pas très à l'aise avec le VBA et les formulaires indépendants (qui ne sont pas basés sur des tables ou requêtes), oublie ton idée de validation de masse.
-----Message d'origine----- Bonjour,
Je suis tout nouveau dans le monde ACCESS et je cherche, en vain, le moyen de d'annuler ou confirmer les modifications faites par l'utilisateur lorsque ce dernier ferme une forme qui est associée à l'ensemble des champs d'une table.
N'est-il pas possible de modifier le comportement par défaut qui consiste à mettre à jour les modifications faites sur un enregistrement dès lors que l'on en sélectionne un autre ?
Je n'arrive pas à utiliser le mécanisme de début de transaction puis de "commit" et "rollback" que j'essaye de
mettre en oeuvre en utilisant la connexion du projet courant (CurrentProject.Connexion) ; ce mécanisme peut-il être utilisé pour les modifications faites à partir du recordset associé à une form ?
Merci de vos réponses
.
Pour pouvoir demander la confirmation des modifications
effectuées sur la totalité des enregistrements, il faut
obligatoirement passer par du code VBA un peu musclé...
Il faut, à l'ouverture du formulaire, créer un tableau
(variable) qui regroupe les données de ta table.
Ton formulaire sera alors basé sur ce tableau, non sur la
table, ce qui signifie qu'il faut que toutes les zones de
textes soient "indépendantes", et qu'il faut gérer
manuellement toutes les initialisations et mises à jour de
leurs données.
Une modification d'une zone de texte ne modifie pas ta
table, mais met à jour ton tableau.
Et lorsque l'on quitte le formulaire, il faut, si on
accepte les modifications, mettre à jour la table à partir
du tableau (variable).
En un mot, c'est difficile à mettre en oeuvre. Alors si tu
n'est pas très à l'aise avec le VBA et les formulaires
indépendants (qui ne sont pas basés sur des tables ou
requêtes), oublie ton idée de validation de masse.
-----Message d'origine-----
Bonjour,
Je suis tout nouveau dans le monde ACCESS et je cherche,
en vain, le moyen de d'annuler ou confirmer les
modifications faites par l'utilisateur lorsque ce dernier
ferme une forme qui est associée à l'ensemble des champs
d'une table.
N'est-il pas possible de modifier le comportement par
défaut qui consiste à mettre à jour les modifications
faites sur un enregistrement dès lors que l'on en
sélectionne un autre ?
Je n'arrive pas à utiliser le mécanisme de début de
transaction puis de "commit" et "rollback" que j'essaye
de
mettre en oeuvre en utilisant la connexion du projet
courant (CurrentProject.Connexion) ; ce mécanisme peut-il
être utilisé pour les modifications faites à partir du
recordset associé à une form ?
Pour pouvoir demander la confirmation des modifications effectuées sur la totalité des enregistrements, il faut obligatoirement passer par du code VBA un peu musclé...
Il faut, à l'ouverture du formulaire, créer un tableau (variable) qui regroupe les données de ta table. Ton formulaire sera alors basé sur ce tableau, non sur la table, ce qui signifie qu'il faut que toutes les zones de textes soient "indépendantes", et qu'il faut gérer manuellement toutes les initialisations et mises à jour de leurs données. Une modification d'une zone de texte ne modifie pas ta table, mais met à jour ton tableau. Et lorsque l'on quitte le formulaire, il faut, si on accepte les modifications, mettre à jour la table à partir du tableau (variable).
En un mot, c'est difficile à mettre en oeuvre. Alors si tu n'est pas très à l'aise avec le VBA et les formulaires indépendants (qui ne sont pas basés sur des tables ou requêtes), oublie ton idée de validation de masse.
-----Message d'origine----- Bonjour,
Je suis tout nouveau dans le monde ACCESS et je cherche, en vain, le moyen de d'annuler ou confirmer les modifications faites par l'utilisateur lorsque ce dernier ferme une forme qui est associée à l'ensemble des champs d'une table.
N'est-il pas possible de modifier le comportement par défaut qui consiste à mettre à jour les modifications faites sur un enregistrement dès lors que l'on en sélectionne un autre ?
Je n'arrive pas à utiliser le mécanisme de début de transaction puis de "commit" et "rollback" que j'essaye de
mettre en oeuvre en utilisant la connexion du projet courant (CurrentProject.Connexion) ; ce mécanisme peut-il être utilisé pour les modifications faites à partir du recordset associé à une form ?