Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Utilisation de la méthode Undo

4 réponses
Avatar
Dan
Bonjour à tous !

Un grand classique, j'imagine...

Dans un formulaire, l'utilisateur doit saisir une heure de début et une
heure de fin.
Je voudrais contrôler que l'heure de début n'est pas postérieure à la date
de fin.
Sur l'évènement BeforeUpdate, j'écris un bout de code :

Private Sub R_HDébut_BeforeUpdate(Cancel As Integer)
Dim réponse As Integer
If CDate(Me.R_HDébut) >= CDate(Me.R_HFin) Then
réponse = MsgBox("L'heure de début ne peut être postérieure ou égale
à l'heure de fin !", vbOKOnly, "Contrôle des horaires")
Me!R_HDébut.Undo
End If
End Sub

J'ai aussi des choses à faire sur l'événement AfterUpdate...
Je voudrais qu'Access annule la donnée saisie si elle n'est pas conforme au
test, mais il ne le fait pas...
Je précise que j'utilise la syntaxe de l'aide, et que j'ai aussi essayé
Me.R_HDébut.Undo...

Merci pour vos contributions !

A+ DAn

4 réponses

Avatar
Mario Limoges
Salut Dan,
Personellement je revois simplement le focus sur l'heure de fin ..

Me!R_HDébut.Setfocus


"Dan" a écrit dans le message de
news: 429f21cb$0$25020$
Bonjour à tous !

Un grand classique, j'imagine...

Dans un formulaire, l'utilisateur doit saisir une heure de début et une
heure de fin.
Je voudrais contrôler que l'heure de début n'est pas postérieure à la date
de fin.
Sur l'évènement BeforeUpdate, j'écris un bout de code :

Private Sub R_HDébut_BeforeUpdate(Cancel As Integer)
Dim réponse As Integer
If CDate(Me.R_HDébut) >= CDate(Me.R_HFin) Then
réponse = MsgBox("L'heure de début ne peut être postérieure ou
égale à l'heure de fin !", vbOKOnly, "Contrôle des horaires")
Me!R_HDébut.Undo
End If
End Sub

J'ai aussi des choses à faire sur l'événement AfterUpdate...
Je voudrais qu'Access annule la donnée saisie si elle n'est pas conforme
au test, mais il ne le fait pas...
Je précise que j'utilise la syntaxe de l'aide, et que j'ai aussi essayé
Me.R_HDébut.Undo...

Merci pour vos contributions !

A+ DAn






Avatar
Dan
Merci Mario,

Mais dans l'exemple ci-dessous, renvoyer le focus à la zone de texte
suivante ne permet pas de contrôler la cohérence des données :

Données d'origine :
- début = 18h00
- fin = 19h00

Données modifiées :
- début = 20h00
- fin = 19h00

Dans ce cas-là, je voudrais que l'heure de début revienne à la saisie
d'origine après le message d'avertissement...
Je pourrais le faire avant MAJ de l'enreg, mais j'ai des choses à faire
avant...
J'ai contourné le problème pour l'instant avec un Sendkeys, mais je ne
trouve pas ça d'une élégance folle...

A+ Dan
Avatar
DJ
Dan wrote:
Private Sub R_HDébut_BeforeUpdate(Cancel As Integer)

Merci pour vos contributions !

A+ DAn


Ben si ma memoire est bonne c'est a ca qu'il sert le param Cancel

si tes controles detectent un probleme tu ajoute cancel=true te ca annule la
mise à jour.

DJ

Avatar
lectriceNews
Bonjour,

pour apprendre je me permets de poser des questions.


"Dan" a écrit dans le message de
news:429f21cb$0$25020$
Bonjour à tous !

Un grand classique, j'imagine...

Dans un formulaire, l'utilisateur doit saisir une heure de début et une
heure de fin.
Je voudrais contrôler que l'heure de début n'est pas postérieure à la date
de fin.
Sur l'évènement BeforeUpdate, j'écris un bout de code :

Private Sub R_HDébut_BeforeUpdate(Cancel As Integer)
Dim réponse As Integer
If CDate(Me.R_HDébut) >= CDate(Me.R_HFin) Then


est-ce que la date est comprise dans le champ heure ?
si oui : comment distinguer des heures différentes si on ne retient que la
partie date ?

réponse = MsgBox("L'heure de début ne peut être postérieure ou
égale

à l'heure de fin !", vbOKOnly, "Contrôle des horaires")
Me!R_HDébut.Undo
End If
End Sub

J'ai aussi des choses à faire sur l'événement AfterUpdate...
Je voudrais qu'Access annule la donnée saisie si elle n'est pas conforme
au

test, mais il ne le fait pas...
Je précise que j'utilise la syntaxe de l'aide, et que j'ai aussi essayé
Me.R_HDébut.Undo...

Merci pour vos contributions !

A+ DAn



Lectrice