Domino 9 und frühere Versionen > ND8: Entwicklung
Backend - Frontend
buzi:
Hallo zusammen,
ich verzweifle seit ein paar Tagen an folgendem Problem:
In ein geöffnetes Dokument soll ein DocLink eingefügt werden als RichTextItem. Ich gehe wie folgt vor: Zuerst das Ui-Document speichern und schließen.
docUnid = uiws.Currentdocument.Document.Universalid
uiws.CurrentDocument.Save
uiws.CurrentDocument.Close
Dann wird das Backend-Document geladen und das RichTextItem mit dem DocLink hinzugefügt.
Set backendDoc = db.GetDocumentByUnid(noteUnid)
Set rtitem = backendDoc.GetFirstItem(rtItemName)
backendDoc.RemoveItem(rtItemName)
Set rtitem = New NotesRichTextItem(backendDoc, rtItemName)
Call rtitem.AppendDocLink(partnerDoc, "Partner in Bios")
Anschließend das Backend-Doc gespeichert und das Ui-Doc neu geöffnet
Call backendDoc.Save(True, True)
backendDoc.saveoptions = "0"
Set newuidoc = ws.editdocument(True, backendDoc, False)
Call newuidoc.GotoField(rtItemName)
Funktioniert alles wunderbar - bis auf die Tatsache, dass alle Änderungen die ich anschließend im geöffneten Dokument durchführe nicht gespeichert werden. Lase ich die letzten zwei Code-Zeilen weg, also das Dokument geschlossen, und öffne ich das Dokument manuell aus der DB, verhält sich alles wie gewünscht. Ich möchte dem User aber natürlich den Schritt ersparen das Dokument wieder von Hand öffnen zu müssen!!
Was mache ich falsch?
ascabg:
Hallo,
Wahrscheinlich ist das Feld "SaveOptions" dann immer noch auf "0" gesetzt.
Wenn Du das Dokument 'normal' oeffnest, wird irgenwo dieses Feld geleert oder geloescht?
Andreas
buzi:
Wie kann ich das überprüfen? Wenn ich die SaveOptions Zeile weg lasse bekomme ich ne ganz tolle Felermeldung: "Eine weitere Kopie dieses Dokuments wurde gespeichert während Sie das Dokument bearbeiteten. Sollen Ihre Änderungen auch als Konfliktdokument gespeichert werden?"
Glombi:
Du musst warten, bis die Rich Text Operation abgeschlossen ist. Das macht Notes dann mal irgendwann...
Um es zu erzwingen, gibt es die Methode Update.
Auszug aus der Designer Hilfe:
Call notesRichTextItem.Update
Usage
Operations on a rich text item are queued for efficiency. The order and time of completion are not predictable. Use this method to ensure that processing is complete at a certain point.
This method is useful when interacting with the front-end classes.
Also folgendes:
Call rtitem.AppendDocLink(partnerDoc, "Partner in Bios")
Call rtitem.Update
Call backendDoc.Save(True, True)
'Das SaveOptions nicht setzen!
Set newuidoc = ws.editdocument(True, backendDoc, False)
Call newuidoc.GotoField(rtItemName)
Andreas
buzi:
Klingt gut aber läuft immernoch in diese Fehlermeldung mit Konfliktdokument ohne die SaveOptions
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln