Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: hawebe am Juli 20, 2012, 15:17:16

Titel: Fehler.log nach A. Minhorst zeigt ErrNr nicht an
Beitrag von: hawebe am Juli 20, 2012, 15:17:16
Hallo,

ich bin mit dem nachfolgend beschriebenen Problem überfordert. Könnt Ihr mir helfen?

Ich nutze den ErrorHandler von A. Minhorst in folgender Umgebung:

MSO 2010 (ohne Access)
MS Access 2003

In den Verweisen ist gesetzt: OLE Automation

Problem: Fehlernummer und Fehlerbeschreibung werden in der Fehler.log nicht angezeigt.

Fehler.log:
Datum:              2012-07-20, 14:04:08
Datenbankpfad:      D:\ARBEIT\Akuell_dasEtikett\dasEtikett_v1.0\dasEtikett_v1.0.mdb
Modul:              Form_frm_ERSTBESTELLUNG
Routine:            Preisdatoeffnen_Click
Benutzer:           Admin
Rechner:            BUERO
Fehlernummer:       0
Fehlerbeschreibung:
Zeile:              26800
Bemerkungen:        Bemerkungen: ./.

Aufruf:
Call Fehlerbehandlung("Form_frm_ERSTBESTELLUNG ", "Preisdatoeffnen_Click", Erl, "Bemerkungen: ./.")

Modul:

Private Declare Function GetComputerName Lib "kernel32.dll" Alias "GetComputerNameA" (ByVal lpBuffer As String, ByRef nSize As Long) As Long

Public Function Fehlerbehandlung(strModul As String, strRoutine As String, lngZeile As Long, Optional strBemerkungen As String)
   On Error Resume Next
   Open CurrentProject.Path & "\Fehler.log" For Append As #1
   Print #1, "Datum:              " & Format(Now, "yyyy-mm-dd, hh:nn:ss")
   Print #1, "Datenbankpfad:      " & CurrentDb.Name
   Print #1, "Modul:              " & strModul
   Print #1, "Routine:            " & strRoutine
   Print #1, "Benutzer:           " & CurrentUser()
   Print #1, "Rechner:            " & ComputerName()
   Print #1, "Fehlernummer:       " & Err.Number
   Print #1, "Fehlerbeschreibung: " & Err.Description
   Print #1, "Zeile:              " & lngZeile
   Print #1, "Bemerkungen:        " & strBemerkungen
   Print #1, ""
   Close #1
   Reset
   MsgBox "Es ist ein Fehler aufgetreten. " & vbCrLf & "Weitere Informationen finden Sie in der Datei Fehler.log im Verzeichnis dieser Datenbank."
End Function

Function ComputerName() As String
   Dim strComputer As String
   Dim n As Long
   n = 255
   strComputer = String$(n, 0)
   Call GetComputerName(strComputer, n)
   ComputerName = left(strComputer, n)
End Function
Titel: Re: Fehler.log nach A. Minhorst zeigt ErrNr nicht an
Beitrag von: bahasu am Juli 20, 2012, 18:26:19
Hi,

habe mal versuchsweise die Fehlernummer und die Beschreibung als Parameter der Fehlerbehandlungsroutine übergeben.
Bei dem Fehler "durch Null dividieren  (wird im Fomular durch Anklicken vom Button ausgelöst) wird die Nr und die Beschreibung in der log-Datei gespeichert.

Vielleicht stehen die Nr und die Beschreibung außerhalb der Fehlerprocedure nicht zur Verfügung?

Harald

[Anhang gelöscht durch Administrator]
Titel: Re: Fehler.log nach A. Minhorst zeigt ErrNr nicht an
Beitrag von: hawebe am Juli 20, 2012, 21:50:58
Hallo,

kann sein, aber auch nicht sein.

Allerdings werden in der der BspDb vom Minhorst (mehrere Fehlerprodezuren) diese Felder auch nicht angezeigt. Man findet jedoch die Fehlernummer in der Beschreibung:

Datum:              2012-07-20, 21:23:45
Datenbankpfad:      D:\ARBEIT\Akuell_dasEtikett\Prgr_Minhorst_Fehlerbehandlung\Fehlerbehandlung.mdb
Modul:              Form_frmFirmen
Routine:           
Benutzer:           Admin
Rechner:            BUERO
Fehlernummer:       0
Fehlerbeschreibung:
Zeile:              0
Bemerkungen:        Bemerkungen: Fehlernummer 2169

Warum aber in den Bemerkungen und nicht in dem dafür vorgesehenen Feld ?
Mein Wissen reicht für die Problemlösung leider nicht aus. Ich habe die Bemerkungen aus der Function rausgenommen, weil ich hier einen Konflikt vermutet hatte. War aber nicht die Ursache.

Die Logik sagt mir: Wenn Minhorst diese Felder in seine Fehler.log eingebaut hat, müssten sie doch auch befüllt werden. Oder?
Titel: Re: Fehler.log nach A. Minhorst zeigt ErrNr nicht an
Beitrag von: bahasu am Juli 20, 2012, 22:25:19
N'Abend

erläutere bitte das Umfeld der Anweisung:
Call Fehlerbehandlung("Form_frm_ERSTBESTELLUNG ", "Preisdatoeffnen_Click", Erl, "Bemerkungen: ./.")

Wo steht das? In welcher Sub? Wie lauten die dort stehenden Programmzeilen?

Wie lautet die Internet-Adresse zu diesen Programmzeilen?

Harald
Titel: Re: Fehler.log nach A. Minhorst zeigt ErrNr nicht an
Beitrag von: hawebe am Juli 21, 2012, 09:15:47
Guten morgen Harald,

man muss mitunter erst mal eine Nacht darüber schlafen. Natürlich gibt es diese weiteren Prozeduren. Ich habe den Zusammenhang nur nicht erkannt.  Minhorst hat mehrere davon in einem Modul Beispielfehler mit speziellen Routinen abgelegt. Das ist die Grundlage, die Fehler.log nur eine Ergänzung.

Diese Routinen sind sehr speziell (z.Bsp. unter Einbeziehung von db-tbl) gefasst. Ich brauche aber im Grund keine Fehlerbehandlung, sondern nur eine Fehlermeldung (.log), die mich schnell zu dem Fehler führt. Also nur eine Function, die die Fehler.log in den Feldern ergänzt.

Beispielfehler: Ich hoffe, dass die u.a. Prozeduren weiterhelfen.

Public Function DivisionDurchNull()
    On Error GoTo DivisionDurchNull_Err
    Dim i As Integer
    i = 1 / 0
DivisionDurchNull_Exit:
    Exit Function
DivisionDurchNull_Err:
    MsgBox "Fehlernummer: " & Err.Number _
        & vbCrLf & "Beschreibung: " & Err.Description _
        & vbCrLf & "Zeile: " & Erl
    GoTo DivisionDurchNull_Exit
End Function

oder:

Public Function FirmaAnfuegen(strFirma As String)
    On Error GoTo FirmaAnfuegen_Err
    Dim db As DAO.Database
    If Len(strFirma) = 0 Then
        Err.Raise vbObjectError + 1
    End If
    Set db = CurrentDb
    db.Execute "INSERT INTO tblFirmen(Firma) VALUES('" & strFirma & "')", dbFailOnError
    Set db = Nothing
FirmaAnfuegen_Exit:
    Exit Function
FirmaAnfuegen_Err:
    Select Case Err.Number
        Case 3022
            MsgBox "Die Firma ist bereits vorhanden. Bitte geben Sie einen anderen Firmennamen ein."
        Case vbObjectError + 1
            MsgBox "Bitte geben Sie einen Firmennamen an."
    End Select
    GoTo FirmaAnfuegen_Exit
End Function



Titel: Re: Fehler.log nach A. Minhorst zeigt ErrNr nicht an
Beitrag von: bahasu am Juli 21, 2012, 11:16:36
Moin ins Emsland,

habe einen Link zu "Minhorst" gefunden:
http://www.access-entwicklerbuch.de/2007/index.php?page=buch&bookpage=Kap_13/04_03.html

Meine Hoffnung, ein Beispiel zu finden , was den Sinn für die Dokumentation von "Bemerkungen: ./." in der log-Datei erklärt, hat sich dort nicht erfüllt.

Wie lautet denn bei Dir der Aufruf der Fehlerroutine, bei der als Resultat
Bemerkungen:        Bemerkungen: Fehlernummer 2169
herauskommt? "Bemerkungen: ./." kann es nicht sein. Was steht stattdessen dort?

Harald
Titel: Re: Fehler.log nach A. Minhorst zeigt ErrNr nicht an
Beitrag von: hawebe am Juli 21, 2012, 17:33:58
Hallo,

die Bemerkungen kommen zustande, wenn ich den Fehler auslöse, der zur Abarbeitung der Public Function FirmaAnfuegen(strFirma As String) (siehe letzte Antwort) führt.

Wie und warum diese Bemerkungen zustande kommen und wieso die Fehlernummer gerade dort erscheint, kann ich mir auch nicht erklären. Ich hatte hier anfangs mal einen Konflikt vermutet und sie komplett rausgenommen; brachte aber nichts.

In einem anderen Zusammenhang habe ich A. Minhorst gestern per mail kontaktiert und dabei auch auf dieses Problem hingewiesen. Dazu teilte er mir mit."Fehler-Log: Ich glaube, mich zu erinnern, dass zu Beginn der Fehlerbehandlungsroutine ein On Error Resume Next steht. Das muss raus, weil dadurch das Err-Objekt zurückgesetzt wird."
Habe ich gemacht; bringt auch nichts.

Wat Nu?

Ich könnte Dir die BspDatenbank mailen. Aber: Wir sollten m.E. nicht mehr so viel Zeit investieren. Wie die praktische Anwendung der letzten Tage gezeigt hat, sind Fehlernummer und /-beschreibung als "nice to have" zu sehen. Mir reichen Modul, Routine und Zeilennummer völlig aus, um den Fehler schnell zu finden.

Viel wichtiger (Mehrplatzumgebung 8 User) wäre es für mich, die Zeile

Print #1, "Benutzer:   " & CurrentUser() ' hier steht immer der admin drin

so zu befüllen, dass der tatsächliche User angezeigt wird. Dieser liesse sich aus einem ungebundenen Textfeld auslesen: = Forms!frmKundedat.Form!KundBer

Ich habe allerdings keine Ahnung, wie das zu machen ist. Meine bisherigen Versuche in der Function legten die Routinen lahm.

Titel: Re: Fehler.log nach A. Minhorst zeigt ErrNr nicht an
Beitrag von: DF6GL am Juli 21, 2012, 17:37:50
Hallo,

nur zu:

ZitatViel wichtiger (Mehrplatzumgebung 8 User) wäre es für mich, die Zeile

Print #1, "Benutzer:   " & CurrentUser() ' hier steht immer der admin drin

so zu befüllen, dass der tatsächliche User angezeigt wird. Dieser liesse sich aus einem ungebundenen Textfeld auslesen: = Forms!frmKundedat.Form!KundBer



einfach so, wenn Obiges zutrifft:

Print #1, "Benutzer:   " & Forms!frmKundedat.Form!KundBer
Titel: Re: Fehler.log nach A. Minhorst zeigt ErrNr nicht an
Beitrag von: hawebe am Juli 21, 2012, 18:28:22
 :D

Funktioniert, damit habe ich alles was ich brauche.

Vielen Dank für Deine Mühe.
Titel: Re: Fehler.log nach A. Minhorst zeigt ErrNr nicht an - an Harald
Beitrag von: hawebe am Juli 22, 2012, 20:43:20
Hallo Harald,

ich denke es wird Dich interessieren, dass Fehlernummer und Fehlerbeschreibung in der Function von A. Minhorst nun angezeigt werden.

Ich hatte ja berichtet, dass das Auskommentieren von "On Error Resume Next" nichts brachte. Diesen Erkenntnis hatte ich nicht weiterüberprüft und so hingenommen.
Heute morgen nun, stelle ich fest, dass diese beiden Informationen angezeigt werden.

Es lag also, wie Minhorst sagte, am On Error Resume Next.