Autor Thema: Vorgehensweise Dokumente synchronisieren  (Gelesen 11641 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