Supportnet / Forum / Datenbanken
Fehlermeldungen speichern
Frage
Hallo,
gibt es eine Möglichkeit im Access alle Fehler, die auftreten, in einer Tabelle zu speichern. Es sollen wirklich alle Fehlermeldungen aufgelistet werden, auch die, die beim Starten und beim Schließen der Datenbank erscheinen.
Gruß
stirlitz
Antwort 1 von stirlitz
Weiß es wirklich keiner?
Ich habe beobachtet, dass Access automatisch eine Tabelle erstellt und Fehlermeldung reinschreibt, wenn ein Konvertierungsfehler auftritt. Ich möchte aber, dass ALLE Fehler dokumentiert werden. Wie z.B. beim Starten der Datenbank: Zugriff wurde verweigert oder Backend-Datei nicht gefunden o.ä.
Gruß stirlitz
Ich habe beobachtet, dass Access automatisch eine Tabelle erstellt und Fehlermeldung reinschreibt, wenn ein Konvertierungsfehler auftritt. Ich möchte aber, dass ALLE Fehler dokumentiert werden. Wie z.B. beim Starten der Datenbank: Zugriff wurde verweigert oder Backend-Datei nicht gefunden o.ä.
Gruß stirlitz
Antwort 2 von lorf55
Hallo,
da kann ich dir nur ein paar Stichpunkte aus der Hilfe geben:
- Error-Ereignis (Fehler)
- On Error-Anweisung
- Err-Objekt
- Ermitteln der von Visual Basic reservierten Fehlercodes
Dazu gibt es dort reichlich Beispiele als SUB.
Davon suchst du dir ein passendes aus und arbeitest es um, damit es in eine Tabelle schreibt. Den Aufruf dieser Sub fügst du in jeder deiner Ereignisroutinen bei einer On-Error-Anweisung ein. Bei Formularen und Berichten gibt es auch noch das Ereignis "Bei Fehler" wo man sowas unterbringen kann.
Gruß
lorf
da kann ich dir nur ein paar Stichpunkte aus der Hilfe geben:
- Error-Ereignis (Fehler)
Zitat:
Das Ereignis Error tritt ein, wenn in Microsoft Access ein Laufzeitfehler erzeugt wird, während ein Formular oder Bericht den Fokus hat. Dies gilt auch für Fehler der Microsoft Jet-Datenbank-Engine, nicht jedoch für Laufzeitfehler in Visual Basic.
Das Ereignis Error tritt ein, wenn in Microsoft Access ein Laufzeitfehler erzeugt wird, während ein Formular oder Bericht den Fokus hat. Dies gilt auch für Fehler der Microsoft Jet-Datenbank-Engine, nicht jedoch für Laufzeitfehler in Visual Basic.
- On Error-Anweisung
- Err-Objekt
- Ermitteln der von Visual Basic reservierten Fehlercodes
Dazu gibt es dort reichlich Beispiele als SUB.
Davon suchst du dir ein passendes aus und arbeitest es um, damit es in eine Tabelle schreibt. Den Aufruf dieser Sub fügst du in jeder deiner Ereignisroutinen bei einer On-Error-Anweisung ein. Bei Formularen und Berichten gibt es auch noch das Ereignis "Bei Fehler" wo man sowas unterbringen kann.
Gruß
lorf
Antwort 3 von stirlitz
Perfekt! Danke lorf. Du hast mich auf die richtige Spur gebracht.
In meiner Datenbank öffnet sich ein Formular direkt beim Starten der DB. Das Formular ist mit einer Tabelle in der Backend-Datei verknüpft. Wenn die BE-Datei gelöscht wird, wird eine Fehlermeldung angezeigt. So… D.h. der Fehler tritt erst beim Laden des Formulars auf und nicht, wie ich vermutet habe, beim Starten der Anwendung. Und jetzt, wie Du schon sagtest, kann ich im Ereignis "Bei Fehler" die Fehlermeldung in die Tabelle schreiben.
Gruß stirlitz
In meiner Datenbank öffnet sich ein Formular direkt beim Starten der DB. Das Formular ist mit einer Tabelle in der Backend-Datei verknüpft. Wenn die BE-Datei gelöscht wird, wird eine Fehlermeldung angezeigt. So… D.h. der Fehler tritt erst beim Laden des Formulars auf und nicht, wie ich vermutet habe, beim Starten der Anwendung. Und jetzt, wie Du schon sagtest, kann ich im Ereignis "Bei Fehler" die Fehlermeldung in die Tabelle schreiben.
Gruß stirlitz
Antwort 4 von lorf55
"Die Wege des Herrn sind unerforschlich."
Toll !!! Hätte ich nicht gedacht, dass wir das so schnell lösen.
Gruß
lorf
Toll !!! Hätte ich nicht gedacht, dass wir das so schnell lösen.
Gruß
lorf
Antwort 5 von stirlitz
Hallo,
Eine kleine Frage habe ich doch noch. Wie kann ich die Fehlerbeschreibung anzeigen lassen? (Jetzt ohne in die Tabelle zu schreiben)
Wenn ich so vorgehe
Gruß stirlitz
Eine kleine Frage habe ich doch noch. Wie kann ich die Fehlerbeschreibung anzeigen lassen? (Jetzt ohne in die Tabelle zu schreiben)
Wenn ich so vorgehe
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Debug.Print DataErr, AccessError(DataErr)
End Subwird mir das 3024 Datei '|' nicht gefundenangezeigt. Die automatisch von Access angezeigte Fehlerbeschreibung enthält auch den Pfad der Be-Datei Datei 'C:\Test_be.accde' nicht gefundenUnd so möchte ich auch haben. Wie kann ich dieses lösen???Gruß stirlitz
Antwort 6 von lorf55
Hallo stirlitz,
meinst du sowas:
MsgBox "Fehler " & DataErr & ": " & AccessError(DataErr)
Gruß
lorf
meinst du sowas:
MsgBox "Fehler " & DataErr & ": " & AccessError(DataErr)
Gruß
lorf
Antwort 7 von stirlitz
Nicht ganz. "AccessError(DataErr)" gibt mir die Beschreibung des Fehlers ohne dem Pfad der Datei:
"Datei '|' nicht gefunden".
Ich möschte aber gern wissen, welche Datei nun fehlt.
Gruß stirlitz
"Datei '|' nicht gefunden".
Ich möschte aber gern wissen, welche Datei nun fehlt.
Gruß stirlitz
Antwort 8 von lorf55
Du könntest ja mal statt dessen dieses ausprobieren:
(aus KB208704)
Das ergibt drei Meldungen für einen Fehler. Da kannst du dir die passende aussuchen.
Ein anders Beispiel für Fehlerbehandlung gibts hier.
Gruß
lorf
Private Sub Form_Error(DataErr As Integer, Response As Integer)
MsgBox Error$(DataErr)
MsgBox Application.AccessError(DataErr)
Response = acDataErrDisplay
End Sub(aus KB208704)
Das ergibt drei Meldungen für einen Fehler. Da kannst du dir die passende aussuchen.
Ein anders Beispiel für Fehlerbehandlung gibts hier.
Gruß
lorf

