Autor Thema: Vorgehensweise Dokumente synchronisieren  (Gelesen 11969 mal)

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Vorgehensweise Dokumente synchronisieren
« Antwort #20 am: 10.12.10 - 11:44:56 »
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

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Vorgehensweise Dokumente synchronisieren
« Antwort #21 am: 10.12.10 - 11:50:10 »
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.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Vorgehensweise Dokumente synchronisieren
« Antwort #22 am: 10.12.10 - 12:08:31 »
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

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Vorgehensweise Dokumente synchronisieren
« Antwort #23 am: 10.12.10 - 12:48:34 »
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
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz