Domino 9 und frühere Versionen > ND8: Entwicklung

Disable copying to clipboard ($KeepPrivate)

<< < (2/3) > >>

Peter Klett:
Ich erstelle dann immer ein neues Dokument in der Datenbank und kopiere alle Items aus dem Backend des aktuellen Dokuments in das neue.

Set newdoc = New NotesDocument (db)

Set doc = uidoc.Document
Call doc.CopyAllItems (newdoc)
'Anpassungen an newdoc
Call newdoc.Save (True, True)

Man kann sicherlich auch eine Methode nehmen, die das ganze Dokument kopiert (habe den Namen der Funktion gerade nicht im Kopf, sowas wie Call doc.CopyToDatabase (db)), dabei wird das Dokument sofort gespeichert. Bei Verwendung von Autorenfeldern und Zugriff der Benutzer als Autor (was dringend zu empfehlen ist) kann es dann passieren, dass die nachträglichen Änderungen nicht mehr gespeichert werden können, da der Autorenzugriff fehlt.

EDIT:

Das Öffnen machst Du dann mit

Call workspace.EditDocument (False, newdoc) im Lesemodus oder
Call workspace.EditDocument (True, newdoc) im Bearbeitenmodus

yannick:
Super, danke! Hat schonmal so geklappt, habe dann aber doch gleich ein ganz neues Dokument erstellt und die Werte aus dem "alten" Dokument in die Kopie übernommen (es sollten nicht alle Werte übernommen werden. Letztendlich hat sich herausgestellt, dass kaum etwas übernommen werden sollte). Jetzt habe ich nur wieder ein Problem mit diesen ... richtext Items. Und zwar soll in der Kopie in einem RT-Feld der Doclink zum Original-Dokument eingefügt werden. Ich bekomme hier beim Aufruf der Funktion immer die Methode mein Object sei nicht gesetzt  :-\

--- Code: --- Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim newdoc As NotesDocument
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
Set uidoc = ws.Currentdocument
Set db = ws.Currentdatabase.Database

Set newdoc = New NotesDocument (db)
Call newdoc.Replaceitemvalue("Form", "myForm")
Set doc = uidoc.Document

'get doclink
Dim rtitem As NotesRichTextItem
Set rtitem = newdoc.Getfirstitem("rtField")
Call rtitem.Appenddoclink(uidoc.Document, "test")
.
.
.

--- Ende Code ---
Das "rtField" ist ein ganz normales RichtText-Feld, daher verstehe ich nicht ganz warum das nicht gesetzt werden kann?

ascabg:
Was sagt denn der Debugger?
Und warum nimmst Du denn bei AppenDocLink das UI-Document und nicht das doc?


Andreas

yannick:
Wie gesagt: Object variable not set. Wenn ich im Debugger unter Variables schaue, ist mein RT-Feld nach dem "set" auch immer noch leer...
Bei dieser Zeile hängt´s: Call rtitem.Appenddoclink(uidoc.Document, "test")
Also liegt´s doch an dieser Zeile (weil object variable not set): Set rtitem = newdoc.Getfirstitem("rtField")

Ob doc oder uidoc.document dürfte egal sein? (war mir nur nicht sicher, ob ich beim "doc" auch den richtigen Link bekommen würde)

ascabg:
Du kannst Dir im Debugger doch genau ansehen, ob Deine Objekte gefuellt sind oder nicht.
Und wenn Du das nicht gefullte Objekt hast, dann findet man doch auch sehr schnell den Punkt innerhalb des Codes bei dem man ansetzen muss.

Edit
Hatte ich doch glatt ueberlesen, dass Du das betreffende Objekt bereits ausfindig gemacht hast.

Stellt sich nur noch die Frage, gibt es dieses Item "rtFeld" denn ueberhaupt schon in Deinem newdoc?
Wenn nicht, dann kommst Du mit GetFirstItem nicht weiter. Dann musst Du dieses Item erst mit
Set rtitem = New NotesRichTextItem(docnew, "rtitem") anlegen.


Andreas

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln