Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: mde am 24.02.12 - 04:19:42
-
Hi @All
Ich muss eine größere Menge Dokumente in eine Archiv Db verschieben.
Dabei wollte ich die Call sourceDoc.CopyToDatabase(destDb) nutzen und das Dokument direkt danach aus der souce db mit Call doc.Remove(True) löschen.
Es gibt keine Antwortdokumente zu den Dokumenten in der Datenbank.
Werden die dabei die Dokumente erst kopiert, oder kann es passieren das er die Dokumenten schon löscht bevor diese kopiert sind? (Natuerlich ist der Code erst kopieren dann löschen.
Für eine kurze Info wäre ich dankbar.
Gruß
mde
-
Hi,
welchen Grund sollte es geben, wenn die Anweisung lautet
kopieren
löschen
das umgekehrt zu machen, wenn Anweisung für Anweisung abgearbeitet wird?
-
Wenn man auf Nummer sicher gehen will, kopiert man erst die Dokumente in einer Schleife in die Archivdatenbank und löscht diese nur, wenn dabei kein Fehler aufgetreten ist.
Wenn man die Dokumente vorher in einer DocumentCollection hat, ist das Löschen auch nur noch ein Einzeiler.
-
André hat grundsätzlich recht... for i = 1 to 10 zählt ja auch nicht einfach so mal rückwärts ;)
Was allerdings passieren kann:
- Dokumente "verschwinden" beim Kopieren, wenn z.B. Rollen in Leserfeldern beteiligt sind
- Ein verkorkstes Errorhandling (on error resume next) kann dafür sorgen, dass ein Dokument gelöscht wurde, obwohl es nicht kopiert wurde,
- beim Löschen aus collections muss man aufpassen, dass man das nächste Dokument holt, bevor man löscht, sonst kommt es zu einem Fehler.
Gruß
Roland
-
Danke für eure Antworten, das hat mir schon geholfen.
Gruß
mde
-
welchen Grund sollte es geben, wenn die Anweisung lautet
kopieren
löschen
das umgekehrt zu machen, wenn Anweisung für Anweisung abgearbeitet wird?
Daß Anweisung für Anweisung abgearbeitet wird, davon war ich auch überzeugt, bis ich es mit RT-Feldern zu tun hatte.
Seither gehe ich im Zweifelsfall davon aus, dass ein begonnener Prozeß nicht zwangsläufig zu Ende gebracht ist, wenn die nächste Zeile aufgerufen wird.
Von daher finde ich die Frage auch gar nicht so blöde, wie sie sich auf den ersten Blick anhört/liest.
Bei kopierten Dokumenten würde ich auf alle Fälle die Felder von Ausgangsdokument und Kopie noch auf Gleichheit prüfen, bevor ich endgültig lösche.