Domino 9 und frühere Versionen > ND7: Entwicklung

On Error Befehl wird ignoriert

<< < (2/2)

Demian:
Hallo Bernhard,

zu deinem Hinweis. Es handelt sich um Code, der in der Firma ausgeführt wird. Excel ist überall installiert. Selbst wenn dem nicht so wäre, der Button ist beschriftet mit: "Adressbuch in Excel auslesen", so das ein Anwender, der kein Excel hat, es hoffentlich auch nicht probieren würde.

Wo wir grad bei Endlosschleife sind: Kann man die Codeausführung in Notes nicht manuell mit Tastenkombination stoppen??? In Excel geht das mit Strg + Entf.

Wie gesagt, ich kenne das so aus Excel und hatte nie Probleme mit exit sub innerhalb der Fehlerbehandlung -> Der Code ist dann einfach kommentarlos augelaufen. Nur unter Notes reagiert er anders.

Das Problem ist, dass er ja gar nicht erst in die Fehlerbehandlung springt. Der Code in der Schleife läuft einfach weiter und erzeugt eine Fehlermeldung.

Habe es jetzt auch mit:

"Set feld = doc.GetFirstItem("Title")
If feld Is Nothing Then Exit Sub"

probiert, genau dasselbe Problem.

Selbst wenn ich statt "exit sub", "msgbox err()" eingebe, kommt keine Fehlermeldung mit der Nummer des Fehlers (91), sondern "Object Variable not set", was definitv bedeutet, dass er die Routine nicht anspringt. Der Fehler liegt also nicht in der Fehlerbehandlungsroutine -> die kommt ja gar nicht zum tragen.

Für mich stellt sich das so dar, dass Notes innerhalb einer Prozedur nur einen Fehler abfangen kann, und bei allen weiteren den Code so behandelt, als wäre überhaupt keine Fehlerroutine vorhanden.

Habe in meinem Kontaktbuch auch Personen, bei denen keine Straße hinterlegt ist, und er lässt die entsprechende Zellen in Excel einfach leer und macht ganz normal weiter. Ohne Fehlermeldung.

Die Zertifikate sind zwar nicht in der Ansicht enthalten, aber er hat sie im Zähler der Schleife mit drin. Irgendwann ist halt kein Dokument mehr da, bei dem er die Felder abfragen kann, was zum Fehler 91 führt, bei dem der Code einfach beendet werden soll.

Wenn er die Fehlerroutine ja anspringen würde, könnte ich das Problem mit einer Meldung umgehen, die den Anwender darauf hinweist, dass alles übertragen wurde.

Ich hoffe ihr wisst was ich meine.

Gruß
Demian

PS: Ja ich heiße wirklich so.

Zu Axel: Werde mir das heute Abend mal genauer durchlesen.

Und vielen Dank euch allen für eure Unterstützung.




Axel:

--- Zitat von: Demian am 07.04.06 - 08:20:54 ---Hallo Bernhard,

zu deinem Hinweis. Es handelt sich um Code, der in der Firma ausgeführt wird. Excel ist überall installiert. Selbst wenn dem nicht so wäre, der Button ist beschriftet mit: "Adressbuch in Excel auslesen", so das ein Anwender, der kein Excel hat, es hoffentlich auch nicht probieren würde.

--- Ende Zitat ---

Da bist aber ziemlich blauäugig. Die Anwender klicken auf so ziemlich alles was nach Button oder Menüpunkt aussieht. In der Programmierung ist es so, dass der Code nur zu einem Drittel aus wirklichem Code zu Programmbearbeitung besteht, der Rest ist Fehlerbehandlung.



--- Zitat von: Demian am 07.04.06 - 08:20:54 ---Wo wir grad bei Endlosschleife sind: Kann man die Codeausführung in Notes nicht manuell mit Tastenkombination stoppen??? In Excel geht das mit Strg + Entf.

--- Ende Zitat ---


Wenn du ein Programm in eine Endlosschleife schickst, dann kannst du es nur im Taskmanager abschießen. Das ist auch in Excel so.

Axel

animate:
Ich bin nicht sicher, aber ich denke, es könnte an dem Goto liegen.
Laut Hilfe
--- Zitat ---An error-handling routine begins with a labeled statement. The routine ends when LotusScript encounters a Resume, Exit Sub, Exit Property, or Exit Function statement. If an error occurs in the error-handling routine, execution ends.
--- Ende Zitat ---
endet eine Fehlerbehandlungsroutine nicht mit Goto. Das heißt, dass du, wenn der zweite Fehler auftritt, quasi immer noch in deiner Fehlerbehandlung bist. Und das weiß ich jetzt sicher, ein Fehler in der Fehlerbehandlung wird nicht von der Fehlerbehandlung bearbeitet.
Tausche doch mal Goto Weiter mit Resume Weiter aus, bitte.

Demian:
Hallo Thomas,

du hast es erfasst, funktioniert einwandfrei. Die Fehlerbehandlungsroutine sieht jetzt folgendermaßen aus:

   If  Err() = 208 Then
      Set ex =createobject("Excel.Application")
      Resume Weiter
   Else
      Exit Sub
   End If   

Es kommt zu keiner Fehlermeldung, der Code läuft einfach aus. So wie es auch sein soll. Vielen Dank.

Zu Axel:


--- Zitat ---Da bist aber ziemlich blauäugig. Die Anwender klicken auf so ziemlich alles was nach Button oder Menüpunkt aussieht. In der Programmierung ist es so, dass der Code nur zu einem Drittel aus wirklichem Code zu Programmbearbeitung besteht, der Rest ist Fehlerbehandlung.

--- Ende Zitat ---

Wie gesagt, es haben definitiv alle Excel. Zumal selbst die VBA-Autoren wie Bernd Held, es so machen. Wüsste ehrlich gesagt auch gar nicht, wie man das anders machen könnte????? Ich programmiere auch erst gut ein Jahr.


--- Zitat ---Wenn du ein Programm in eine Endlosschleife schickst, dann kannst du es nur im Taskmanager abschießen. Das ist auch in Excel so.
--- Ende Zitat ---

Ist es nicht. Wobei ich mich mit der Tastenkombination vertan habe. Sie lautet: Strg + Pause.

Wenn du in Excel einen Button mit folgendem Code anlegst:

For i = 1 To 65000
ActiveCell.Value = "Test" & i
Next i

ihn betätigst und dann Strg+Pause drückst, unterbricht er den Code. Auch bei Endlosschleifen. Habe es gerade in Notes ausprobiert:
   Dim ex
   Set ex = getobject(,"Excel.Application")
   
   For i= 1 To 65000
      ex.activecell.value = "Test" & i
   Next

Da geht es auch. Wobei Notes dann natürlich aktiviert werden muss.

Trotzdem vielen Dank euch für die Hilfe. Man lernt nie aus.

Gruß
Demian

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln