次のエージェントは、現在の文書の Body アイテム内での最初の (または唯一の) 文書リンクで使用されている参照先ビューの名前を表示します。Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim rti As NotesRichTextItem
Dim rtnav As NotesRichTextNavigator
Dim rtlink As NotesRichTextDocLink
Sub Initialize
Set session = New NotesSession
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument
Set rti = doc.GetFirstItem("Body")
Set rtnav = rti.CreateNavigator
If Not rtnav.FindFirstElement(RTELEM_TYPE_DOCLINK) Then
Messagebox "No doclinks in Body item",, "No doclinks"
Exit Sub
End If
Set rtlink = rtnav.GetElement
If rtlink.ViewUNID = String$(32, "0") Then
Messagebox "Link does not have a view component",, _
"No view"
Exit Sub
End If
Dim linkDb As New NotesDatabase("", "")
If Not linkDb.OpenByReplicaID("", _
rtlink.DbReplicaID) Then
Messagebox "No local replica",, "Cannot find database"
Exit Sub
End If
Dim linkView As NotesView
foundIt = False
Forall view In linkDb.Views
If view.UniversalID = rtlink.ViewUNID Then
foundIt = True
Set linkView = view
Exit Forall
End If
End Forall
If foundIt Then
Messagebox linkView.Name,, "View name"
Else
Messagebox "Cannot locate view",, "No such view"
End If
End Sub
次のエージェントは、文書リンクの参照先ビューを検出し、データベース内の次のビューを取得し、そのビューの最初の文書をポインタによって示すように文書リンクを変更します。Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim rti As NotesRichTextItem
Dim rtnav As NotesRichTextNavigator
Dim rtlink As NotesRichTextDocLink
Sub Initialize
Dim linkDb As New NotesDatabase ("", "")
Dim linkView As NotesView
Dim linkDc As NotesDocumentCollection
Dim linkDoc As NotesDocument
Dim foundView As Boolean
Dim msg1 As String, msg2 As String
' Open the document containing the link
Set session = New NotesSession
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument
' Get the doclink
Set rti = doc.GetFirstItem("Body")
Set rtnav = rti.CreateNavigator
If Not rtnav.FindFirstElement(RTELEM_TYPE_DOCLINK) Then
Messagebox "No doclinks in Body item",, "No doclinks"
Exit Sub
End If
Set rtlink = rtnav.GetElement
If rtlink.ViewUNID = String$(32, "0") Then
Messagebox "Link does not have a view component",, _
"No view"
Exit Sub
End If
' Find the view in the target database; get the handle to
' the next view in the database
If Not linkDb.OpenByReplicaID("", _
rtlink.DbReplicaID) Then
Messagebox "No local replica",, "Cannot find database"
Exit Sub
End If
foundView = False
Forall v In linkDb.Views
If foundView Then
' get the next view
Set linkView = v
Exit Forall
End If
If v.UniversalID = rtlink.ViewUNID Then
Set linkView = v
msg1 = linkView.Name
foundView = True
End If
End Forall
' Get the first document in the new view
On Error Goto InvalidUNID
Set linkDoc = linkView.GetFirstDocument
' change link
rtlink.ViewUNID = linkView.UniversalID
rtlink.DocUNID = linkDoc.UniversalID
msg2 = linkDoc.Topic(0) & " in view: " & linkView.Name
Messagebox "from document in view: " & _
msg1 & Chr(13) & "to " & msg2, , _
"Changing doclink"
Call doc.Save (True, True)
Exit Sub
InvalidUNID:
Messagebox "Cannot locate document",, "No document"
Exit Sub
End Sub