Sub Click(Source As Button)
Dim s As New NotesSession
Dim ws As New NotesUIWorkspace
Dim thisdb As NotesDatabase
Dim coll As NotesDocumentCollection ' collection returned from PickListCollection
Dim otherdoc As NotesDocument ' this is the doc to create a link to
Dim thisdoc As NotesDocument ' the new doc that the link is being added to
Dim rtitem As NotesRichTextItem ' required for AppendDocLink
Dim nitem As Variant ' used to get a handle on the NotesRichTextField
Dim olduidoc As NotesUIDocument ' the original instance of the uidoc
Dim newuidoc As NotesUIDocument ' the new instance of the uidoc after the doc link has been added
Set thisdb = s.CurrentDatabase
Set olduidoc = ws.CurrentDocument ' current uidoc
Set thisdoc = olduidoc.Document ' doc in memory but hasn't been saved yet
' select the doc to link to
Set coll = ws.PickListCollection( PICKLIST_CUSTOM, False, thisdb.Server, thisdb.FilePath, "luProject", "Project List", "Please select a project." )
' if a doc isn't selected exit
If coll.Count = 0 Then
Messagebox "User canceled" ,,"No project was selected."
Exit Sub
End If
' get the doc to link to
Set otherdoc = coll.GetFirstDocument
' grab some values from that doc
thisdoc.ProjectName = otherdoc.ProjectName
thisdoc.CustomerName = otherdoc.CustomerName
' get the RichTextField in the current uidoc
Set nitem = thisdoc.GetFirstItem( "ProjectDocLink" )
' add the doc link
' NOTE: this is being done to the backend doc that exists in memory
If ( nitem.Type = RICHTEXT ) Then
Set rtitem = nitem
Call rtitem.AppendDocLink(otherdoc, "Original Doc Link", "")
Call rtitem.Update
End If
' set the SaveOptions field so that when the uidoc is closed, the user won't be asked to save
thisdoc.SaveOptions = "0"
' close the uidoc. It won't actually happen until the code is finished executing
Call olduidoc.Close(True)
' create a new uidoc and open the backend doc that is still in memory with added doc link
Set newuidoc = ws.EditDocument(True, thisdoc)
' delete the reference to the old uidoc
' this is necessary because the code below affects it if left in memory
Delete olduidoc
' re-associate the variable with the backend doc
' have to do this because the olduidoc reference was deleted
Set thisdoc = newuidoc.Document
' remove the SaveOptions field so the doc can be saved
Call thisdoc.RemoveItem( "SaveOptions" )
End Sub