Domino 9 und frühere Versionen > Entwicklung

Link in einem RichText anfügen

(1/3) > >>

jofa:
Guten Morgen an alle ...

Ich möchte mit einer Picklist mir ein Dokument aus einer anderen DB auswählen und einige Felder aus diesem in mein neues Dokument übernehmen, dieses klappt auch ganz gut, nur einen Link in einem RTF im neuen Dokument kann ich nicht anlegen. Ich bin fast am verzweifeln.  ??? ??? ???
Weiss jemand Rat  ::) ?

Mein Script (hinterlegt in einem Button):

---
Sub Click(Source As Button)
     Dim ws As New NotesUIWorkspace
     Dim session As New NotesSession
     Dim db As NotesDatabase
     Dim nab As NotesDatabase
     Dim note, tdoc As NotesDocument
     Dim vStringArray As Variant
     Dim tname As String
     Dim comma As Integer
     Dim ttel, tdw, tfax, tmail As notesitem
     Dim rtitem As NotesRichTextItem
     
     Set db = session.CurrentDatabase
     
     vStringArray = ws.PickListStrings(PICKLIST_NAME, False, db.Server, "names.nsf", "($VIMPeople)", "InternetAddress", "Bitte wählen Sie aus", 1, "")
     
           If  Isempty(vStringArray) Then Exit Sub
     
           ws.CurrentDocument.Editmode = True
     
           Set note = ws.CurrentDocument.Document
     
     comma = Instr(vStringArray(0),",")
     If comma > 0 Then
           tname = Fulltrim(Strrightback(vStringArray(0),",")) + " " + Fulltrim(Strleftback(vStringArray(0),","))
     Else
           tname = Fulltrim(vStringArray(0))
     End If
     
     Set nab = New NotesDatabase(db.server , "names.nsf")
     
     If nab.IsOpen Then
           
           Set view      = nab.GetView("($Users)")
           
           Set tdoc      = view.getdocumentbykey(tname)
           
           Set tmail      = tdoc.Getfirstitem("InternetAddress")
           Set ttel      = tdoc.Getfirstitem("OfficeNumber")
           Set tdw      = tdoc.Getfirstitem("OfficePhoneNumber")
           Set tfax      = tdoc.Getfirstitem("OfficeFAXPhoneNumber")
           
     End If
     
     
     Call note.ReplaceItemValue("DVB_Name", tname)
     Call note.ReplaceItemValue("tmp_DVB_Name", tname)
     Call note.ReplaceItemValue("DVB_Mail", tmail.Text)
     Call note.ReplaceItemValue("DVB_Tel", tdw.Text)
     Call note.ReplaceItemValue("DVB_Fax", tfax.Text)
     Call note.ReplaceItemValue("DVB_Kunde_Tel", ttel.Text)
     
     Set rtitem = New NotesRichTextItem( note, "Link" )
     Call rtitem.AppendDocLink( tdoc, "Verfügbare Details aus den Adressbüchern")
     Call rtitem.AddNewLine( 1 )
     Call rtitem.AppendText( "Test" )
     
     'Set note.Link = rtitem
     
End Sub
---

Gruss Jofa

Rob Green:
nur mal eine Frage: soweit sieht der Code auf den ersten Blick zum anlegen des Link ganz gut aus.

Aber, Du arbeitest doch bestimmt am Frontend mit dem neuen Doc, wo ja auch der Link hinein soll. Nur siehst Du den solange nicht, bis Du das Doc schließt und wieder öffnest. Hast Du das schon gechecked?

jofa:
Hi Rob,

habe ich leider schon getan,
das Dokument enthält dann auch das RFT Feld "Link", aber es ist leer. Auch nach erneutem öffnen  ???

Gruss Jofa

Rob Green:
ich sehe irgendwie auch nix:
- check doch mal bitte nochmals tdoc
- wie speicherst Du das Ganze
- probier mal einen View zu einer DefaultView zu machen und dann nochmals doclink Test
- lass mal die Zeilen nach dem appendoclink weg (neue zeile und text)

mehr fällt mir auch nicht ein momentan.

jofa:
Hi Rob,

habe mein Script umgebaut:

---
Sub Click(Source As Button)
     
     Dim session As New notessession
     Dim db As NotesDatabase
     Set db = session.CurrentDatabase
     
     Dim ws As New NotesUIWorkspace
     Dim uidoc As NotesUIDocument
     Set uidoc = ws.CurrentDocument 'get the frontend doc
     
     Dim backendDoc As NotesDocument
     Set backendDoc = uidoc.Document 'get the backend doc
     
     Dim rtDocLink As NotesRichTextItem
     
     Dim docPick As New NotesDocument( db )
     
     Dim vStringArray As Variant
     Dim tname As String
     Dim comma As Integer
     Dim ttel, tdw, tfax, tmail As notesitem
     
     vStringArray = ws.PickListStrings(PICKLIST_NAME, False, db.Server, "names.nsf", "($VIMPeople)", "InternetAddress", "Bitte wählen Sie aus", 1, "")
     
     If  Isempty(vStringArray) Then Exit Sub
     
     comma = Instr(vStringArray(0),",")
     If comma > 0 Then
           tname = Fulltrim(Strrightback(vStringArray(0),",")) + " " + Fulltrim(Strleftback(vStringArray(0),","))
     Else
           tname = Fulltrim(vStringArray(0))
     End If
     
     Set nab = New NotesDatabase(db.server , "names.nsf")
     
     If nab.IsOpen Then
           
           Set view      = nab.GetView("($Users)")
           
           Set tdoc      = view.getdocumentbykey(tname)
           
           Set tmail      = tdoc.Getfirstitem("InternetAddress")
           Set ttel      = tdoc.Getfirstitem("OfficeNumber")
           Set tdw      = tdoc.Getfirstitem("OfficePhoneNumber")
           Set tfax      = tdoc.Getfirstitem("OfficeFAXPhoneNumber")            
           
           Call backendDoc.ReplaceItemValue("DVB_Name", tname)
           Call backendDoc.ReplaceItemValue("tmp_DVB_Name", Evaluate("@Name([CN]; DVB_Name)", note))
           Call backendDoc.ReplaceItemValue("DVB_Mail", tmail.Text)
           Call backendDoc.ReplaceItemValue("DVB_Tel", tdw.Text)
           Call backendDoc.ReplaceItemValue("DVB_Fax", tfax.Text)
           Call backendDoc.ReplaceItemValue("DVB_Kunde_Tel", ttel.Text)
           
           backendDoc.RemoveItem( "Link" )
           
           backendDoc.CreateRichTextItem( "Link" )
           Set rtDocLink = backendDoc.GetFirstItem( "Link" )
           Call rtDocLink.AppendDocLink( tdoc, "DocLink" , "Details")
           
           Call backendDoc.Save(True ,True)  'Temp. Speichern des Backend-Doc. damit RTF-Feld angezeigt wird.  
           uidoc.Close
           Set uidoc = ws.EditDocument(True, backendDoc)  'Dokument im Frontend öffnen
'            Call backendDoc.Remove(True)  'Das Dokument, das im Backend erstellt wurde, löschen
           
           'Call backendDoc.Save( True, False )
           
           uidoc.Close
           
           '            Call backendDoc.Remove(True)  'Das Dokument, das im Backend erstellt wurde, löschen
           
     End If
     
End Sub
---

geht auchsoweit, ausser, dass er zwei Dokumente speichern will, eines davon ein Konflikt Dokument.

Leider weiss ich ad nicht weiter, da ich mit UI blutiger Anfänger bin ...

Will das Dokument erst speichern, nachdem der User alle weiteren felder gepflegt aht und nicht sofort, anchdem der Link eingefügt wurde :-(


Gruss JoFa

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln