Once you have created a RichTextField on a form and if you have assigned a Hide-When-Formula to it, then every document gets this Hide-When-Formula as a "fix"-property on this RichTextField.
Lotus tells us here, that this works as it should be. Nevertheless sometimes I have wasted time on this "feature" because the formula have changed during the application running time. The information in the RichTextFields couldn't be displayed with the new formula.
Create an agent which scans all the relevant documents. This agent extracts the text of the desired RichTextField(s) on the document, deletes the Field and recreates it. Finally the extracted text is written into the "new" field.
Also for included attachments this way can help to have access on the files. Here you have to use the GetEmbeddedObject()-Method of the RichTextField, extract the files on disk and re-attach them on the "new" field.
There are restrictions on the functionality with the code published below. Pictures or documents which have been created as objects in the RichTextField can't be restored. Formatted Text with colors and different shapes or fonts will lose it's attributes and will be restored as plain text. But sometimes this one is better than telling your users or customers that they will have to re-type everything.
And: if someone can expand the functionality of this code, so that there aren't any restrictions - go on and publish it on this site.
Here's the code for the Agent. The code is designed to regain access only for the text inside a RichTextField
(Options) Option Public (Declarations) Dim s As NotesSession Dim db As NotesDatabase Dim col As NotesDocumentCollection Dim doc As NotesDocument Dim rtf As NotesRichTextItem Dim rts As NotesRichTextStyle Sub Initialize() Dim Search As String Dim rtfText As String Dim fldList As Variant Set s = New NotesSession Set db = s.CurrentDatabase Search = |SELECT Form="frmFormName"| Set col = db.Search(Search, Nothing, 0) If col.Count>0 Then fldList = Evaluate(|"rtfField1":"rtfField2"|) Call SetRTS() Set doc = col.GetFirstDocument() While Not(doc Is Nothing) Forall f In fldList Set rtf = doc.GetFirstItem(f) rtfText = rtf.GetFormattedText(False, 0) 'extract text ' >> Here goes the code for extracting attachments << Call doc.RemoveItem(f) Set rtf = New NotesRichTextItem(doc, f) Call rtf.AppendStyle(rts) Call rtf.AppendText(rtfText) ' >> Here goes the code for re-attaching the files >> Call doc.Save(Treu, False, False) End Forall Set doc = col.GetNextDocument(doc) Wend End If End Sub Sub SetRTS() Set rts = s.CreateRichTextStyle rts.Bold = False rts.Italic= False rts.FontSize = 9 rts.NotesColor = 0 'black End Sub
This was first published in August 2002