Utilisation de la méthode Undo

Le
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
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
Mario Limoges
Le #5799531
Salut Dan,
Personellement je revois simplement le focus sur l'heure de fin ..

Me!R_HDébut.Setfocus


"Dan" 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






Dan
Le #5799471
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
DJ
Le #5799461
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

lectriceNews
Le #5798901
Bonjour,

pour apprendre je me permets de poser des questions.


"Dan" 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


Poster une réponse
Anonyme