Domino 9 und frühere Versionen > Entwicklung
Problem mit RichtextItem
Glombi:
Wenn Du ein neues Dokument erstellst, "kennt" Notes erst NACH DEM SPEICHERN das Rich Text Feld.
D.h. Du müsstest das Dokument vorher speichern.
call CurDoc.Save
set Doc = CurDoc.Document
Wenn es dann noch Validierungen gibt, ein entsprechendes Error Handling einbauen!
Andreas
dottore:
Weil RichTextItems leider erst nach dem speichern im Dokument vorhanden sind.
Genauso spätere Änderungen - ja RichTextItems machen Spaß!
JimKnopf:
Danke nochmals!
Aber selbst nach dem speichern bekomme ich diese Meldung. Selbst wenn ich das Richtextfeld händisch fülle, speicher und wieder öffne (im Bearbeitungsmodus) funktioniert es nicht.
Ich habe auch einmal ein ganz neues RT-Feld angelegt --> gleiches Ergebnis. Mal eine ganz dumme Frage: Gibt es irgendwelche Bibliotheken , die eingebunden werden müssen? Schreibfehler sind ausgschlossen, bin alles nochmals mit Copy & Paste durchgegangen...
PS: Was ist denn das für ein "Feature", bei dem Felder erst erkannt werden, nachdem alles gespeichert ist?!?!? Ist es nicht meistens so, dass Felder erst gefüllt werden und um sie dann zu peichern?!?!? Manchmal könnte ich Notes...
scipio:
Wenn ich's richtig verstanden habe, dann existiert in der Maske, die zum Erstellen der Dokumente benutzt wird, ein RT-Feld namens "Ergebnis". In der gleichen Maske gibt es eine Schaltfläche, die das RT-Feld füllen soll. Also einfach folgenden Code in das Click-Event:
--- Code: ---Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Call uidoc.FieldAppendText( "Ergebnis", "Hallo1" )
Call uidoc.FieldAppendText( "Ergebnis", Chr(10) )
Call uidoc.FieldAppendText( "Ergebnis", "Hallo2" )
End Sub
--- Ende Code ---
JimKnopf:
Guten Morgen!
Das Problem ist gelöst. Danke allen, die daran beteiligt waren. Die Lösung war einfach: Neustart des Notesclients und es ist natürlich so, dass RT-Felder erst erkannt werden, wenn sie zuvor gespeichert werden :-\ Die Logik leuchtet mir zwar nicht ein, aber damit muß man wohl leben... Ich habe für andere Neulinge den kompletten Code einmal dokumentiert, vielleicht hülft das was:
--- Code: ---Sub Click(Source As Button)
Dim Session As New NotesSession
Dim Workspace As New NotesUIWorkspace ' UI steht für UserInterface und meint immer das aktuell "Sichtbare"
Dim db As NotesDatabase
Dim curDoc As NotesUIDocument
Dim Doc As NotesDocument
Dim rtItem As Variant
Set db = Session.CurrentDatabase 'Die aktuell geöffnete Datenbank wird in der Variable db defininiert
Set curDoc = Workspace.CurrentDocument 'Das aktuelle Dokument wird zugeordnet
curDoc.Save 'Damit das Richtextfeld erkannt wird, muß vorher gespeichert werden.
Set Doc = curDoc.Document 'Das aktuell "sichtbare" Dokument wird wird an ein Hintergrunddokument übergeben
Set rtItem = Doc.GetFirstItem( "Ergebnis") 'Das Feld "Ergebnis" wird im "Hintergrund" einer Variablen zugeordnet
Call rtItem.AppendText( "Hallo1" ) 'Der Text "Hallo1" wird in dem Feld "Ergebnis" angehangen (im Hintergrund)
Call rtItem.AddNewLine (1) 'Zeilenumbruch
Call rtItem.AppendText( "Hallo2" )
Call Doc.Save (True, False) 'Das Hintergrunddokument wird gespeichert
Call curDoc.FieldSetText( "SaveOptions", "0" ) 'In das Feld "SaveOptions" wird eine "0" geschrieben, damit das Vordergrunddokument (UI)
'ohne Nachfrage geschlossen werden kann.**
Call curDoc.Close 'Das Vordergrunddokument wird ohne Speicherung geschlossen (eine Speicherung würde
'die Änderungen die zuvor im Hintergrund stattfanden wieder überschreiben)
Set curDoc = Workspace.EditDocument(False, doc) ' Das Hintergrunddokument (mit den Änderungen) wird in den Vordergrund geholt, so dass
' die Änderungen sichtbar werden
End Sub
--- Ende Code ---
Ich wünsche allen einen guten Rutsch ins Neue Jahr!
Grüße
Arne
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln