Ich bin in Access 2007 nach einem Zeitraum entwickelt andere Dinge zu tun und versuche, Nachrichten an den Benutzer einzufangen. Eine Funktion in einem Formular ändert eine Zeile in einer Tabelle. Die entsprechenden Bits des Codes sindTrap-Zugriff VBA-Nachrichten
On Error GoTo PROC_ERR
...
DoCmd.RunSQL szSQL
...
PROC_ERR:
MsgBox "Error: (" & Err.Number & ") " & Err.Description, vbCritical
Die SQL-Anweisung ist richtig und er System erscheint mit einem „Du bist ca. 1 Zeile aktualisieren ...“ Nachricht (Nummer 10505). Ich möchte dies abfangen und durch meine eigene Warnmeldung ersetzen. Meine Funktion enthält jedoch keinen Fehler für diese Nachricht. Dies trifft auch nicht auf die Meldung zu, die angezeigt wird, wenn der Benutzer auf "Nein" klickt: "Laufzeitfehler 2501. Die RunSQL-Aktion wurde abgebrochen."
In VBA-Optionen habe ich im Moment Fehler-Trapping gesetzt, um "bei allen Fehlern zu brechen".
Was fehlt mir hier? Ist es mir nicht gelungen, eine andere Option in Access festzulegen?
Fair genug. Aber ich nahm an, dass die Nachricht in der Standardliste der MS Access-Fehlermeldungen so auftrat, als wäre sie ein Fehler. Was ist mit dem anderen Fehler (2501)? Sollte das nicht gefangen sein? –
Ja, leicht - aber Sie können auch "DoCmd.RunSQL" durch "CurrentDb.Execute" ersetzen, um dies im Handumdrehen zu erhalten. – Gustav
Danke, dass Sie auf die alternative Funktion hingewiesen haben. Es funktioniert gut ohne die aufdringlichen Nachrichten. Aber ich habe es gerade mit einer Löschabfrage versucht, die wegen eines Beziehungsproblems fehlschlägt; Es wird ein 3200 Fehler "Datensatz kann nicht gelöscht oder geändert werden" ausgelöst. Wie der Fehler 2501 wird dies nicht von meinem Fehlerhandler abgefangen. Entschuldigen Sie, dass ich Sie weiter bedrängt habe, aber ich verstehe die Fehlerbehandlung als falsch. –