Domino 9 und frühere Versionen > Entwicklung

Und wieder RichText-Feld mit LS...

(1/2) > >>

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