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?
RichText Item von einem Dokument zum anderen kopieren
- lotusfee
- Erledigt
-
-
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. -
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 -
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? -
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
-
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. -
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!