Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Basti* am 05.03.13 - 12:29:32
-
Hallo miteinander!
Ich versuche mich gerade an RTF-Feldern und komme da ins Stolpern. Ich hab schon gelesen, dass die Dinger etwas knifflig sind und ein etwas umständliches Handling erfordern. UIDoc refreshen (=Schließen und neu Öffnen) bevor man was machen kann, usw. Aber so 100%ig verstanden hab ich noch nicht, was da eigentlich wirklich abläuft.
Mein Problem ist der Zugriff auf die RTF-Felder in der QuerySave Methode. Da existieren die Dinger ja noch nicht. Ich hab ein RTF-Feld und will beim Speichern wissen, ob in dem Feld etwas bestimmtes drinn steht.
Was ich bisher habe:
==========================================
Sub Querysave(Source As Notesuidocument, Continue As Variant)
Dim rtitem As NotesRichTextItem
Dim doc As NotesDocument
Set doc = source.document
'Anfangs ist das Feld nicht im Doc vorhanden, daher dann neu anlegen
'sonst das erste Item nehmen
If doc.isnewnote Then
Set rtitem = New NotesRichTextItem(doc, "mynotes")
Else
Set rtitem = doc.GetFirstItem( "mynotes" )
End If
'prüfe den Text
If rtitem.Text = "Blabla" Then
'... Tuwas ...
End If
End Sub
==========================================
Das Problem ist, dass der Text des RTFs nie aktuell ist. Wann wird der Wert, den ich im FrontEnd eingebe, per BackEnd verfügbar/aktualisiert?? Erst beim Speichern des Docs oder schon vorher?
Irgendwo hab ich gelesen, dass man das UIdoc schließen muss OHNE zu speichern und neu öffnen soll. Aber a) dann ist der Text auch nicht aktualisiert und b) hab ich noch nicht wirklich verstanden, was da eigentlich passiert.
Hat jemand einen Tipp?
Grüße
Basti
-
Ich hab die Lösung doch noch selbst gefunden ;) Man sollte die Logik nicht in QuerySave, sondern in PostSave unterbringen. Dann wurde das Doc bereits gespeichert. Damit auch das RTF. Wenn man sich jetzt das doc zieht, darain manipuliert und dann wieder speichert, hat man alles, was man braucht :)
Code:
==========================================
Sub Postsave(Source As Notesuidocument)
Dim rtitem As NotesRichTextItem
Dim doc As NotesDocument
Set doc = source.document
Set rtitem = doc.GetFirstItem( "mynotes" )
'prüfe den Text
If rtitem.Text = "Blabla" Then
'... Tuwas ...
End If
Call doc.save(False,True)
End Sub
==========================================