Formular schließt sich nicht

Ich habe ein „Kennwort“ Formular erstellt. In ein Textfeld wird ein Code eingegeben. Danach klicke ich auf die Schaltfläche „OK“ und die Prüfroutine läuft ab. Am Schluss dieser Routine kommt „docmd.close“. Das Formular schließt sich. Ist ja auch ok.

Aber nachdem ich in das Textfeld mein Kennwort eingegeben habe, drücke ich gewohnheitsmäßig die Enter-Taste. Dadurch verlasse ich das Feld und der Fokus wird auf dem „OK“-Button gesetzt. Durch ein weiteres Enter wird der Button „gedrückt“. Ich möchte aber, das bereits beim Verlassen des Textfeldes, also alternativ zum „OK“-Button der Code ausgeführt wird. Habe es mit „Beim Verlassen“ , „Fokusverlust“ usw. schon probiert. Der Code läuft auch. Nur docmd.close führt zu einer Fehlermeldung.

Selbst bei einer einfachen Datenbank, die nur aus einem Formular, einem Textfeld und einem Button besteht, und ich „beim Verlassen“ des Textfeldes nur docmd.close ausführen lasse, kommt es zu dieser Fehlermeldung.

Die Fehlermeldung lautet sinngemäß, dass die Ereignissprocedur noch nicht abgeschlossen ist. Habt ihr eine Idee?

Hallo

Ich weiss im Moment auch nicht genau, welches Ereignis den Fehler verursacht, bei mir ist es dasselbe.

Wenn ich nun aber beim OK-Knopf für das Ereignis BeiFokusErhalt den Befehl Sendkeys „{ENTER}“ einfüge, schliesst das Formular wie gewünscht.

Gruss Matthias

Cool, das hilft mir doch weiter. Gut der Mann. Danke!

Eigenschaften setzen
Moin Dylan,

setz’ die Eigenschaft „Standard“ des Buttons auf „JA“, dann dürfte es funktionieren.

Wenn Du auch einen „Abbrechen“-Button in Deinem Formular hast, dann setz’ dessen „Abbrechen“-Eigenschaft auch auf „JA“.

Gruß
(Woly)

hi zusammen

ich bin mir nicht sicher, aber ich schliesse formular u.s.w. jeweils mit „DoCmd.Close acForm, formularname“ die aktion scheint bei mir immer zu funktionieren, möglicherweise denkt sich access beim OK button klicken diesen code, beim verlassen eines feldes muss der code jedoch genauer sein … wer weiss :smile: vielleicht hilft das :smile:

mfg christian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

ich bin mir nicht sicher, aber ich schliesse formular u.s.w.
jeweils mit „DoCmd.Close acForm, formularname“ die aktion
scheint bei mir immer zu funktionieren, möglicherweise denkt
sich access beim OK button klicken diesen code, beim verlassen
eines feldes muss der code jedoch genauer sein … wer weiss

) vielleicht hilft das :smile:

mfg christian

Ja, Ereignis bei Klick ok. Aber führ den Befehl mal „beim Verlassen“ eines Textfeldes aus. Dann funzt es nicht.

Nein, die Angaben sämtlicher Parameter des Befehls docmd.close ändert an der Fehlermeldung nichts.

Nein tut es nicht, denn die Fehlermeldung hat mit der Befehlsschaltfläche nichts zu tun, sondern kommt vom Texteingabefeld. Die Standardoption des Buttons hat darauf Keinen einfluss.

das ganze in eine Funktion schreiben

Nein, die Angaben sämtlicher Parameter des Befehls docmd.close
ändert an der Fehlermeldung nichts.

wie währs mit einer funktion

Public Function QuitForm()
DoCmd.Close
End Function

Private Sub my_field_Exit(Cancel As Integer)
call QuitForm()
End Sub

als so funktioniert es bei mir, muss natürlich keine Public function sein, aber so kann man sie in allen Forms benutzen.

Dann wäre es sinnvoll zu wissen, welche Ereignisse bei Dir welchen Code auslösen…

Das hat Dylan doch in seiner Anfrage genau beschrieben…

Ich habe danach nur getestet, was passiert, wenn ich BeimVerlassen (oder auch BeimFokusverlust) des Textfeldes Docmd.Close (mit und ohne Parameter) angebe. Und das führt eben zu der Fehlermeldung. Di Lösung zum Problem habe ich ja in meiner antwort beschrieben.

Auch das funktioniert nicht, wenn man genau das machen will was Dylan in seiner Anfrage beschrieben hat.

Aber das Problem ist ja längst gelöst (siehe meine erste Antwort).

Interessant wäre nur herauszufinden rsp. zuz erfahren, WESHALB die Fehlermeldung kommt.