Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: KonradR am Januar 19, 2025, 11:39:46

Titel: .SetFocus funktioniert nur mit MsgBox
Beitrag von: KonradR am Januar 19, 2025, 11:39:46
Hallo liebe Accessfreunde,

Ich habe eine If - Then - Else Verzweigung geschrieben und möchte, dass beim Erfüllen der Bedingungen das Undo-Ereignis (Rückgängigmachen der Dateneingabe bzw. Drücken der ESC-Tase) erfolgt und ein Textfeld auf einem Unterformular den Fokus erhält. Leider funktioniert das nur, wenn ich die hier im Code aufgeführt MsgBox mit aufgeführten Inhalt verwende. Sonst ist der Fokus im benannten Textfeld nicht zu sehen.
Hier der Code:

    If RezGewicht0 = 0 Or rcsZugabeEinheit.Fields("rezgeGewicht").Value = 0 Then
        Me.Undo
    End If
     
    Me.Controls("sfrmRezepGeE").SetFocus
    Me.Controls("sfrmRezepGeE").Controls("txtRezGewicht").SetFocus
   
    MsgBox ActiveControl.Name
End Sub

Habt ihr eine Idee, woran das liegen könnte?
Titel: Re: .SetFocus funktioniert nur mit MsgBox
Beitrag von: Beaker s.a. am Januar 19, 2025, 12:45:20
Versuche es beim Ereignis "Vor Aktualisierung" (Control_ oder Form_)
und setze "Cancel" zusätzlich zum "Undo" auf "True".
Bei "Control_BeforeUpdate" bleibt dann der Focus autom. in dem Feld,
"SetFocus" ist dann also unnötig. Bei "Form_BeforeUpdate" sollte der
Focus auch ohne Msgbox gesetzt werden.
Titel: Re: .SetFocus funktioniert nur mit MsgBox
Beitrag von: KonradR am Januar 19, 2025, 13:10:17
Hallo Beaker s.a.,

Zitat von: Beaker s.a. am Januar 19, 2025, 12:45:20und setze "Cancel" zusätzlich zum "Undo" auf "True".

Danke. Das war die Lösung. Es funktioniert.
Titel: Re: .SetFocus funktioniert nur mit MsgBox
Beitrag von: Knobbi38 am Januar 20, 2025, 13:24:09
Hallo,

btw. wenn du hiermit
Me.Controls("sfrmRezepGeE").Controls("txtRezGewicht").SetFocus
den Fokus auf ein Control im UF setzen möchtest, wäre das falsch, es fehlt die Form-Eigenschaft:
Me.Controls("sfrmRezepGeE").Form.Controls("txtRezGewicht").SetFocus


Aus der Angabe "Me.Controls("sfrmRezepGeE")" entnehme ich, daß dein Subform-Control den gleichen Namen verwendet, wie dein UF. So etwas solltest du ändern und dein SubForm-Control umbenennen, z.B. "subContainer".

Gruß
Knobbi38