Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: haeppchen am 27.01.05 - 14:37:26

Titel: Setzen eines RT-Feldes in einem anderen Dokument
Beitrag von: haeppchen am 27.01.05 - 14:37:26
Hallo zusammen!

Mein Problem:
Ich habe ein Rich-Text Feld mit dem Default-Value "1" und will den Inhalt dieses Feldes per Button-click in das entsprechende Feld eines anderen Dokumentes kopieren. Leider habe ich im anderen Dokument immer nur den Default-Value "1" stehen, das Kopieren klappt also nicht.
Hier mein Code (auszugsweise):

Dim ws As New NotesUIWorkspace
Dim uidocAlt, uidocNeu As NotesUIDocument
Dim rtItem As NotesRichTextItem
Dim pointValue As String

Set uidocAlt = ws.CurrentDocument
//ein neues Dokument derselben Form erzeugen
Set uidocNeu = ws.ComposeDocument(,,"FormName")

//altes Dokument speichern, um auf Rich-Text-Feld zugreifen zu können
Call uidocAlt.save
Set rtItem = docAlt.GetFirstItem("Feld-Name")
pointValue = rtItem.GetUnformattedText()

//im neu erzeugten Dokument den Inhalt in das Rich-Text-Feld kopieren
Call docNeu.ReplaceItemValue("Feld-Name", pointValue)

Wenn ich mir den String pointValue per Msgbox ausgeben lasse, wird der tatsächliche Inhalt des Rich-Text-Feldes des alten Dokument angezeigt, das auslesen klappt also. Nur das Kopieren in das Rich-Text-Feld des neuen Dokuments funktioniert nicht.

Wer kann mir helfen?
Titel: Re: Setzen eines RT-Feldes in einem anderen Dokument
Beitrag von: Axel am 27.01.05 - 15:06:25
Hi,

was genau klappt denn nicht? Ein paar mehr Infos brauchen wir schon.


Axel

Titel: Re: Setzen eines RT-Feldes in einem anderen Dokument
Beitrag von: haeppchen am 27.01.05 - 15:15:58
Ich kann den Inhalt des Rich-Text-Feldes des ersten Dokuments mit

     Set rtItem = docAlt.GetFirstItem("Feld-Name")
     pointValue = rtItem.GetUnformattedText()

korrekt auslesen.
Wenn ich den String PointValue in das Rich-Text-Feld des 2.dokumentes mit

     Call docNeu.ReplaceItemValue("Feld-Name", pointValue)

schreibe, wird dieser aber dort nicht übernommen, sondern dort steht lediglich der Default-Wert "1"
Titel: Re: Setzen eines RT-Feldes in einem anderen Dokument
Beitrag von: Thomator am 27.01.05 - 15:54:44
Hi haeppchen,

Ist docNeu das Backenddokument von uidocNeu?

Thomas
Titel: Re: Setzen eines RT-Feldes in einem anderen Dokument
Beitrag von: Axel am 27.01.05 - 16:00:33
Hi,

hast du das Dokument auch gespeichert?


Axel
Titel: Re: Setzen eines RT-Feldes in einem anderen Dokument
Beitrag von: Thomas Schulte am 27.01.05 - 16:01:54
Weil Richtextfelder wenn sie im Hintergrund verändert werden im Vordergrund nicht angezeigt werden.
Du setzt hier:
//ein neues Dokument derselben Form erzeugen
Set uidocNeu = ws.ComposeDocument(,,"FormName")
ein neues Dokument das du in den Vordergrund holst und erzeugst hier:
//im neu erzeugten Dokument den Inhalt in das Rich-Text-Feld kopieren
Call docNeu.ReplaceItemValue("Feld-Name", pointValue)
dein neues RTFeld bzw füllst es mit Werten. Jetzt musst du erst das neue Dokument abspeichern und dann erneut anzeigen. Dann wirst du auch den Inhalt deines alten RTFeldes im neuen Dokument sehen können. Vorher nicht.

Thomas
Titel: Re: Setzen eines RT-Feldes in einem anderen Dokument
Beitrag von: koehlerbv am 27.01.05 - 16:07:24
Vorab: Bei dem Code ist bestimmt Optioon Declare nicht gesetzt, da docNeu nicht angemeckert wird.Und: Warum ist das RTF im 2. Dokument überhaupt rich text, wenn Text eingesetzt wird ?

Ich würde das neue Dokument erst im Backend erzeugen und dann erst mit NotesUIWorkspace.EditDocument im FrontEnd öffnen.

Alternativ kann das ganze aber auch rein im FrontEnd gemacht werden, in dem man mit den Methoden des NotesUIDocuments
- ins RTF (alt) geht
- den Inhalt markiert
- den Inhalt in die Zwischenablage kopiert
- das neue UIDoc erzeugt
- ins RTF (neu) geht
- und dort die Zwischenablage wieder einfügt.

Bernhard
Titel: Re: Setzen eines RT-Feldes in einem anderen Dokument
Beitrag von: haeppchen am 27.01.05 - 16:13:55
@Axel:
ich habe nur das docAlt gespeichert, um auf das Rich-Text-Feld zugreifen zu können

@koehlerbv
Das RTF im 2.dokument soll wie auch das RTF im ersten Dokument Rich-Text sein (Vorgabe). Werde deinen vorschlag mal in die Tat umsetzten und das mit den von dir vorgesclagenen Frontend-Operationen versuchen.

Simon
Titel: Re: Setzen eines RT-Feldes in einem anderen Dokument
Beitrag von: Glombi am 27.01.05 - 16:18:35
Es geht wohl einfacher mit

Dim ws As New NotesUIWorkspace
Dim uidocAlt, uidocNeu As NotesUIDocument
Dim rtItem As NotesRichTextItem
Dim pointValue As String

Set uidocAlt = ws.CurrentDocument
//ein neues Dokument derselben Form erzeugen
Set uidocNeu = ws.ComposeDocument(,,"FormName")

//altes Dokument speichern, um auf Rich-Text-Feld zugreifen zu können
Call uidocAlt.save
Set rtItem = docAlt.GetFirstItem("Feld-Name")
pointValue = rtItem.GetUnformattedText()

//im neu erzeugten Dokument den Inhalt in das Rich-Text-Feld kopieren
call uidocNeu.GotoField("Feld-Name")
call uidocNeu.InsertText( pointValue )


Andreas
Titel: Re: Setzen eines RT-Feldes in einem anderen Dokument
Beitrag von: Axel am 27.01.05 - 16:23:24
@Axel:
ich habe nur das docAlt gespeichert, um auf das Rich-Text-Feld zugreifen zu können

Siehe dazu Antwort#5 von Thomas Schulte.

Da findest du die Erklärung warums nicht geht.


Axel
Titel: Re: Setzen eines RT-Feldes in einem anderen Dokument
Beitrag von: koehlerbv am 27.01.05 - 16:24:51
Oder so ...  ;)

Wobei ich es nach wie vor für zweifelhaft halte, mit GetFormattedText zu arbeiten. Ich höre ja förmlich schon die ersten User schreien: Nun habe ich das extra fett und rot geschrieben, und wie sieht das nun aus ??"  ;D

Bernhard
Titel: Re: Setzen eines RT-Feldes in einem anderen Dokument
Beitrag von: Glombi am 27.01.05 - 16:27:25
Mit @Formelsprache wäre das wohl einfacher in diesem Fall.
Titel: Re: Setzen eines RT-Feldes in einem anderen Dokument
Beitrag von: haeppchen am 27.01.05 - 16:28:42
@koehlervb
Danke für deine Hilfe. Es klappt jetzt wie gewünscht.
Ich könnte sicherlich auch mit getFormattedText arbeiten, ist hier aber nicht wichtig. Ich brauche lediglich den Wert des Feldes.

@Glombi
So wie du es vorgeschlagen hast, müsste es dann auch gehen.
Habe es jetzt aber so wie koehlervb implementiert.
Ich muss in dem Script, in dem auch dieses Problem aufgetaucht ist, noch mehr berechnen, daher habe ich auf Formelsprache verzichtet!

Danke für eure Hilfe!

Simon