Domino 9 und frühere Versionen > ND8: Entwicklung
Dokument mehrmals kopieren
michael-r:
Hallo zusammen,
ich kopiere ein Dokument über einen Button in einer Maske in eine andere Datenbank mit:
Set db_copy = s.GetDatabase("Servername", "maildatenbank.nsf")
Set db=s2.CurrentDatabase
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
Set dest_doc = doc.CopyToDatabase(db_copy)
Call dest_doc.PutInFolder("($Inbox)")
Wird das Dokument mehrmals kopiert taucht manchmal der Fehler auf: Ein anderer Benutzer hat dieses Dokument zur gleichen Zeit geändert!
Vermutung liegt nahe, dass die Dokumente die gleiche UNID haben. Etwas komisch finde ich nur, das es nur manchmal nicht geht.
In dem IBM KB (http://www-01.ibm.com/support/docview.wss?uid=swg21096316) steht, man sollte es so machen:
Set tempdoc=doc.copytodatabase(db)
Set newdoc=doc.copytodatabase(db)
Call tempdoc.remove(True)
Allerdings verstehe ich nicht so ganz was dort gemacht wird und wie ich das in meinem Code einbaue.
MFG Michael
Peter Klett:
Sollen die Dokumente die gleiche UniversalID bekommen, oder gerade nicht? Soll das gleiche Dokumente mehrfach in die andere Datenbank kopiert werden können?
Ich persönlich habe mich nie mit CopyToDatabase anfreunden können und kopiere daher immer alle Items in ein neues Dokument.
So erzeuge ich ein identisches Dokument in einer anderen Datenbank, die UniversalID ist eine andere.
--- Code: ---Dim newdoc As New NotesDocument (db2)
Call doc.CopyAllItems (newdoc)
Call newdoc.Save (True, True)
--- Ende Code ---
Und so erzeuge ich ein identisches Dokument in einer anderen Datenbank unter Beibehaltung der UniversalID. Sinnvoll ist dann aber, vorher in der db2 zu überprüfen, ob es schon ein Dokument mit der gleichen ID gibt und ggf. die Aktion abzubrechen. Dadurch kann das gleiche Dokument nicht mehrfach kopiert werden.
--- Code: ---Dim newdoc As New NotesDocument (db2)
newdoc.UniversalID = doc.UniversalID 'Das Setzen der ID muss vor dem ersten Speichern des Dokuments erfolgen
Call doc.CopyAllItems (newdoc)
Call newdoc.Save (True, True)
--- Ende Code ---
EDIT:
Ach ja, zu dem Vorschlag von IBM: Du willst bestimmt keinen Code bauen, der zwingend ein Löschrecht von Benutzern in einer Datenbank verlangt. Hätten wir einen Praktikanten in der Entwicklung, hätten wir dem das spätestens am zweiten Tag ausgetrieben ... :-X
michael-r:
Hallo Peter,
das Dokument sollte nach Möglichkeit auch 2 mal dasein können.
Es handelt sich um eine Maildatenbank, wo die Mails abgeholt werden.
Aber aus irgendwelchen Gründen wird eine Mail auch mehrmals übertragen.
Ach jetzt verstehe ich, das andere Dokument wird erst gelöscht und dann nochmal kopiert?
MFG Michael
Peter Klett:
Nein, es wird zweimal kopiert, und durch das Kopieren des Zweiten bekommt das eine neue ID und das dann doppelte Erste wird danach gelöscht.
Das geht bestimmt auch noch komplizierter ... Und dafür zwingende Löschrechte
michael-r:
Also... ich habe nochmal das gleiche mit einer anderen TestDB gemacht.
Die UNID ist definitiv unterschiedlich und das kopieren funktioniert mehrmals.
Geprüft mit @StatusBar(@Text(@DocumentUniqueID))
Aber wenn ich den Betreff ändere, dann geht es nicht mehr?!
MFG Michael
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln