Autor Thema: Setzen eines RT-Feldes in einem anderen Dokument  (Gelesen 2878 mal)

Offline haeppchen

  • Junior Mitglied
  • **
  • Beiträge: 55
Setzen eines RT-Feldes in einem anderen Dokument
« 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?

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Setzen eines RT-Feldes in einem anderen Dokument
« Antwort #1 am: 27.01.05 - 15:06:25 »
Hi,

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


Axel

Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline haeppchen

  • Junior Mitglied
  • **
  • Beiträge: 55
Re: Setzen eines RT-Feldes in einem anderen Dokument
« Antwort #2 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"

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: Setzen eines RT-Feldes in einem anderen Dokument
« Antwort #3 am: 27.01.05 - 15:54:44 »
Hi haeppchen,

Ist docNeu das Backenddokument von uidocNeu?

Thomas
+++To be human is more important than to be important!+++

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Setzen eines RT-Feldes in einem anderen Dokument
« Antwort #4 am: 27.01.05 - 16:00:33 »
Hi,

hast du das Dokument auch gespeichert?


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Setzen eines RT-Feldes in einem anderen Dokument
« Antwort #5 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
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Setzen eines RT-Feldes in einem anderen Dokument
« Antwort #6 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

Offline haeppchen

  • Junior Mitglied
  • **
  • Beiträge: 55
Re: Setzen eines RT-Feldes in einem anderen Dokument
« Antwort #7 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

Glombi

  • Gast
Re: Setzen eines RT-Feldes in einem anderen Dokument
« Antwort #8 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

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Setzen eines RT-Feldes in einem anderen Dokument
« Antwort #9 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Setzen eines RT-Feldes in einem anderen Dokument
« Antwort #10 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

Glombi

  • Gast
Re: Setzen eines RT-Feldes in einem anderen Dokument
« Antwort #11 am: 27.01.05 - 16:27:25 »
Mit @Formelsprache wäre das wohl einfacher in diesem Fall.

Offline haeppchen

  • Junior Mitglied
  • **
  • Beiträge: 55
Re: Setzen eines RT-Feldes in einem anderen Dokument
« Antwort #12 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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz