PDA

Vollständige Version anzeigen : Problem mit Set Focus


Ulrike B.
24.09.2003, 10:02
Hallo,

in einem Unterformular habe ich ein Feld "Rechnungsdatum" Dieses ist als Pflichtfeld voreingestellt.



Private Sub Rechnungsdatum_LostFocus()
'Prüfung, ob erforderlicher Wert eingegeben wurde

If IsNull(Rechnungsdatum) Or Rechnungsdatum = "" Then
MsgBox "Sie haben kein Datum eingetragen. " & _
"Bitte geben Sie ein Datum in der Form TT.MM.JJJJ ein.", vbExclamation, "Kein Datum"

Me!Rechnungsdatum.SetFocus

End If

End Sub



Mit der rot markierten Zeile möchte ich erreichen, dass der Focus wieder auf das Feld "Rechnungsdatum" gesetzt wird, wenn nichts eingetragen ist. Der Anwender soll das Feld also nicht verlassen können.

Das funtioniert aber nicht. Access springt zum nächsten Formularfeld, wenn die Msg-Box mit OK bestätigt wird.

Leider finde ich den Fehler nicht.

Weiß jemand Rat?

Danke schonmal und Grüße

Ulrike

Aquarii
24.09.2003, 10:13
Hallo Ulrike,

um den Fokus auf ein Element im UFo setzen zu können, ist es oft notwendig, zusätzlich vorher den Fokus auf das UFo-Steuerelement im Hauptformular, zu setzen, also jenes Steuerelement, in dem sich das UFo befindet:

Me![UFoSteuerelement_im_Hauptformular].SetFocus
Me![UFoSteuerelement_im_Hauptformular].Form![Steuerelement_im_UFo].SetFocus

Lothi
24.09.2003, 10:17
Hallo Ulrike

Ich würde das beim Ereignis Vor Aktulisierung machen da gibs dem Parameter Cancel und wenn du den auf True stellst kann das Feld nicht verlassen werden.

Private Sub Rechnungsdatum_BeforeUpdate( Cancel As Integer)
'Prüfung, ob erforderlicher Wert eingegeben wurde

If IsNull(Rechnungsdatum) Or Rechnungsdatum = "" Then
MsgBox "Sie haben kein Datum eingetragen. " & _
"Bitte geben Sie ein Datum in der Form TT.MM.JJJJ ein.", & _
vbExclamation, "Kein Datum"
Cancel = true


End If

End Sub

Ulrike B.
24.09.2003, 11:44
Hallo,

vielen Dank für die Hilfe.

@ Heiko: Bekomme ich leider noch nicht ganz hin. Mein Code würde lauten


Me![frmEinzellieferung].SetFocus
Me![frmEinzellieferung].Form![Rechnungsdatum].SetFocus


Aber wo muss ich diesen unterbringen? Im Hauptformular "frmFortsetzung" oder im UFo "frmEinzellieferung"? Bei welchem Ereignis?

@ Lothi: Danke für die Idee, der Gedanke ist interessant, funktioniert aber leider nicht, da im Ereignis "Vor Aktualisierung" die Msg-Box gar nicht mehr erscheint. :-(

Viele Grüße

von

Ulrike

Lothi
24.09.2003, 11:53
Hallo

Die Prüfung kannst du wenn das Rechnungsdatum ein Datumsfeld ist mit

If Not IsDate(Me!Rechnungsdatum) Then
Deine MSGBOX


Soviel ich weiss geben Datumsfelder 0:00:00 zurück und nicht NULL. Darum ist bei deiner Prüfung alles in Ordnung.

Ulrike B.
25.09.2003, 12:50
Hallo,

an alle die's interessiert: Inzwischen konnte ich das Problem lösen. Nach meinem Feld Rechnungsdatum steht im Unterformular das Feld Preis.

Wenn der Code für das Datumsfeld an das Ereignis "Got Focus" im Feld "Preis" gebunden wird, funktioniert alles, wie gewünscht.



Private Sub Preis_GotFocus()
'Prüfung, ob erforderlicher Wert eingegeben wurde

If IsNull(Rechnungsdatum) Or Rechnungsdatum = "" Then
MsgBox "Sie haben kein Datum eingetragen. " & _
"Bitte geben Sie ein Datum in der Form TT.MM.JJJJ ein.", vbExclamation, "Kein Datum"
Me!Rechnungsdatum.SetFocus
End If

End Sub



Vielen Dank an alle fürs Grübeln und schöne Grüße

von

Ulrike