RichText Item von einem Dokument zum anderen kopieren

  • Hi!
    Ich möchte im QuerySave Event abfragen, ob ein RichText-Feld Daten enthält. Leider ist der Feldwert beim Speichern noch leer und LS kann den Text im BackEnd-Dokument nicht auslesen.
    Hat Jemand 'ne Idee?
    Tode, du vielleicht?

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

  • Wenn beim Speichern der Feldinhalt leer ist, ist das QuerySave-Event die falsche stelle. Das PostSave-Event wäre da eher ein Ansatzpunkt.
    Weiters kann auch im Backend mittels notesRichTextItem.Text ausgelesen werden, ob Text eingegeben wurde. Das funktioniert aber nicht mit Anhängen oder importierten Bildern. Dafür müsste dann notesRichTextItem.ValueLength verwendet werden.

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

    • Offizieller Beitrag

    die notesRichTextItem.ValueLength ist keine gute Idee, weil sich die Größe bei leeren Feldern je nach Notesversion ändert. Die Größe ist auch nicht 0, wenn das Feld leer ist.


    An den Inhalt des RT-Feldes kommst du erst im Backend heran (auch an die ValueLength).
    Und gleich der nächste Nachteil, Text, Anhänge, eingebettete Objekte sind kein Problem. Aber es gab etwas, an das kam man mit den RT-Klassen nicht heran - bin mir nicht mehr sicher was es war. Die Lösung war damals ein DXL-Export in einen Stream und dort prüfen, was im RT-Feld steht.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Ok.
    Also beim QuerySave ist das Item noch nicht im Backend-Dokument vorhanden. Da kann noch nichts ausgelesen werden. Blöderweise wollte ich hier aber eine Pflichtfeld-Prüfung beim Speichern einbauen.
    Kann man das aus dem UIDokument eventuell prüfen?

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

    Einmal editiert, zuletzt von lotusfee ()

  • Ok, mit UIDoc klappt es so leidlich.


    Habe aber gleich noch ein zweites Problem mit RichText... ;(
    Ich kopiere per LS den Inhalt eines RT-Feldes aus einem ausgewählten Dokument in das aktuelle Dokument...
    Set item = maildoc.GetFirstItem( "Body" )
    Call item.CopyItemToDocument( doc, "P_Text" )


    Jetzt ist das Item da und ich kann es auslesen. Es wird aber im Frontend nicht angezeigt. In den Dokumenteigenschaften ist das Feld ebenfalls leer. grrrrrrr

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

  • Eigentlich genau das gleiche Thema: Du kopierst es ins Backend Dokument und im Frontend Dokument ist es erst nach einem Reload sichtbar.


    Zum Thema Pflichtfeldvalidierung bei RT Feldern gibt es noch eine Möglichkeit:
    Mach ein berechnetes/berechnetes Feld zur Anzeige, indem du den Text des RichTextFeldes prüfst und das prüfst du dann mit der Faldvalidierung

  • Hi!
    Reload heisst hier aber leider Speichern & Schliessen, Bearbeiten, Speichern...
    Eine uidoc.Reload hilft offensichtlich nicht.

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

    Einmal editiert, zuletzt von lotusfee ()

  • Ok, mal wieder einen workaround gebastelt...
    Das RT-Feld kopiert und dann das Dokument zum Editieren geöffnet:
    call ws.EditDocument(True, doc)
    So funktioniert der Reload. Sehr merkwürdig!

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)