Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: BMWTordi am 21.09.07 - 09:42:50

Titel: Richtextfeld frisst Tabellen
Beitrag 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.
Titel: Re: Richtextfeld frisst Tabellen
Beitrag von: Glombi am 21.09.07 - 09:45:49
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
Titel: Re: Richtextfeld frisst Tabellen
Beitrag von: BMWTordi am 21.09.07 - 10:20:24
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.
Titel: Re: Richtextfeld frisst Tabellen
Beitrag von: Glombi am 21.09.07 - 10:42:48
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
Titel: Re: Richtextfeld frisst Tabellen
Beitrag von: BMWTordi am 21.09.07 - 11:49:33
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)
Titel: Re: Richtextfeld frisst Tabellen
Beitrag von: Axel am 21.09.07 - 12:39:29
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
Titel: Re: Richtextfeld frisst Tabellen
Beitrag von: BMWTordi am 21.09.07 - 13:34:16
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.
Titel: Re: Richtextfeld frisst Tabellen
Beitrag von: Driri am 21.09.07 - 14:20:40
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.
Titel: Re: Richtextfeld frisst Tabellen
Beitrag von: BMWTordi am 04.10.07 - 11:59:42
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.
Titel: Re: Richtextfeld frisst Tabellen
Beitrag von: HarryB am 10.10.07 - 09:45:34
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