Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet 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
-
Wieso benutzt Du nicht einfach CopyItem ?
...
Dim item As NotesItem
...
Set item = docB.GetFirstItem("Kursinhalt")
Call docA.CopyItem(item, "Kursinhalt")
-
@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
-
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.
-
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
-
Stimmt, danke für den Hinweis Bernhard :)
-
Gern geschehen ;)
-
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