Domino 9 und frühere Versionen > ND8: Entwicklung
Vorgehensweise Dokumente synchronisieren
Thomas Schulte:
Und wenn du anstelle der Liste eine documentcollection aufbaust und die Dokumente da reinlegst, dann kannst du mit
Dc.removeall
Die Dokumente in einem Rutsch löschen ohne noch eine Schleife durchlaufen zu müssen.
Das spart ein wenig Zeit.
Thomas Schulte:
Noch eine Anmerkung zum Thema löschen in Ansichten wÄhrend der Arbeit in Script.
Das ist ganz grundsätzlich keine gute Idee, weil es die Performance satt in den Keller zieht.
Je nachdem wo du das machst fängst du da nämlich an den indexer des servers in die Knie zu zwingen.
Peter Klett:
Das mit der Collection ist eine sehr gute Idee, denn gerade das Löschen von vielen Dokumenten ist damit viel schneller.
NotesDocumentCollection.AddDocument ist (für mich) aber ganz neu (gibt es ja auch erst seit Notes 5), da ist es manchmal nicht schlecht, gelegentlich die Hilfe zu lesen (oder dieses Forum) ;D
schroederk:
Vielen Dank für Deinen Tip Peter.
Ich habs jetzt aber doch schon umgebaut, war nicht soviel Aufwand und die Struktur ist quasi noch dieselbe. Nur die Lesbarkeit hat imho darunter gelitten ;)
Falls es jemanden interessiert:
--- Code: --- While Not(dbZdoc Is Nothing) ' Alle Dokumente in Ziel-DB-Ansicht abarbeiten
' UniversalID in Quell-DB suchen
strUNID = dbZdoc.Universalid
On Error 4091 Resume Next ' Fehler abfangen, sollte ID nicht gefunden werden
Set dbQdoc = dbQuelle.GetDocumentByUNID( strUNID )
If dbQdoc Is Nothing Then ' nicht gefunden, also kann in Ziel-DB gelöscht werden.
Print "** Sync Tool ** Step 1 ** " & dbZdoc.Getitemvalue("FirstName")(0) & " " & dbZdoc.Getitemvalue("LastName")(0) & " -> deleted"
Set dummydoc = dbZdoc
Set dbZdoc = Zview.GetNextDocument(dbZdoc)
Call dummydoc.Remove (True)
Else
If dbQdoc.size = 0 Then
' ghost document gefunden also aus Ziel entfernen
Print "** Sync Tool ** Step 1 ** " & dbZdoc.Getitemvalue("FirstName")(0) & " " & dbZdoc.Getitemvalue("LastName")(0) & " -> deleted"
Set dummydoc = dbZdoc
Set dbZdoc = Zview.GetNextDocument(dbZdoc)
Call dummydoc.Remove (True)
Else
' Last Modified von Quelle und Ziel vergleichen
If dbQdoc.Lastmodified <> dbZdoc.Lastmodified Then ' Änderungsdatum unterschiedlich
Print "** Sync Tool ** Step 1 ** " & dbQdoc.Getitemvalue("FirstName")(0) & " " & dbQdoc.Getitemvalue("LastName")(0) & " -> updated"
Call dbQdoc.CopyAllItems (dbZdoc, True) ' Daten von Quelle nach Ziel übertragen.
Call dbZdoc.Save (True, True)
dbQdoc.form = dbQdoc.form(0) ' damit Quelle "geändert" ist und Speichern funktioniert
Call dbQdoc.Save (True, True) ' Quelle auch speichern, damit Änderungsdatum gesetzt ist
Else
Print "** Sync Tool ** Step 1 ** " & dbQdoc.Getitemvalue("FirstName")(0) & " " & dbQdoc.Getitemvalue("LastName")(0) & " -> skipped"
End If
Set dbZdoc = Zview.GetNextDocument(dbZdoc)
End If
End If
Set dbQdoc = Nothing ' dbQdoc wieder löschen
Wend
--- Ende Code ---
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln