Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: webchild am 28.10.04 - 12:14:37

Titel: Kopie des Inhalts eines Richtext Feldes wird nicht angezeigt
Beitrag von: webchild am 28.10.04 - 12:14:37
Meine Frage: Benutze ich die richtigen Befehle um den Inhalt eines RichText Feldes in ein anderes zu kopieren?
Im Originaldokument werden nach mehrmaligem Ausführen des unten gezeigten Scriptes etliche Items mit dem Namen $File angezeigt, aber im Feld wo der Inhalt hinein soll erscheint nichts!

Über einen Tipp würde ich mich freuen.

Ich habe in einer Schaltfläche folgendes Script hinterlegt (kommt aus der Designer Hilfe), und im Debugger werden auch keine Fehler angezeigt, die Feldwerte scheine auch richtig erkannt zu werden:

Sub Click(Source As Button)
   Dim w As New NotesUIWorkspace
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim docA As NotesDocument
   Dim docB As NotesDocument
   Dim uidoc As NotesUIDocument
   Dim view As NotesView
   Dim rtitemA As Variant
   Dim rtitemB As Variant
   
   Set db = session.CurrentDatabase   
   Set view = db.GetView( "KursInhaltSuchen" )
   Set uidoc = w.CurrentDocument
   Set docA = uidoc.Document
   
   Set docB = view.GetDocumentByKey(docA.Kursname)
   
   Set rtitemA = docA.GetFirstItem( "Kursinhalt" )
   Set rtitemB = docB.GetFirstItem( "Kursinhalt" )
   If ( rtitemA.Type = RICHTEXT And _
   rtitemB.Type = RICHTEXT ) Then
      Call rtitemA.AppendRTItem( rtitemB )
      Call docA.Save( False, True )
      Call docB.Save( False, True )
   End If
End Sub


Grüße, Krista
Titel: Re: Kopie des Inhalts eines Richtext Feldes wird nicht angezeigt
Beitrag von: Driri am 28.10.04 - 12:51:59
Wieso benutzt Du nicht einfach CopyItem ?

...
Dim item As NotesItem
...
Set item = docB.GetFirstItem("Kursinhalt")
Call docA.CopyItem(item, "Kursinhalt")
Titel: Re: Kopie des Inhalts eines Richtext Feldes wird nicht angezeigt
Beitrag von: webchild am 28.10.04 - 13:01:47
@Diri
Da passiert quasi dasselbe wie in meinem Versuch! :'(
In dem Feld "Kursinhalt" erscheint nichts, aber es werden mehrere unsichtbare Anhänge erstellt mit dem Namen $File.

Ich habe noch eine bißchen im Forum gestöbert und bin dabei auf die Aussage gestoßen, dass man diesen Befehl nicht im Frontend verwenden kann, bzw. wird das Backenddokument vom Frontenddokument (das ja immer noch leer ist nach Ausführen meines Codes) überschrieben!

Da werde ich ansetzen, Danke bis jetzt!

Grüße, Krista
Titel: Re: Kopie des Inhalts eines Richtext Feldes wird nicht angezeigt
Beitrag von: Driri am 28.10.04 - 13:09:50
Oopsa, das UIDoc hab ich total übersehen.

Dann hol dir die UNID des UIDocs, hol dir dazu das Backend-Dokument und pack dort die Items rein. Dann mußt Du das UIDoc schließen und neu öffnen.
Titel: Re: Kopie des Inhalts eines Richtext Feldes wird nicht angezeigt
Beitrag von: koehlerbv am 28.10.04 - 13:12:36
Das NotesUIDocument sollte ERST geschlossen werden (falls es da noch was zu speichern gibt), dann das Kopieren im Backend und dann FrontEnd-Doc wieder öffnen.

Bernhard
Titel: Re: Kopie des Inhalts eines Richtext Feldes wird nicht angezeigt
Beitrag von: Driri am 28.10.04 - 13:13:24
Stimmt, danke für den Hinweis Bernhard  :)
Titel: Re: Kopie des Inhalts eines Richtext Feldes wird nicht angezeigt
Beitrag von: koehlerbv am 28.10.04 - 13:14:27
Gern geschehen  ;)
Titel: Re: Kopie des Inhalts eines Richtext Feldes wird nicht angezeigt
Beitrag von: webchild am 28.10.04 - 13:15:07
So habe ich das jetzt mit dem AppendRTItem gelöst:

Sub Click(Source As Button)
   Dim w As New NotesUIWorkspace
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim docA As NotesDocument
   Dim docB As NotesDocument
   Dim uidoc As NotesUIDocument
   Dim view As NotesView
   Dim rtitemA As Variant
   Dim rtitemB As Variant
   Dim item As NotesItem
   
   Set db = session.CurrentDatabase   
   Set view = db.GetView( "KursInhaltSuchen" )
   Set uidoc = w.CurrentDocument
   Set docA = uidoc.Document
   Call uidoc.Save
   Set docB = view.GetDocumentByKey(docA.Kursname)
   
   Set rtitemA = docA.GetFirstItem( "Kursinhalt" )
   Set rtitemB = docB.GetFirstItem( "Kursinhalt" )
   If ( rtitemA.Type = RICHTEXT And _
   rtitemB.Type = RICHTEXT ) Then
      Call rtitemA.AppendRTItem( rtitemB )
      docA.SaveOptions = "0"
      Call docA.Save(False, True)
   End If
   
End Sub

Mein Fehler war, ich habe die Hilfe Anleitung nicht genau genug gelesen, im 2. Beispiel zu diesem Befehl war ein eindeutiger Hinweis und eine Anleitung dazu!

Grüße, Krista