OVH Cloud OVH Cloud

[access 97] verrouillage d'enregistrement

2 réponses
Avatar
Patrick
Bonjour à tous et toutes

je reprends une "vieille" appli sous 97.... peut pas la migrer en 2003,
;-((((

mon souci :
j'ai un formulaire continu et je souhaiterais dans la section détail
verrouiller l'enregistrement en cours en fonction de la valeur d'un case à
cocher.....

je n'ai pu que mettre un évènement sur "mousemove" avec ce code,

Private Sub Détail_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
If Me.maCAC= True Then
Me.moncontrole1.Enabled = False
Me.moncontrole1.Locked = True
'etc....
else
If Me.maCAC= False Then
Me.moncontrole1.Enabled = True
Me.moncontrole1.Locked = False
'etc....
End If
End Sub

ca fonctionne...... que si l'utilisateur survole avec la souris le détail
du form............. et pas les champs
donc c'est aléatoire et si l'on est puriste pas terrible
;-(((((((((((((

les évènements affectables à la section détail sont pas foule

faut-il que je passe sur chaque controle pour sur set focus, msgbox,
vérrouillé, un docmd.gotocontrole ailleur pour mettre individuellement
chaque controle à enable false et locked true ??????

si qq'un a une idée géniale, elle sera la bienvenue!

merci
Patrick qui espère avoir été clair

2 réponses

Avatar
Raymond [mvp]
Bonjour.

si tu verrouilles l'enregistrement en cours ( section détail) par une case
qui est elle-même dans la section détail tu vas avoir des problèmes pour
cliquer dessus.
si ta case à cocher se trouve dans ton enregistrement, tu ne peux faire le
test que dans l'événement Form_Current qui se déclenche au changement
d'enregistrement.
si tu veux bloquer l'enregistrement par une case située dans l'entête ou le
pied de formulaire tu testes l'état de la case sur l'événement AfterUpdate
et Form_Current.
Tu ne peux pas bloquer un enregistrement sur un mouse move car tu risques de
ne jamais bloquer ou de faire des allers-retours permanents dans le
blocage-déblocage.
ce blocage est utile en quoi ?
--
@+
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


"Patrick" a écrit dans le message de
news:
Bonjour à tous et toutes

je reprends une "vieille" appli sous 97.... peut pas la migrer en 2003,
;-((((

mon souci :
j'ai un formulaire continu et je souhaiterais dans la section détail
verrouiller l'enregistrement en cours en fonction de la valeur d'un case à
cocher.....

je n'ai pu que mettre un évènement sur "mousemove" avec ce code,

Private Sub Détail_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
If Me.maCAC= True Then
Me.moncontrole1.Enabled = False
Me.moncontrole1.Locked = True
'etc....
else
If Me.maCAC= False Then
Me.moncontrole1.Enabled = True
Me.moncontrole1.Locked = False
'etc....
End If
End Sub

ca fonctionne...... que si l'utilisateur survole avec la souris le
détail

du form............. et pas les champs
donc c'est aléatoire et si l'on est puriste pas terrible
;-(((((((((((((

les évènements affectables à la section détail sont pas foule

faut-il que je passe sur chaque controle pour sur set focus, msgbox,
vérrouillé, un docmd.gotocontrole ailleur pour mettre individuellement
chaque controle à enable false et locked true ??????

si qq'un a une idée géniale, elle sera la bienvenue!

merci
Patrick qui espère avoir été clair




Avatar
Patrick
Bonjour raymond et merci de me répondre

Les vacances.... un vieux souvenir ? (les stats MVP vont évoluer ;-) )

Plaisanterie à part (j'peux pas m'empêcher) et pour préciser mon objectif :

En fait il s'agit d'enregistrements de vente de produits sur lesquels les
utilisateurs peuvent revenir pour modif, suppression etc.... jusqu'au moment
où un comptable (désolé pour eux) prends en compte les ventes et les valide
par une procédure qui effectue un update dans la table de la fameuse case à
cocher (invisible pour la personne qui elle saisit les ventes)

tu me disais :
si tu verrouilles l'enregistrement en cours ( section détail) par une case
qui est elle-même dans la section détail tu vas avoir des problèmes pour
cliquer dessus.


dans ce cas aucune importance la case n'est pas visible ni ne doit être mise
à jour sur ce form

si tu veux bloquer l'enregistrement par une case située dans l'entête ou
le

pied de formulaire tu testes l'état de la case sur l'événement AfterUpdate
et Form_Current.


là également, il y a une case par enregistrement

Il n'y a qu'un form pour visualiser en mode continu, et en fait je
souhaiterais que chaque enregistrement en fonction de la case à cocher soit
verrouillé et désactivé et ce ligne par ligne dans la section détail du form

Je vais creuser ta piste :
si ta case à cocher se trouve dans ton enregistrement, tu ne peux faire le
test que dans l'événement Form_Current qui se déclenche au changement
d'enregistrement
et mettre mon code sur Form_Current


et enfin
Tu ne peux pas bloquer un enregistrement sur un mouse move car tu risques
de

ne jamais bloquer ou de faire des allers-retours permanents dans le
blocage-déblocage.


effectivement ca fait "yo-yo"

merci Raymond et à bientôt

Patrick