Best Practices > Diskussionen zu Best Practices
[LS-Optimierung] Resume Next und Errorhandling
Glombi:
Resume Next verwende ich äußerst selten.
Ein Anwendungsfall: Man will in allen Dokumenten einer Datenbank ein neues Feld setzen. Man weiß aber nicht, ob man alle Dok. bearbeiten kann.
Dann so
set dc = db.AllDocuments
On Error Resume Next
set doc = dc.GetFirstDocument
doc.NeuesFeld = "wert"
call doc.Save(true,true,true) 'hier kann es zum Fehler kommen
set doc = dc.GetNextDocument(doc)
Wenn man ein Dokument nicht bearbeiten kann, geht es halt zum nächsten.
Die nicht geänderten kann man sich dann über eine Ansicht herausfiltern.
Andreas
TMC:
Das mit dem Feld-Setzen oder Löschen von Dokumenten (alle, selektierte etc.) habe ich auch schon so über Resume Next gemacht.
Fand ich da auch sehr praktisch, wenn der User nicht darf, wird einfach weitergemacht.
Ich hatte das da noch ein wenig verfeinert und bei diesem Scriptteil ein On Error goto SAVEERROR gesetzt (und danach wieder zurückgesetzt zu on error goto ErrorHandler).
Im SAVEERROR ist dann vor dem "Resume Next" noch ein intCount = intCount - 1 (um zu Zählen wieviele Doks tatsächlich bearbeitet wurden).
Glombi:
Resume Next ist u.a. auch in der R6 Mailschablone im Agenten (ImportHolidays) zu finden:
Set doc = m_dbCurrentDatabase.GetDocumentByUNID(APPTUNID) ' if its not there - needs fixup
On Error 4091 Resume Next
If (doc Is Nothing) Or (doc.Size <= 0) Then ' doc size of zero means its a ghost doc
Interessant auch
--- Zitat ---(doc.Size <= 0) Then ' doc size of zero means its a ghost doc
--- Ende Zitat ---
Das fange ich bisher so nicht ab. Was ist ein ghost doc? Soft Delition?
Andreas
TMC:
--- Zitat von: Glombi am 16.10.04 - 10:28:13 ---Interessant auch
--- Zitat ---(doc.Size <= 0) Then ' doc size of zero means its a ghost doc
--- Ende Zitat ---
Das fange ich bisher so nicht ab. Was ist ein ghost doc? Soft Delition?
--- Ende Zitat ---
Ich kenne das im Kontext von einer UnprocessedDocuments Collection, da hatte manchmal als Rückgabe Deletion Stubs. Die Abfrage nach der Größe (also If (doc.Size = 0) Then .....) lässt diese dann rausfiltern.
Was da allerdings das "<" - Zeichen soll ist mir nicht klar. Scheinbar gibt es negative Dokumentgrößen ;D
Semeaphoros:
Also, Deletion Stubs sollte man eigentlich über IsValid oder IsDeleted abfangen. Ghost-Document würde ich meinen, ist ein existierendes Dokument, das keinen wirklichen Inhalt hat, woher die dann aber kommen könnten, müsste man sich schon fragen, sieht nach einem Workaround aus
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln