Domino 9 und frühere Versionen > ND9: Entwicklung

NotesDocument in RichText einbetten

<< < (3/3)

mauermauer:
Es schaut jetzt so aus:


--- Code: ---Set docLinkPR =  CreatePurchaseRequestFromNF (arrProjects,uidoc)
Call uidoc.FieldSetText("PRLINK","TEXT")

Dim nrtf As NotesRichTextItem
Set nrtf=doc.GetFirstItem("PRLINK")
If nrtf Is Nothing Then
Else
Call doc.RemoveItem("PRLINK")
End If
Set nrtf= doc.CreateRichTextItem( "PRLINK")
Call nrtf.AppendDocLink (docLinkPR, "TEST")
--- Ende Code ---

"TEXT" steht drin, beim Doclink streikt er und ich hab schon mehrere Mailagenten geschrieben und einen Doclink angehängt. Warum klappt das gerade hier nicht?

ERR:
Das Dokument wird jetzt durch dich im UI verändert (FieldSetText). Aber neu geöffnet wird es doch immer noch nicht...

Ich meinte


--- Code: ---Call nrtf.AppendText("Text")
--- Ende Code ---

...und danach neu das Dokument neu öffnen.

Bau außerdem mal Error-Handling ein

--- Code: ---Sub Test
On Error Goto ErrorHandler

...Code...

Exit Sub

ErrorHandler:

Print Err, Erl, Error
End Sub
--- Ende Code ---

Dann würde man sehen, ob das Problem mit der Vorgabe-Ansicht vorhanden ist...

MFG
ERR

mauermauer:
Mit AppendText passiert nix. Das Error-Handling war da schon drin und hat nicht mehr angeschlagen.

Zumindest schaffe ich es wenn ich das Speichern ablehne, dass mit "Link" als Link ein Link angezeigt wird.
Ich kannte bisher nur das orangene Blatt und hätte das gerne wieder und ohne, dass man das Speichern ablehnen muss.

Andrew Harder:
Splitte das Ganze doch mal, vielleicht wird es dann klarer

Lege in der Funktion doch nur das PRDoc an, schreibe dort die gewünschten Werte rein, speichere es und gebe es zurück. Hierbei am besten das Hintergrunddokumet Deines UI Docs reingeben (doc.Document)

Das sieht dann in etwa so aus

--- Code: ---Private Function CreatePR(_
    parrPositions As Variant, _
    pdoc As NotesDocument, _
    phazard As Boolean) As NotesDocument

    On Error GoTo lblErrorHandler
    
lblDeclarations:
    Dim session As NotesSession
    Dim dbCurrent As NotesDatabase
    Dim dbBF As NotesDatabase
    Dim docPR As NotesDocument
    Dim first As Long
    dim last As Long
    Dim index As long
    Dim server As String
    Dim file As String
    Dim sPrefixNF As String
    Dim sPrefixPR As String
    
    Set session = New NotesSession
    Set dbCurrent = session.CurrentDatabase
    
    If Left(dbCurrent.Title,3) = "***" Then
        server = "EuropeNotesDev1/Servers/XXX"
        file = "Firma\IT\DEV_Purchase.nsf"
    Else
        server = dbCurrent.Server
        file = "XXX\Purchase.nsf"
    End If
    Set dbBF = session.GetDatabase(server, file, False)
    Set docPR = New NotesDocument(dbBF)
    Call docPR.ReplaceItemValue("Form", "PReq")
    Call docPR.ReplaceItemValue("UNIDLinkToNachforderung", pdoc.Universalid)
    Call docPR.ReplaceItemValue("Currency3B", "EUR")
    first = LBound(parrPositions)
    last = UBound(parrPositions)
    For index = first To last
        sPrefixNF = "P" & parrPositions(index)
        sPrefixPR = "_" & CStr(index+1)
        Call docPR.ReplaceItemValue("QTY" & sPrefixPR, pdoc.GetItemValue(sPrefixNF & "Mge")(0))
        Call docPR.ReplaceItemValue("DESC" & sPrefixPR, pdoc.GetItemValue(sPrefixNF & "ArtBeschr")(0))
        Call docPR.ReplaceItemValue("PRTNO" & sPrefixPR, pdoc.GetItemValue(sPrefixNF & "ANR")(0))
        Call docPR.ReplaceItemValue("LESTUNITPRICE" & sPrefixPR, pdoc.GetItemValue(sPrefixNF & "EP")(0))
    Next index
    Call docPR.Save(Tue, False)

lblEnd:
    Set createPR = docPR
    Exit Function
    
lblErrorHandler:
    Print Err, Error &" in " & GetThreadInfo(1) & "/" & Erl
    Goto lblEnd
    
End Function

--- Ende Code ---

Anschließend erstellst Du Dir eine neue Sub, die den Rest erledigt (z. B. Sub CreateLink)
Dort dann: UIDoc schliessen (Speichern nicht vergessen), Hintergrund Dokument davon holen, die Felder setzen und anschließend wieder als UIDoc öffnen (EditDocument).
Beispiele hierfür gibt es hier im Forum einige, suche einfach mal nach "reopen".

mauermauer:
Wollte euch die Lösung nicht vorenthalten. Hilft sicher auch Anderen. Danke euch.


--- Code: ---Set docLinkPR = CreatePR (arrProjects,uidoc, bolHazardFound)
Call uidoc.FieldSetText("StatusOfPR",docLinkPR.Status(0))
Call uidoc.FieldSetText("PRID",docLinkPR.ReqNo(0))
Call uidoc.Save
Set doc = uidoc.Document
uidoc.EditMode = False
Call uidoc.Close(True)
If doc.HasItem("PRLINK") Then
doc.RemoveItem("PRLINK")
End If
Set rtitem = New NotesRichTextItem(doc,"PRLINK")
Call rtitem.AppendDocLink(docLinkPR,"TEST")
Call doc.Save(True,False)
Set uidoc = ws.EditDocument(True,doc)
--- Ende Code ---

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln