Domino 9 und frühere Versionen > Entwicklung
Link in einem RichText anfügen
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