OVH Cloud OVH Cloud

sur quel évènement ?

6 réponses
Avatar
c15
Bonjour à tous et toutes,

Dans un formulaire (access 2000) , je ne voudrais pas que des modifications
intempestives puissent être faites.

Je voudrais donc mettre la procédure suivante ( merci Raymond ) en place
pour que, quelque soit l'enregistrement sur lequel on se trouve, on ne
puisse rien modifier.

Dim Ctl As Control
For Each Ctl In Me.Détail.Controls
If (Ctl.ControlType = acTextBox) Or (Ctl.ControlType = acComboBox) Or
(Ctl.ControlType = acCheckBox) Then
Ctl.Locked = true
End If
Next Ctl

J'ai par ailleurs mis un bouton "Modifications" qui déclenche la procédure
"inverse" (Ctl.Locked = false) permettant une modification sur n'importe
quel type de contrôle.
Cela ne marche pas tout à fait bien car j'ai associé la procédure à
l'évènement "activé" du formulaire, ce qui fait que lorsque je clique sur le
bouton "Modifications" d'un enregistrement quelconque, je peux modifier
n'importe quel autre enregistrement.

Quel est le meilleur évènement à utiliser pour ne pouvoir modifier qu'un
seul enregistrement, valider ou non cette modification, avant de passer à un
autre enregistrement ?


Merci de votre aide

a+

c15

6 réponses

Avatar
3stone
Salut,

c15
Cela ne marche pas tout à fait bien car j'ai associé la procédure à
l'évènement "activé" du formulaire, ce qui fait que lorsque je clique sur le
bouton "Modifications" d'un enregistrement quelconque, je peux modifier
n'importe quel autre enregistrement.




Non, sur "Activation" du formulaire... (form_Current)


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/
--------------------------------------

Avatar
Raymond
Bonsoir.

Tu places ta fonction de blocage sur l'événement Form_AfterUpdate(), comme
ça dès que ton formulaire est modifié il est bloqué quel que soit
l'événement qui provoque la mise à jour.
Je ne sais pas ce que ça donne sur un nouvel enregistrement si tu as des
contrôles avec null interdit alors il vaudrait mieux que tu mettre la
propriété "ajout autorisé" à non

Si tu prévois d'annuler une modification penses bien de tester l'événement
car le update ne sera pas réalisé et le blocage non plus. il faudrait que
ton blocage soit dans une fonction que tu peux appeler de plusieurs
événements. Tu as l'événement Dirty qui te permet de savoir si une modif est
commencée.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"c15" a écrit dans le message de
news:3f145a20$0$9621$
Bonjour à tous et toutes,

Dans un formulaire (access 2000) , je ne voudrais pas que des
modifications

intempestives puissent être faites.

Je voudrais donc mettre la procédure suivante ( merci Raymond ) en place
pour que, quelque soit l'enregistrement sur lequel on se trouve, on ne
puisse rien modifier.

Dim Ctl As Control
For Each Ctl In Me.Détail.Controls
If (Ctl.ControlType = acTextBox) Or (Ctl.ControlType = acComboBox) Or
(Ctl.ControlType = acCheckBox) Then
Ctl.Locked = true
End If
Next Ctl

J'ai par ailleurs mis un bouton "Modifications" qui déclenche la procédure
"inverse" (Ctl.Locked = false) permettant une modification sur n'importe
quel type de contrôle.
Cela ne marche pas tout à fait bien car j'ai associé la procédure à
l'évènement "activé" du formulaire, ce qui fait que lorsque je clique sur
le

bouton "Modifications" d'un enregistrement quelconque, je peux modifier
n'importe quel autre enregistrement.

Quel est le meilleur évènement à utiliser pour ne pouvoir modifier qu'un
seul enregistrement, valider ou non cette modification, avant de passer à
un

autre enregistrement ?


Merci de votre aide

a+

c15




Avatar
3stone
Salut,

NetChris
Moi je fais :

me.allowedits = false sur 'Form_current'
+ un bouton qui me fait l'inverse (true) quand je veux entrer en mode modif.




Oui... mais cela bloque également les listes...


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/
--------------------------------------

Avatar
c15
Bonjour NetChris,

Au départ j'avais moi aussi
me.allowedits = false sur 'Form_current'

mais je me suis aperçu que je ne pouvais alors bénéficier de la saisie
automatique dans des listes déroulantes, il me fallait donc bloquer tous mes
contrôles sauf ces listes.
Ja faisais cela un par un avant de découvrir la procédure de Raymond.

Merci de ta réponse

A+

c15

"NetChris" a écrit dans le message de
news: bf1sj1$ldg$
Moi je fais :

me.allowedits = false sur 'Form_current'
+ un bouton qui me fait l'inverse (true) quand je veux entrer en mode
modif.


"c15" a écrit dans le message de
news:3f145a20$0$9621$
Bonjour à tous et toutes,

Dans un formulaire (access 2000) , je ne voudrais pas que des
modifications

intempestives puissent être faites.

Je voudrais donc mettre la procédure suivante ( merci Raymond ) en place
pour que, quelque soit l'enregistrement sur lequel on se trouve, on ne
puisse rien modifier.

Dim Ctl As Control
For Each Ctl In Me.Détail.Controls
If (Ctl.ControlType = acTextBox) Or (Ctl.ControlType = acComboBox)
Or


(Ctl.ControlType = acCheckBox) Then
Ctl.Locked = true
End If
Next Ctl

J'ai par ailleurs mis un bouton "Modifications" qui déclenche la
procédure


"inverse" (Ctl.Locked = false) permettant une modification sur
n'importe


quel type de contrôle.
Cela ne marche pas tout à fait bien car j'ai associé la procédure à
l'évènement "activé" du formulaire, ce qui fait que lorsque je clique
sur


le
bouton "Modifications" d'un enregistrement quelconque, je peux modifier
n'importe quel autre enregistrement.

Quel est le meilleur évènement à utiliser pour ne pouvoir modifier qu'un
seul enregistrement, valider ou non cette modification, avant de passer
à


un
autre enregistrement ?


Merci de votre aide

a+

c15








Avatar
c15
Bonjour 3 stone,

Merci de ta réponse - qui marche bien sûr, mais de ta part c'est un
...non-évènement ;-))

A+

c15

"3stone" a écrit dans le message de news:
#c#
Salut,

c15
Cela ne marche pas tout à fait bien car j'ai associé la procédure à
l'évènement "activé" du formulaire, ce qui fait que lorsque je clique
sur le


bouton "Modifications" d'un enregistrement quelconque, je peux modifier
n'importe quel autre enregistrement.




Non, sur "Activation" du formulaire... (form_Current)


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/
--------------------------------------






Avatar
c15
Bonjour Raymond,

Merci de ta réponse.
Je ne sais si c'est logique mais cette fonction de blocage je l'ai mise à la
fois sur Form_Current() - dixit 3stone - et sur Form_AfterUpdate() - dixit
Raymond - comme cela pas de jaloux.

A+

c15


et
"Raymond" a écrit dans le message de news:
#
Bonsoir.

Tu places ta fonction de blocage sur l'événement Form_AfterUpdate(), comme
ça dès que ton formulaire est modifié il est bloqué quel que soit
l'événement qui provoque la mise à jour.
Je ne sais pas ce que ça donne sur un nouvel enregistrement si tu as des
contrôles avec null interdit alors il vaudrait mieux que tu mettre la
propriété "ajout autorisé" à non

Si tu prévois d'annuler une modification penses bien de tester l'événement
car le update ne sera pas réalisé et le blocage non plus. il faudrait que
ton blocage soit dans une fonction que tu peux appeler de plusieurs
événements. Tu as l'événement Dirty qui te permet de savoir si une modif
est

commencée.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"c15" a écrit dans le message de
news:3f145a20$0$9621$
Bonjour à tous et toutes,

Dans un formulaire (access 2000) , je ne voudrais pas que des
modifications

intempestives puissent être faites.

Je voudrais donc mettre la procédure suivante ( merci Raymond ) en place
pour que, quelque soit l'enregistrement sur lequel on se trouve, on ne
puisse rien modifier.

Dim Ctl As Control
For Each Ctl In Me.Détail.Controls
If (Ctl.ControlType = acTextBox) Or (Ctl.ControlType = acComboBox)
Or


(Ctl.ControlType = acCheckBox) Then
Ctl.Locked = true
End If
Next Ctl

J'ai par ailleurs mis un bouton "Modifications" qui déclenche la
procédure


"inverse" (Ctl.Locked = false) permettant une modification sur
n'importe


quel type de contrôle.
Cela ne marche pas tout à fait bien car j'ai associé la procédure à
l'évènement "activé" du formulaire, ce qui fait que lorsque je clique
sur


le
bouton "Modifications" d'un enregistrement quelconque, je peux modifier
n'importe quel autre enregistrement.

Quel est le meilleur évènement à utiliser pour ne pouvoir modifier qu'un
seul enregistrement, valider ou non cette modification, avant de passer
à


un
autre enregistrement ?


Merci de votre aide

a+

c15