katz_1 Geschrieben 30. März 2005 Geschrieben 30. März 2005 hallo, hat jemand mal so ein oder ähnliches problem gehabt und könnte mir tip geben: Die Anwendung ist in Access, es gibt eine schnittstelle zu anderer anwendung, es wird in der sub ein object dafür erzeugt, damit connected und dann in einer schleife über recordset einiges abgearbeitet. Damit bei den fehlern mein programm nicht stehen bleibt, sondern den nächsten record abarbeitet, habe ich die fehlerbehandlung eingeführt, so dass beim fehler ins logbuch der grund geschrieben wird, und dann wird weitergemacht. Dann passiert folgendes: ersten Fehler bekomme ich von der anderen anwendung zu der ich connected bin durch ein object, in diesem fall geht das programm zur fehlerbehandlung und dann in die nächste runde. dann gibt es wieder einen fehler. Und bei diesem zweiten mal wird dieser fehler gleich mit messagebox angezeigt, also bleibt mein programm stehen, anstelle in die fehlerroutine zu gehen. (ich hab auch schon versucht mit err.clear "fehlerobject" zu beseitigen, klappt nicht) HILFE!! hier skizzenweise das programm: 'die sub ist im klassenmodul eines formulars Private Sub Select() on error goto Select_while_Err set myRecordSet=CurrentDb.OpenRecordset(...) do .... if fehler then Err.Raise err_num, , "blabla" .... goto while_next Select_while_Err: call writeLogbuch("Fehler soundso") while_next: myRecordset.MoveNext Loop Until myRecordSet.EOF ... end sub Zitieren
Manfred.Becker Geschrieben 30. März 2005 Geschrieben 30. März 2005 Hi katz_1, was ist denn das für eine Fehlernehandlung (mit GOTO!!!)? Das ist mehr als übel! Ausserdem musst du in der Fehlerbehandlung mit RESUME arbeiten, um weiterzumachen! Hier mal ein Grundgerüst für die Fehlerbehandlung: Private Sub MySub() On Error GoTo ErrorHandler ... Step1: ... Exit Sub ErrorHandler: Dim ErrNumber, ErrDescription ErrNumber = Err.Number ErrDescription = Err.Description Select Case ErrNumber Case ??? Resume Case ??? Resume Next Case ??? Resume Step1 Case Else MsgBox ErrDescription, , "Fehler " & ErrNumber End End Select End Sub [/PHP] Zitieren
katz_1 Geschrieben 30. März 2005 Autor Geschrieben 30. März 2005 ich habe vor der eigentlichen fehlerbehandlung ein goto weil ich ja nicht aus der routine raus will, sondern den nächsten eintrag im recordset bearbeiten möchte (so springe ich zu der anweisung myrecordset.movenext und wieder zu dem anfang der do..while-schleife). Ein resume konnte ich nicht verwenden, weil mit dem fehler kann man jetzt den laufenden job nicht beenden, aber man sollte dann neuen starten, der ja im nächsten record definiert ist. der kern des problems ist ja eigentlich, dass die anweisung on error goto errorHandler scheinbar gar nicht funktioniert beim zweiten fehler, und dieser sofort beim vorkommen auch schon angezeigt wird, programm stoppt mit message-fenster. Zitieren
Manfred.Becker Geschrieben 30. März 2005 Geschrieben 30. März 2005 Hi katz_1, ...der kern des problems ist ja eigentlich, dass die anweisung on error goto errorHandler scheinbar gar nicht funktioniert beim zweiten fehler... natürlich wird dein zweiter Fehler ignoriert, weil du immernoch in der Fehlerbehandlung des ersten Fehlers bist!!! Du must mit Resume arbeiten, sonst wird das nie was! (Meinetwegen auch mit Resume Sprungmarke) Zitieren
katz_1 Geschrieben 31. März 2005 Autor Geschrieben 31. März 2005 vielen dank, jetzt hab ich es kapiert Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.