Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet 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?
-
Hi,
was genau klappt denn nicht? Ein paar mehr Infos brauchen wir schon.
Axel
-
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"
-
Hi haeppchen,
Ist docNeu das Backenddokument von uidocNeu?
Thomas
-
Hi,
hast du das Dokument auch gespeichert?
Axel
-
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
-
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
-
@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
-
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
-
@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
-
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
-
Mit @Formelsprache wäre das wohl einfacher in diesem Fall.
-
@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