Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: Tom_S am 18.04.16 - 09:04:56

Titel: Doklink von einem Dokument in ein anderes kopieren
Beitrag von: Tom_S am 18.04.16 - 09:04:56
Hallo,

ich versuche schon seit einer Weile, ein Doclink von einem RT-Item in ein anderes zu kopieren. Er übernimmt aber immer das komplette RT-Item, also auch den Text. Wie bekomme ich es hin, dass ich nur den Doclink kopiere?

Code
Dim rti As NotesRichTextItem
Dim rtnav As NotesRichTextNavigator
Dim rtlink As NotesRichTextDocLink

Set rti = doc.GetFirstItem("Body")
Set rtnav = rti.CreateNavigator
rtnav.FindFirstElement(RTELEM_TYPE_DOCLINK)
Set rtlink = rtnav.Getelement()

Das andere RT-Item heißt "rtitem", aber egal, was ich mache, er fügt immer den kompletten Inhalt von "rti" in rtitem ein und nicht nur den Doclink. Ist sicher nur eine Kleinigkeit, die ich übersehen/vergessen habe, aber ich komme leider nicht drauf. ???

Ich hoffe auf eure Hilfe.

Vielen Dank und liebe Grüße
Thomas
Titel: Re: Doklink von einem Dokument in ein anderes kopieren
Beitrag von: Peter Klett am 18.04.16 - 09:41:41
Da Du den Code nicht gepostet hast, der den Doclink kopiert, kann man hier nur raten ...

Ich würde mir über den ermittelten Doclink das Dokument holen und dann für dieses einen Doclink mit AppendDoclink in dem neuen Richtextitem einfügen
Titel: Re: Doklink von einem Dokument in ein anderes kopieren
Beitrag von: Tom_S am 18.04.16 - 12:51:37
Hallo,

das Dokument holen und mit AppendDocLink einfügen geht leider nicht, da das verlinkte Dokument in einer anderen DB auf einem anderen Server liegt und das ganze in einem periodischen Agenten laufen soll.

Ansonsten weiß ich nicht, was für einen Quellcode ich noch posten soll. Es fehlt ja nur noch das Einfügen des DocLinks. Egal, was ich bisher versucht habe, er hängt dann alles in das RichtTextItem rein und nicht nur den DocLink.

Code
rtitem.Begininsert(rtlink)
rtitem.Endinsert
Titel: Re: Doklink von einem Dokument in ein anderes kopieren
Beitrag von: Andrew Harder am 18.04.16 - 14:20:22
...
das Dokument holen und mit AppendDocLink einfügen geht leider nicht, da das verlinkte Dokument in einer anderen DB auf einem anderen Server liegt und das ganze in einem periodischen Agenten laufen soll...
Aus welchem Grund sollte das nicht funktionieren?
Titel: Re: Doklink von einem Dokument in ein anderes kopieren
Beitrag von: Tom_S am 18.04.16 - 14:48:22
Weil periodisch laufende Agenten nicht auf andere Server zugreifen können.
Titel: Re: Doklink von einem Dokument in ein anderes kopieren
Beitrag von: koehlerbv am 18.04.16 - 15:05:43
Hä?
Das passiert doch nur, wenn Du oder der Admin ihnen explizit nicht vertrauen. Das ist also eine Sache mit Ansage.

Bernhard
Titel: Re: Doklink von einem Dokument in ein anderes kopieren
Beitrag von: Andrew Harder am 18.04.16 - 15:15:53
Weil periodisch laufende Agenten nicht auf andere Server zugreifen können.
Erm... das war mal unter Domino 5 so, also im 20. Jahrhundert.
Titel: Re: Doklink von einem Dokument in ein anderes kopieren
Beitrag von: Tom_S am 18.04.16 - 15:39:44
Ok, dann ist das wohl eine Einstellung von unseren Admins, die aber so gewollt ist.
Titel: Re: Doklink von einem Dokument in ein anderes kopieren
Beitrag von: Ralf_M_Petter am 18.04.16 - 19:21:57
Du kannst das Document mit dem Richtextitem in einen DXL String exportieren. Dort kannst du alles entfernen was du nicht brauchst und dann das Dokument wieder importieren und dann das Richtextitem aus diesem Dokument an dein Zieldokument anfügen.

Grüße

Ralf
Titel: Re: Doklink von einem Dokument in ein anderes kopieren
Beitrag von: Pyewacket am 18.04.16 - 22:44:20
Schau dir mal die Klasse NotesRichTextDocLink genau an. Damit kannst du
alle Werte aus dem Doclink ziehen und dann im anderen rtitem einen neuen Doclink erzeugen.

Peter
Titel: Re: Doklink von einem Dokument in ein anderes kopieren
Beitrag von: Tom_S am 19.04.16 - 08:08:38
@Ralf: So ähnlich habe ich es nun auch gemacht, nur ohn DXL.
Ich habe das nun mit einer Range gelöst und alles entfernt, was nicht der DocLink ist.

@Peter: Genau das ist ja das Problem. Ich habe zwar alle Werte, die ich brauche, in dem NotesRichTextDocLink, aber um einen DocLink zu setzen, brauche ich eben das NotesDocument und das bekomme ich ja leider nicht.

Dennoch vielen Dank für die Anregungen.

Code
rtitem.Appendrtitem rti
doc_nied.Save True, False
Set rtitem = doc_nied.Getfirstitem(var_name)
Set rtnav = rtitem.Createnavigator
Set range = rtitem.Createrange

While rtnav.Findfirstelement(RTELEM_TYPE_TEXTRUN)
	range.Setbegin(rtnav)
	rtnav.Findfirststring("Dokument:  ")
	range.Setend(rtnav)
	range.Remove
Wend

Nicht schön, aber selten. ;-)
Titel: Re: Doklink von einem Dokument in ein anderes kopieren
Beitrag von: TRO am 19.04.16 - 09:48:07
zwei Möglichkeiten:

1. Dummy-DocLink setzen
erstelle in deinem RTF einen DocLink zu einem beliebigen Dokument in der Datenbank. Finde dann diesen DocLink in dem RTF mit RTNavigator und ersetze darin alle Angaben mit denen, die zu deinem Wunsch-DocLink führen

2. undokumentierter Scriptbefehl (funktioniert aber sehr gut)
Call notesRichTextItem.AddLinkByIds( dbReplicaID$, serverHint$, viewUNID$, documentUNID$, comment$ [, HotSpotText$ ])

hth

Thomas
Titel: Re: Doklink von einem Dokument in ein anderes kopieren
Beitrag von: Tom_S am 19.04.16 - 11:09:58
Hi Thomas,

dass ich auf Variante 1 nicht selbst gekommen bin, wurmt mich jetzt ein wenig. ;)

Den Befehl "AddLinkByIds" kannte ich noch nicht, vielen Dank dafür. :)

Liebe Grüße
Thomas
Titel: Re: Doklink von einem Dokument in ein anderes kopieren
Beitrag von: Pyewacket am 19.04.16 - 13:40:30
Hätt ich vielleicht in meiner Mail dazuschreiben sollen dass ich den "AddLinkByIds" gemeint hatte.