Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: BMWTordi am 21.09.07 - 09:42:50
-
Also ich hatte schonmal ein Problem gepostet indem es grob um dieses Thema ging.
Sachverhalt ist folgender:
Ich habe in meiner Maildatenbank einen Button mit dem ich die infos aus markierten emails in eine andere Datenbank übertrage. Dabei erstelle ich pro email ein neues Dokument.
Code:
Dim body As NotesItem
Set body = doc.GetFirstItem("body")
Dim new_body As NotesItem
Stop
Set new_body = body.CopyItemToDocument(hotdoc, "bemerk")
Problem
Das Problem bezieht sich auf das oben gezeigte RT Feld "bemerk". In dieses Feld kopiere ich das "body" Feld der Email. Leider kann man bei manchen Dokumenten anschließend das neu generierte Dokument nicht öffnen. Es erscheint die Fehlermeldung "Sie haben Versucht einen Layoutbereich in eine Tabelle zu laden".
Das war das grobe Problem.
Neue Erkenntnis:
Die Dokumente die sich nicht öffnen lassen haben alle eine Gemeinsamkeit. Bei Erstellen frisst das RT Feld den rest des Dokuments auf. Das RT Feld hat also einen Anfang aber keine Ende. Die Tabellen und Felder unterhalb des RT Feldes sind alle im RT Feld enthalten und ich kann Schriftgröße usw ändern.
-
Ich würde es mit
Inserts the contents of one rich text item in another.
Defined in
NotesRichTextItem
Syntax
Call notesRichTextItem.AppendRTItem( notesRichTextItem2 )
Parameters
notesRichTextItem2
The item to be appended. If you specify Nothing, this method generates an error.
machen. D.h erstmal aus hotdoc das RichTextItem per Script setzen und dann mit AppendRTItem das "Body" dort anhängen.
Andreas
-
Danke für den Tip. Habe es jetzt so gelöst:
Dim body As NotesRichTextItem
Set body = doc.GetFirstItem("body")
Dim new_body As NotesRichTextItem
Set new_body = New NotesRichTextItem(hotdoc, "bemerk" )
Call new_body.AppendRTItem( body)
Call hotdoc.Save(True,False,True)
Aber das Problem ist leider noch da.
-
Mach mal anstelle von
Set new_body = New NotesRichTextItem(hotdoc, "bemerk" )
ein
Set new_body = hotdoc.GetFirstItem("bemerk" )
Das mit dem New ist immer so eine Sache, wie wir gestern auch in einem anderen Thread gesehen haben.
Andreas
-
Wenn ich das so durchziehe hab ich einen object Variable not set:
Dim body As NotesRichTextItem
Set body = doc.GetFirstItem("body")
Dim new_body As NotesRichTextItem
Set new_body = hotdoc.GetFirstItem("bemerk" ) <--- genau hier
Call new_body.AppendRTItem( body)
-
Machst du das für ein neues Dokument?
Wenn ja, dann muss das Dokument einmal gespeichert werden um auf das RTF zugreifen zu können.
Axel
-
Sowas in der Art dachte ich mir schon. Ist halt nur blöd dann abzufangen ob der user das Dok wirklich speichern will..mhhh...muss ich mir wohl was ganz anderes überlegen.
-
Eine Möglichkeit wäre, ein Flagfeld zu setzen, daß beim Speichern durch den User entfernt wird.
Entsprechend geflaggte Dokumente können dann aus den Ansichten ausgeblendet werden und z.B. über einen periodischen Agenten über Nacht entfernt werden.
-
Hallo zusammen. Habe leider bis heute keine Lösung im Script gefunden. Aber ich habe einfach alles was unter meinem RTFeld war in einen Teilmaske gepackt und da auch noch einen Abschnitt drüber gestzt....jetzt funktioniert es.
-
Mach mal anstelle von
Set new_body = New NotesRichTextItem(hotdoc, "bemerk" )
ein
Set new_body = hotdoc.GetFirstItem("bemerk" )
Das mit dem New ist immer so eine Sache, wie wir gestern auch in einem anderen Thread gesehen haben.
Andreas
Ich würde anstatt dessen ein
Set new_body = hotdoc.CreateRichTextItem("bemerk")
machen.
Viele Grüße
Harry