Access reagiert nach einem Löschen oder einem Fehler nicht mehr
Umgebung
Alle Steuerelemente, in einem Access, das per Automatisierung (New Access.Application, CreateObject) oder
unsichtbar (Visible = False) gestartet wurde, sowie in einem Access, dessen Fenster hinter anderen Fenstern liegt.
Ursache
Access hängt nicht, sondern wartet auf ein Meldungsfeld, das niemand sieht. Zwei Arten sind bekannt:
- Die Rückfrage von
WklGrid(„Möchten Sie 3 Datensätze löschen?“), wenn Datensätze mit der Taste Entf, über das Kontextmenü oder mitDeleteSelectedgelöscht werden. Es ist ein Windows-Meldungsfeld (Fensterklasse#32770, Titel „WKL Grid“), dessen Besitzer das Access-Hauptfenster ist: Ist Access unsichtbar, ist auch das Meldungsfeld unsichtbar, und Access wartet darauf.WklTreeListundWklGanttfragen auf dieselbe Weise nach. - Das VBA-Fehlerdialogfeld eines nicht behandelten Laufzeitfehlers in einer Ereignisprozedur (zum Beispiel in
BeforeDelete, inActionvonWklToastoder in einer Funktion, die inActionFunctionangegeben ist) sowie das Dialogfeld eines Kompilierfehlers in einem Modul.
Der Task-Manager zeigt Access nur so lange als „Keine Rückmeldung“ an, wie das Dialogfeld wartet; die CPU bleibt dabei unbelastet.
Lösung
- Machen Sie Access sichtbar (
Application.Visible = True) oder holen Sie sein Fenster in den Vordergrund, um das Dialogfeld zu sehen; oder suchen Sie mit einem Fensterwerkzeug im Access-Prozess nach einem Fenster der Klasse#32770. - Unterdrücken Sie die Rückfrage bei Löschvorgängen, die Code oder ein Ablauf ohne Benutzer ausführt: Behandeln Sie
BeforeDeleteund setzen Sie dortConfirmauf False (stellen Sie bei Bedarf dort Ihre eigene Frage), oder setzen SieCancel. - Geben Sie jeder Ereignisprozedur und jeder Funktion, die ein Steuerelement aufruft, eine Fehlerbehandlung (
On Error GoTo ...); schreiben Sie Fehler in ein Protokoll oder eine Tabelle, statt sie dem VBA-Dialogfeld zu überlassen. - Kompilieren Sie die Datenbank (Debuggen › Kompilieren), bevor sie unbeaufsichtigt läuft.
Verwandte Themen
de/wiki/msaccess/comctl/troubleshooting/access-waits-on-a-hidden-dialog.txt · Zuletzt geändert: von Wolfgang van der Stille