OVH Cloud OVH Cloud

undo

9 réponses
Avatar
dfcena
Bonjour

Pour annuler une saisie sur une proc=E9dure avant maj=20
j'utilise
Private sub champ_before update(cancel as integer)
If ...... then
msgbox........
Cancel=3Dtrue
Me.champ.undo
End if
End sub
Si le champ est vide au d=E9part cette fonction n'efface=20
pas la saisie pour revenir =E0 une valeur null
De plus si champ est du texte il est possible de valider=20
la ligne
Pourquoi?

9 réponses

Avatar
Raymond [mvp]
Bonjour.

essai d'inverser les fonctions , ce qui serait plus logique.
Me.champ.undo
Cancel=true

le Cancel=true doit toujours être en dernier.
SGDG
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"dfcena" a écrit dans le message de
news:2467c01c45f91$c5d1e3a0$
Bonjour

Pour annuler une saisie sur une procédure avant maj
j'utilise
Private sub champ_before update(cancel as integer)
If ...... then
msgbox........
Cancel=true
Me.champ.undo
End if
End sub
Si le champ est vide au départ cette fonction n'efface
pas la saisie pour revenir à une valeur null
De plus si champ est du texte il est possible de valider
la ligne
Pourquoi?
Avatar
didier
re
C'est pareil, peut-être parce que champ et en format texte

J'ai à autre champ en numérique et ça fait pareil je
n'arrive pas à annuler la valeur précédemment inscrite
-----Message d'origine-----
Bonjour.

essai d'inverser les fonctions , ce qui serait plus
logique.

Me.champ.undo
Cancel=true

le Cancel=true doit toujours être en dernier.
SGDG
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"dfcena" a écrit
dans le message de

news:2467c01c45f91$c5d1e3a0$
Bonjour

Pour annuler une saisie sur une procédure avant maj
j'utilise
Private sub champ_before update(cancel as integer)
If ...... then
msgbox........
Cancel=true
Me.champ.undo
End if
End sub
Si le champ est vide au départ cette fonction n'efface
pas la saisie pour revenir à une valeur null
De plus si champ est du texte il est possible de valider
la ligne
Pourquoi?


.



Avatar
Raymond [mvp]
tu n'as pas donné toute la procédure, mais dans ta procédure, avant le undo,
est-ce que tu ne mettrais pas le setfocus sur un autre champ ? ce qui aurait
pour effet d'exécuter l'événement afterupdate du champ et de ce fait le undo
n'aurait plus d'effet. C'est une idée. si le undo suivi du cancel true ne
font rien, il doit y avoir un événement qui fait passer en update
directement.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"didier" a écrit dans le message de
news:24c5401c45fa4$3b457720$
re
C'est pareil, peut-être parce que champ et en format texte

J'ai à autre champ en numérique et ça fait pareil je
n'arrive pas à annuler la valeur précédemment inscrite
Avatar
didier
La procédure est complète
If ...... then
msgbox "......."
Me.champ.undo
Cancel=true
End if
End sub
Cela ne fait pas rien cela me replace sur le champs en le
noircissant mais si ensuite je fait Enter il passe
ensuite au champ suivant
Par contre si je mets une valeur qui ne déclenche pas la
procédure puis je la modifie par une valeur qui la
déclenche, dans ce cas ça fonctionne, il m'annule bien ma
valeur qui déclenche par l'ancienne et là impossible de
placer une valeur qui déclenche la pràcédure
Je pense qu'il n'arrive pas à mettre une valeur null et
poutant le champ n'est pas définit avec la propriété null
interdit
-----Message d'origine-----
tu n'as pas donné toute la procédure, mais dans ta
procédure, avant le undo,

est-ce que tu ne mettrais pas le setfocus sur un autre
champ ? ce qui aurait

pour effet d'exécuter l'événement afterupdate du champ
et de ce fait le undo

n'aurait plus d'effet. C'est une idée. si le undo suivi
du cancel true ne

font rien, il doit y avoir un événement qui fait passer
en update

directement.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"didier" a écrit
dans le message de

news:24c5401c45fa4$3b457720$
re
C'est pareil, peut-être parce que champ et en format
texte


J'ai à autre champ en numérique et ça fait pareil je
n'arrive pas à annuler la valeur précédemment inscrite


.



Avatar
Raymond [mvp]
Bonjour.

il faut bien analyser.
Cela ne fait pas rien cela me replace sur le champs en le
noircissant mais si ensuite je fait Enter il passe
ensuite au champ suivant
Normal. le cancel a bien fait son effet. le fait de faire entrée sans rien

changer ne déclenche pas le beforeupdate compte tenu qu'il n'y a pas de
changement par rapport à l'origine. une valeur null déclenche le
beforeupdate si la valeur ancienne n'était pas null.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"didier" a écrit dans le message de
news:248ad01c45fad$c85374b0$
La procédure est complète
If ...... then
msgbox "......."
Me.champ.undo
Cancel=true
End if
End sub
Cela ne fait pas rien cela me replace sur le champs en le
noircissant mais si ensuite je fait Enter il passe
ensuite au champ suivant
Par contre si je mets une valeur qui ne déclenche pas la
procédure puis je la modifie par une valeur qui la
déclenche, dans ce cas ça fonctionne, il m'annule bien ma
valeur qui déclenche par l'ancienne et là impossible de
placer une valeur qui déclenche la pràcédure
Je pense qu'il n'arrive pas à mettre une valeur null et
poutant le champ n'est pas définit avec la propriété null
interdit

Avatar
dfcena
bonjour
Comment je peut faire pour que lors de la saisie il
m'efface la saisie pour que je ne puisse jamais saisir
cette valeur.
Je ne veut pas pouvoir saisir cette valeur si la
condition est vrai
Comment je peut faire

-----Message d'origine-----
Bonjour.

il faut bien analyser.
Cela ne fait pas rien cela me replace sur le champs en
le


noircissant mais si ensuite je fait Enter il passe
ensuite au champ suivant
Normal. le cancel a bien fait son effet. le fait de

faire entrée sans rien

changer ne déclenche pas le beforeupdate compte tenu
qu'il n'y a pas de

changement par rapport à l'origine. une valeur null
déclenche le

beforeupdate si la valeur ancienne n'était pas null.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"didier" a écrit
dans le message de

news:248ad01c45fad$c85374b0$
La procédure est complète
If ...... then
msgbox "......."
Me.champ.undo
Cancel=true
End if
End sub
Cela ne fait pas rien cela me replace sur le champs en le
noircissant mais si ensuite je fait Enter il passe
ensuite au champ suivant
Par contre si je mets une valeur qui ne déclenche pas la
procédure puis je la modifie par une valeur qui la
déclenche, dans ce cas ça fonctionne, il m'annule bien ma
valeur qui déclenche par l'ancienne et là impossible de
placer une valeur qui déclenche la pràcédure
Je pense qu'il n'arrive pas à mettre une valeur null et
poutant le champ n'est pas définit avec la propriété null
interdit


.




Avatar
Raymond [mvp]
Si la saisie est fonction d'une condition, tu exécutes ta condition à deux
endroits: sur l'événement Form_Current et sur l'afterupdate de ta condition.
Si ta condition est réalisée tu places le champ de saisie en .Enabled False ou .Locked = True et si elle nest pas réalisée tu fais le contraire.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"dfcena" a écrit dans le message de
news:2498e01c4601d$977b6120$
bonjour
Comment je peut faire pour que lors de la saisie il
m'efface la saisie pour que je ne puisse jamais saisir
cette valeur.
Je ne veut pas pouvoir saisir cette valeur si la
condition est vrai
Comment je peut faire
Avatar
dfcena
je ne peut la faire que before update puisqu'elle dépend
du controle saisi et d'un autre controle
Je reviens à l'ancienne méthode qui consiste à faire
Cancelevent ou là il sera impossible de saisir le texte
-----Message d'origine-----
Si la saisie est fonction d'une condition, tu exécutes
ta condition à deux

endroits: sur l'événement Form_Current et sur
l'afterupdate de ta condition.

Si ta condition est réalisée tu places le champ de
saisie en .Enabled =

False ou .Locked = True et si elle nest pas réalisée tu
fais le contraire.


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"dfcena" a écrit
dans le message de

news:2498e01c4601d$977b6120$
bonjour
Comment je peut faire pour que lors de la saisie il
m'efface la saisie pour que je ne puisse jamais saisir
cette valeur.
Je ne veut pas pouvoir saisir cette valeur si la
condition est vrai
Comment je peut faire


.



Avatar
Michel Walsh
Salut,


Je n'ai pas suivi toute la discussion, mais le Me.NomDuControle.Undo ne
fait pas l'affaire, il y a peut-être lieu d'envisager Me.NomDuControle.Value
= Me.NomDuControle.OldValue. Évidemment, si on place cela dans le
AfterUpdate DU FORMULAIRE, c'est trop tard! Le formulaire vient de
sauvegarder l'enregistrement sur disque; OldValue refère alors (enfait, en
tout temps) au dernier "commit" de cet enregistrement.


Espérant être utile,
Vanderghast, Access MVP


"dfcena" wrote in message
news:2516701c4602f$14b25f20$
je ne peut la faire que before update puisqu'elle dépend
du controle saisi et d'un autre controle
Je reviens à l'ancienne méthode qui consiste à faire
Cancelevent ou là il sera impossible de saisir le texte
-----Message d'origine-----
Si la saisie est fonction d'une condition, tu exécutes
ta condition à deux

endroits: sur l'événement Form_Current et sur
l'afterupdate de ta condition.

Si ta condition est réalisée tu places le champ de
saisie en .Enabled >False ou .Locked = True et si elle nest pas réalisée tu

fais le contraire.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"dfcena" a écrit
dans le message de

news:2498e01c4601d$977b6120$
bonjour
Comment je peut faire pour que lors de la saisie il
m'efface la saisie pour que je ne puisse jamais saisir
cette valeur.
Je ne veut pas pouvoir saisir cette valeur si la
condition est vrai
Comment je peut faire


.