Autor Thema: Dokument mehrmals kopieren  (Gelesen 4610 mal)

Offline michael-r

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.768
Dokument mehrmals kopieren
« am: 17.06.16 - 12:35:16 »
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


Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Dokument mehrmals kopieren
« Antwort #1 am: 17.06.16 - 13:19:34 »
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)

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)


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
« Letzte Änderung: 17.06.16 - 13:21:34 von Peter Klett »

Offline michael-r

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.768
Re: Dokument mehrmals kopieren
« Antwort #2 am: 17.06.16 - 13:56:37 »
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

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Dokument mehrmals kopieren
« Antwort #3 am: 17.06.16 - 14:04:57 »
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

Offline michael-r

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.768
Re: Dokument mehrmals kopieren
« Antwort #4 am: 17.06.16 - 14:20:54 »
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

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Dokument mehrmals kopieren
« Antwort #5 am: 17.06.16 - 14:23:07 »
Wo willst Du den Betreff ändern und was geht dann nicht mehr?

Offline michael-r

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.768
Re: Dokument mehrmals kopieren
« Antwort #6 am: 17.06.16 - 14:38:13 »
Schritt 1: Ich kopiere die Mail über den Button in eine andere Datenbank. Die Mail wird abgeholt und gelöscht, liegt noch im Papierkorb der anderen Maildatenbank.

Schritt 2: Da es eine Mail ist, ändere ich in dem Eingang den Betreff manuell (nicht per Script), speichere die E-Mail ab und will diese dann über den Button nochmal kopieren, daraufhin erhalte ich die Meldung: Ein anderer Benutzer hat dieses Dokument zur gleichen Zeit geändert! (mail\dbname.nsf)

MFG Michael


Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Dokument mehrmals kopieren
« Antwort #7 am: 17.06.16 - 15:38:26 »
und dbname ist die andere Datenbank, also nicht die, aus der das Dokument kopiert wird?

Hast Du das mal mit der von mir beschriebenen Methode versucht?

Was sagt der Debugger? An welcher Stelle kommt die Fehlermeldung?

Offline michael-r

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.768
Re: Dokument mehrmals kopieren
« Antwort #8 am: 17.06.16 - 16:21:14 »
dbname ist der aus dem das Dokument kopiert wird.
Ich bin gerade noch mit ein paar anderen Dingen beschäftigt gewesen. Ich werde deine Methode mal versuchen.
Eventuell habe ich einen Workaround und lasse gleich die übertragenen Mails aus der Datenbank löschen (softdeletions deaktivieren).

Ich hatte früher mal was mit Copyallitems versucht, aber das funktionierte nicht. Ich bin ja auch kein Programmierer ;).

MFG Michael

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Dokument mehrmals kopieren
« Antwort #9 am: 17.06.16 - 16:42:43 »
dbname ist der aus dem das Dokument kopiert wird.
Dann sind wir auf dem falschen Weg. Du bekommst den Konflikt in der Datenbank, aus der Du kopierst, da hat weder das CopyToDatabase noch ein CopyAllItems einen Einfluss drauf.

Schau Dir mal das gesamte Script an, irgendwo wirst Du das zu kopierende Dokument verändern und speichern (im Backend) und produzierst dann den Konflikt, wenn Du den Titel manuell änderst.

Offline michael-r

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.768
Re: Dokument mehrmals kopieren
« Antwort #10 am: 20.06.16 - 10:31:48 »
Moin,

ich habe das mit deinem Code probiert und das klappt ohne Probleme.

In dem Code wird nichts in der Mail angepasst, das passiert manuell durch den User.
Der Code ist auch komplett, bis auf die Definition der Variablen.

Danke für deine Hilfe.

MFG
Michael

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz