OVH Cloud OVH Cloud

Undo applique a un champ sous access 2003 - inactif

5 réponses
Avatar
Trevda
Bonjour,

j'essaye d'appliquer la methode Undo à des champs de mon formulaire
pour pourvoir annuler les modifications sur certains champ seulement
quand on le souhaite.
Rien en se passe. Ils ne reviennent pas a leurs valeurs de depart.


voici le code associer à un bouton

Private Sub Btn_annul_Click()
Champ1.Undo 'champ texte
Champ2.Undo 'liste deroulante
End Sub

quelqu'un a-til le meme probleme ou une solution ?
c'est à devenir fou, j'ai suivi les indications de l'aide mais rien a faire.

merci

Trevda

5 réponses

Avatar
Loïc Dumas
Bonjour,

Le Undo ne marche qu'avant l'événement BeforUpdate du
contrôle. Je propose donc de stocker les valeurs mises à
jour dans des variables :

Private saveChamp1 As String
...

Private Sub txtSociété_BeforeUpdate(Cancel As Integer)
saveChamp1 = Champ1.OldValue
End Sub

Private Sub cmdUndo_Click()
Champ1.Value = saveChamp1
...
End Sub

Cordialement,

Loïc
www.i--land.com


-----Message d'origine-----
Bonjour,

j'essaye d'appliquer la methode Undo à des champs de mon
formulaire

pour pourvoir annuler les modifications sur certains
champ seulement

quand on le souhaite.
Rien en se passe. Ils ne reviennent pas a leurs valeurs
de depart.



voici le code associer à un bouton

Private Sub Btn_annul_Click()
Champ1.Undo 'champ texte
Champ2.Undo 'liste deroulante
End Sub

quelqu'un a-til le meme probleme ou une solution ?
c'est à devenir fou, j'ai suivi les indications de l'aide
mais rien a faire.


merci

Trevda
.



Avatar
Pierre CFI [mvp]
Salut collégue formateur développeur indépendant :o))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Loïc Dumas" a écrit dans le message de news: 426d01c401fa$e599cc10$
Bonjour,

Le Undo ne marche qu'avant l'événement BeforUpdate du
contrôle. Je propose donc de stocker les valeurs mises à
jour dans des variables :

Private saveChamp1 As String
...

Private Sub txtSociété_BeforeUpdate(Cancel As Integer)
saveChamp1 = Champ1.OldValue
End Sub

Private Sub cmdUndo_Click()
Champ1.Value = saveChamp1
...
End Sub

Cordialement,

Loïc
www.i--land.com


-----Message d'origine-----
Bonjour,

j'essaye d'appliquer la methode Undo à des champs de mon
formulaire

pour pourvoir annuler les modifications sur certains
champ seulement

quand on le souhaite.
Rien en se passe. Ils ne reviennent pas a leurs valeurs
de depart.



voici le code associer à un bouton

Private Sub Btn_annul_Click()
Champ1.Undo 'champ texte
Champ2.Undo 'liste deroulante
End Sub

quelqu'un a-til le meme probleme ou une solution ?
c'est à devenir fou, j'ai suivi les indications de l'aide
mais rien a faire.


merci

Trevda
.



Avatar
3stone
Salut,

"Loïc Dumas"
Le Undo ne marche qu'avant l'événement BeforUpdate du
contrôle.

Le premier annule le champ, le second annule le formulaire...



Je propose donc de stocker les valeurs mises à
jour dans des variables :


Dans ce cas, a quoi servirait la propriété .oldvalue ?



Avant la mise à jour du formulaire, il suffit d'un clic
sur un bouton par exemple :


Me!Champ1.Value = Me!Champ1.OldValue
Me!Champ2.Value = Me!Champ2.OldValue
...

et pas de variables intermédiaires, rien ;-))



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
Avatar
Trevda
Merci pour la reponse

j'ai refait un test mais ca marche dans certains seulement :

Explication

1er probleme : j'ai mis des "null interdit" à 'oui' sur la plupart des
ces champs (que je voudrais garder dans la limite du possible)

Donc cela genere un message m'obligeant à remplir le champ lorque
oldvalue est 'null'(cas d'un nouvel enregistrement par exemple). Ce qui
est logique mais...

Undo appliqué à un formulaire fait cela tres bien et ne genere pas
de message (ou la touche echap). j'aimerais trouver une methode
similaire applicable pour les champs.

2ieme probleme c'est qu'il y a certains formulaires ou il y a beaucoup
de champs a annuler en meme temps.
Cela va faire beaucoup de declaration et alourdir le code si je dois
sauvegarder chaque odlvalue avec l'evenement "BeforeUpdate" pour chacun
des champs...

comment se fait-il que le undo(ou la methode utilisee) applique au
formulaire marche nickel à n'importe quel moment et non lorsque c'est
applique à un champ.

merci pour vos reponses

Trevda


Bonjour,

Le Undo ne marche qu'avant l'événement BeforUpdate du
contrôle. Je propose donc de stocker les valeurs mises à
jour dans des variables :

Private saveChamp1 As String
...

Private Sub txtSociété_BeforeUpdate(Cancel As Integer)
saveChamp1 = Champ1.OldValue
End Sub

Private Sub cmdUndo_Click()
Champ1.Value = saveChamp1
...
End Sub

Cordialement,

Loïc
www.i--land.com



-----Message d'origine-----
Bonjour,

j'essaye d'appliquer la methode Undo à des champs de mon


formulaire

pour pourvoir annuler les modifications sur certains


champ seulement

quand on le souhaite.
Rien en se passe. Ils ne reviennent pas a leurs valeurs


de depart.


voici le code associer à un bouton

Private Sub Btn_annul_Click()
Champ1.Undo 'champ texte
Champ2.Undo 'liste deroulante
End Sub

quelqu'un a-til le meme probleme ou une solution ?
c'est à devenir fou, j'ai suivi les indications de l'aide


mais rien a faire.

merci

Trevda
.






Avatar
Trevda
Merci pour la reponse

j'ai refait un test mais ca marche dans certains seulement :

Explication

1er probleme : j'ai mis des "null interdit" à 'oui' sur la plupart des
ces champs (que je voudrais garder dans la limite du possible)

Donc cela genere un message m'obligeant à remplir le champ lorque
oldvalue est 'null'(cas d'un nouvel enregistrement par exemple). Ce qui
est logique mais...

Undo appliqué à un formulaire fait cela tres bien et ne genere pas
de message (ou la touche echap). j'aimerais trouver une methode
similaire applicable pour les champs.

2ieme probleme c'est qu'il y a certains formulaires ou il y a beaucoup
de champs a annuler en meme temps (20-30)
ce qui devient lourd au niveau du code meme en utilisant vos deux
methodes (Loïc Dumas ou Pierre)

comment se fait-il que le undo(ou la methode utilisee) applique au
formulaire marche nickel à n'importe quel moment et non lorsque c'est
applique à un champ.

merci pour vos reponses

Trevda



Bonjour,

Le Undo ne marche qu'avant l'événement BeforUpdate du
contrôle. Je propose donc de stocker les valeurs mises à
jour dans des variables :

Private saveChamp1 As String
...

Private Sub txtSociété_BeforeUpdate(Cancel As Integer)
saveChamp1 = Champ1.OldValue
End Sub

Private Sub cmdUndo_Click()
Champ1.Value = saveChamp1
...
End Sub

Cordialement,

Loïc
www.i--land.com



-----Message d'origine-----
Bonjour,

j'essaye d'appliquer la methode Undo à des champs de mon


formulaire

pour pourvoir annuler les modifications sur certains


champ seulement

quand on le souhaite.
Rien en se passe. Ils ne reviennent pas a leurs valeurs


de depart.


voici le code associer à un bouton

Private Sub Btn_annul_Click()
Champ1.Undo 'champ texte
Champ2.Undo 'liste deroulante
End Sub

quelqu'un a-til le meme probleme ou une solution ?
c'est à devenir fou, j'ai suivi les indications de l'aide


mais rien a faire.

merci

Trevda
.