Domino 9 und frühere Versionen > Entwicklung
Und wieder RichText-Feld mit LS...
JimKnopf:
Hallo!
ich frage mich langsam, ob ich Notes jemals verstehen werde. Ich habe folgendes kleines Script geschrieben:
Sub Click(Source As Button)
' Öffnet ein neues Form "Wiedervorlage" und stellt eine Verknüpfung zum Elterndok her
Dim session As New Notessession
Dim Workspace As New NotesUIWorkspace
Dim db As NotesDatabase
Dim uiDoc As NotesUIDocument 'Aktuell geöffnetes Dok
Dim newDoc As NotesUIDocument 'Neues Dok = Wiedervorlage
Dim curDoc As NotesDocument 'Aktuelles Dok im Hintergrund
Dim wvDoc As NotesDocument 'Neues Dok im Hintergrund
Dim rtitem As NotesRichTextItem 'RT-Feld in Wiedervorlage
Set db=session.currentdatabase
Set uiDoc = Workspace.CurrentDocument
Set curDoc = uiDoc.Document
' erstellen eines neuen Doks "Wiedervorlage"
Set wvDoc = New NotesDocument(db)
wvDoc.Form = "Wiedervorlage"
Call wvDoc.ComputeWithForm(True,True)
Call wvDoc.Save(True,True)
Set rtitem = wvDoc.GetFirstItem( "Linkxy")
Call rtitem.AppendText("Verküpfung folgt")
Call rtitem.AppendDocLink(curDoc.document, "Original")
Call wvDoc.Save(True, True)
Set uiDoc = Workspace.EditDocument(False, wvdoc)
End Sub
An der unterstrichenen Stelle steigt Notes aus. Es scheint also mal wieder das RT-Feld nicht zu finden - obwohl es 100%-ig in der Maske ist (tausendmal kontrollliert)!
Ich hatte das schon mal, da musste man das ein uiDoc erst speichern bevor es an eine Hintergrund-Doc Variable übergeben wurde. Hier arbeite ich aber nun kpl. im hintergrund und gespeichert habe ich das neue Dokument ja nun auch... ich bin völlig ratlos :'(
Fällt einem von Euch was auf, oder habe ich einen typischen Notes-Denkfehler?!?!
Vielen Dank!
Gruß
Arne
Axel:
Hi,
versuch's doch mal so:
...
Set rtitem = wvDoc.CreateRichTextItem( "Linkxy")
...
Axel
koehlerbv:
Genau, wie's die DesignerHelp auch beschreibt ;)
JimKnopf:
ja, so klappt es! :-)
Aber erklär mir doch mal einer die Logik ??? Ich habe vor ein paar Tagen etwas ähnliches mit einem uidoc erstellt und dort funktinierte es mit
Set rtitem = wvDoc.GetFirstItem( "Linkxy")
"Create" bedeutet für mich "erstellen", aber das Feld ist schon vorhanden, also warum erstellen?!?!?
Für den interessierten Leser der Code aus dem anderen Beispiel (der ebenfalls funktioniert:
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 NotesRichTextItem
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
Ich erkenne da keinen wesentlichen Unterschied!
Dennoch, das Ergebnis zählt! Vielen Dank!!!!! Damit kann ich dann gleich Feierabend machen... :D
Gruß
Arne
JimKnopf:
Nachtrag:
Hier noch mal der komplette und funktionierende Code (vielleicht hilft es jemandem):
Sub Click(Source As Button)
' Öffnet ein neues Form "Wiedervorlage" und stellt eine Verknüpfung zum Elterndok her
Dim session As New Notessession
Dim Workspace As New NotesUIWorkspace
Dim db As NotesDatabase
Dim uiDoc As NotesUIDocument 'Aktuell geöffnetes Dok
Dim newDoc As NotesUIDocument 'Neues Dok = Wiedervorlage
Dim curDoc As NotesDocument 'Aktuelles Dok im Hintergrund
Dim wvDoc As NotesDocument 'Neues Dok im Hintergrund
Dim rtitem As NotesRichTextItem 'RT-Feld in Wiedervorlage
Set db=session.currentdatabase
Set uiDoc = Workspace.CurrentDocument
Set curDoc = uiDoc.Document
Set wvDoc = New NotesDocument(db)
wvDoc.Form = "Wiedervorlage"
Call wvDoc.ComputeWithForm(True,True)
Call wvDoc.Save(True,True)
Set rtitem = wvDoc.createrichtextitem( "Linkxy")
Call rtitem.AppendText("Hauptdkument:")
Call rtitem.AppendDocLink(uiDoc.document, "Originaldokument")
Call wvDoc.Save(True,True)
Set uiDoc = Workspace.EditDocument(False, wvdoc)
End Sub
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln