SetFocus op Formulier werkt niet

Status
Niet open voor verdere reacties.

mikeo

Terugkerende gebruiker
Lid geworden
29 mei 2006
Berichten
1.861
Ik heb een invul formulier en wil daar een verplicht veld instellen.


Nu doe ik een controle via Bij Verlaten

Private Sub Datumrit_Exit(Cancel As Integer)
If IsNull([Datumrit]) Then
MsgBox "Datum is een verplicht veld."
Me.Datumrit.SetFocus
End If
End Sub​

Ik krijg netjes de melding maar de focus gaat naar het volgende veld en krijg deze niet teurg naar het verplichte veld.

Ik heb de focus ook geprobeerd met het commando
DoCmd.GoToControl "Datumrit"

Ook deze werkt niet en na de melding gaat hij door naar het volgende veld.

Als test even gebruik gemaakt van:
Screen.PreviousControl.SetFocus

Dat werkt wel maar dan gaat hij uiteraard een veld terug maar werkt wel.

Wat gaat hier nu fout.

Ter info.
Het formulier is gebaseerd op een Query.
 
Dat heeft te maken met de volgorde waarin de gebeurtenissen afgaan.
De exit gebeurtenis van een veld gaat eerder af als de gebeurtenis die ervoor zorgt dat de tekst cursor naar het volgende veld op het formulier gaat. Dat heeft tot gevolg dat jou code er wel degelijk voor zorgt dat de cursor in het juiste veld terecht komt, maar vervolgens zorgt een volgende gebeurtenis ervoor dat de tekst cursor nog een veldje opschuift.

Controle of verplichte velden ingevuld zijn doe ik meestal nadat alle velden ingevuld zijn. Dus bij het drukken op een OK knop, het wijzigen van record of het afsluiten van een formulier. Dan kun je ook op combinaties van velden controleren. Op dat punt werken de setfocussen ook goed.
 
De oplossing mogen krijgen via ander formum.

De juist code is:

Private Sub Datumrit_Exit(Cancel As Integer)
If IsNull([Datumrit]) Then
MsgBox "Datum is een verplicht veld."
Me.Datumrit.SetFocus
Cancel = True
End If
End Sub​

De het vette deel bij te plaatsen gaat alles zoals het moet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan