Domino 9 und frühere Versionen > ND8: Entwicklung

Richtextfeld kopieren ... ohjemine...

<< < (2/2)

Worn:
Hey nochmal,

also ich hab es nun so:


--- Code: ---
Dim doc As NotesDocument
Dim ritem1 As NotesRichTextItem
Dim ritem2 As NotesRichTextItem

Set doc = source.Document
Set ritem1 = doc.GetFirstItem("ri1")
Call doc.RemoveItem("ri2")
Set ritem2 = New NotesRichTextItem(doc,"ri2")
Call ritem2.AppendRTItem(ritem1)
Call doc.Save(True,False,False)


--- Ende Code ---

Ohne das ich das Item vorher lösche wird das append nämlich immer wieder durchgeführt und man hat nach ein paar mal öffnen ne ganze latte von den Bildern im berechneten Feld.

@pram:

Wo muss das source.refresh denn hin? Wenn ich doc.save damit ersetze dann bringt es nichts? Muss ich dazu den ganzen Code in Querysave packen... das lief auch nicht korrekt...? Vll. kannst du da noch genauer erläutern. Wäre super.

Danke nochmal an alle!

Worn

pram:
Ich dachte so im QuerySave:


--- Code: ---Dim doc As NotesDocument
Dim ritem1 As NotesRichTextItem
Dim ritem2 As NotesRichTextItem

call source.refresh(true) ' alle RT-Inhalte ins Backend schieben
Set doc = source.Document
Set ritem1 = doc.GetFirstItem("ri1")
while doc.HasItem("ri2")
  Call doc.RemoveItem("ri2")
wend
Set ritem2 = New NotesRichTextItem(doc,"ri2")
Call ritem2.AppendRTItem(ritem1)
Call ritem2.compact() ' schadet nicht

--- Ende Code ---

Ohne Gewähr! Aber das müsste meiner Meinung nach funktionieren. Jetzt könnte es aber sein dass es nicht funktioniert, weil "ri2" in der Maske vorhanden ist, bzw. nicht auf "berechnet" gestellt ist, und zwischen Query und Postsave wieder überschrieben wird.
(Der Inhalt in "ri2" erscheint auf Jeden Fall erst nach erneutem Öffnen der Maske)

Ein doc.save im QuerySave ist meiner Meinung nach ein absolutes "No-Go" weil da höchstwahrscheinlich Speicherkonflikte entstehen

Gruß
Roland

koehlerbv:
Das NotesUIDocument.Refresh nutzt GAR NICHTS. Bitte benutzt die Forumssuche - das Thema wurde hier schon bis zum Erbrechen durchgekaut.

Bernhard

pram:

--- Zitat ---Das NotesUIDocument.Refresh nutzt GAR NICHTS.
--- Ende Zitat ---

Richtig, ich hab aber von


--- Zitat ---call source.refresh(true) ' alle RT-Inhalte ins Backend schieben
--- Ende Zitat ---
geredet. Entscheidend ist hier der Parameter "true".

Ich kann mich auch noch an die Diskussion erinnern an der du AFAIK auch beteiligt warst und hier auch behauptet hast, dass es nicht zuverlässig funktioniert. Leider konnte mir keiner sagen WANN es nicht funktioniert. (also falls Du oder irgendwer hier einen Link hat in dem ich was nachlesen kann, schaue ich mir das gerne an) Ich verwende diese Methode um z.B. Teilmasken auszutauschen. Hier muss ich das Dokument auch neu öffnen und die eingegebenen Änderungen dürfen nicht verlorengehen.
Ähnlichen Code hab ich sogar bei IBM gefunden http://www-01.ibm.com/support/docview.wss?uid=swg21097112 (was aber nichts heißen muss  ;D)


Übrigens: Obiger Code funktioniert da ich es gerade eben ausprobiert habe! ABER: RI2 darf nicht als Feld in der Maske vorkommen, wie ich in meinem Posting auch angemerkt habe.  Das müsste man dann ggf. durch einen Würgaround im QueryOpen wieder gerade biegen, in dem man das RI2 nochmal in ein Temp-Feld kopiert.  ::)
Es stellt sich dann natürlich die Frage wie Sinnvoll die Rumkopiererei überhaupt ist.

Gruß
Roland

Worn:
Hi,

danke nochmal für die Hinweise. Ich probiere die Querysave Methode auch mal aus. Bei mir ist das Feld aber noch in der Makse enthalten... Mit den Hinweisen aus der Suche kommt man nun ganz gut klar was das Thema angeht..

Grüße
Worn

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln