Domino 9 und frühere Versionen > ND6: Entwicklung

Problem: DocLink im RTField anhängen

<< < (2/2)

cfiber:
Dann kommt aber die Fehlermeldung "Object Variable Not Set"

m3:
Auf RTF-Inhalte kann man nur zugreifen, NACHDEM das Dok gespeichert wurde. Kann es sein, dass es sich bei dem Dokument um ein neues handelt, das noch nicht gespeichert wurde? Wenn ja, dann ist die Fehlermeldung normal.

flaite:
Ich hab letztens auch festgestellt, dass new RichTextItem ein neues RichTextItem erstellt, egal ob schon eins da ist.
Die Aufgabe des Scripts bestand darin von aussen Attachments von Tif-Dateien aus einem RT-Feld zu löschen.
Ging dann mit RTItem = doc.getFirstItem("itemName").
Wenn du das Dokument im Frontend geöffnet hast, ist es schwieriger.

Versuch mal im PostSave oder im QueryClose Event das DocLink im Backend zu setzen.
Besorg dir das RichTextItem mit doc.getFirstItem(itemName). Du mußt aber nach not nothing und nach item.type checken.
Gegebenenfalls ist es notwendig, dass du dir das gerade geschlossene Dokument über db.getDocumentByUNID holst.
Die UniversalID und die Daten für das Ziel des Doclinks kannst du dir in globalen Masken-Variablen speichern.

Gruß Axel

cfiber:
@kennwort

Genau das ist das Problem. Man hat nur Ärger mit den Richtextfeldern. Gibt es da keine einfachere Lösung? So brech ich mir wieder einen ab....

Axel:

--- Zitat von: cfiber am 16.12.05 - 09:53:50 ---Man hat nur Ärger mit den Richtextfeldern. Gibt es da keine einfachere Lösung? So brech ich mir wieder einen ab....

--- Ende Zitat ---

Es gibt keine einfachere Lösung mit RTF-Feldern. Ich habe mir da auch schon sehr oft einen abgebrochen.

Bei einem neuen Dokument kannst du auf ein RTF-Feld mit Script-Methoden nur zugreifen wenn das Dokument einmal gespeichert, geschlossen und wieder geöffnet wurde. Mit den normalen Script-Befehlen uidoc.Reload, uidoc.Refresh usw. kommst du hier nicht weit.

Forumsmitglied ata hat da mal eine kleine Funktion für sowas erstellt.


--- Code: ---REM Das aktuelle Dokument schließen und wieder öffnen......
    Function ReOpen(docThis As NotesDocument) As Integer
        Dim ws As New NotesUIWorkspace
        Dim uidoc As NotesUIDocument
        Dim dbThis As NotesDatabase
        Dim unid As String
 
        ReOpen = 0
        Set dbThis = docThis.ParentDatabase
        Call docThis.Save(True , True)
        unid = docThis.UniversalID
        docThis.SaveOptions = "0" ' # ... Speicherabfrage vermeiden
        Set uidoc = ws.CurrentDocument
        Call uidoc.Close
        Set docThis = dbThis.GetDocumentByUNID(unid)
        Set uidoc = ws.EditDocument(True , docThis)
        Set docThis = uidoc.Document
        If docThis.HasItem("SaveOptions") Then 
            ' # ... das Feld SaveOptions wieder entfernen...
            docThis.RemoveItem("SaveOptions")
            Call docThis.Save( True , True )
        End If
        ReOpen = 1
        Print "Das Dokument wurde erneut geöffnet"
    End Function


--- Ende Code ---

Axel

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln