Color scheme: Dark
You are here: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » troubleshooting » Access reagiert nach einem Löschen oder einem Fehler nicht mehr

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 mit DeleteSelected gelö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. WklTreeList und WklGantt fragen auf dieselbe Weise nach.
  • Das VBA-Fehlerdialogfeld eines nicht behandelten Laufzeitfehlers in einer Ereignisprozedur (zum Beispiel in BeforeDelete, in Action von WklToast oder in einer Funktion, die in ActionFunction angegeben 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

  1. 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.
  2. Unterdrücken Sie die Rückfrage bei Löschvorgängen, die Code oder ein Ablauf ohne Benutzer ausführt: Behandeln Sie BeforeDelete und setzen Sie dort Confirm auf False (stellen Sie bei Bedarf dort Ihre eigene Frage), oder setzen Sie Cancel.
  3. 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.
  4. 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 · Last modified: by Wolfgang van der Stille