を使用rtitem.AppendDocLink(doc, "Title")
して、必要なドキュメント リンクを作成できます。
満足のいく解決策を得るには、少しの課題があります。新しいドキュメントを作成するボタンに次の行を入れると
...
Set docSelected = session.DocumentContext
Set docNew = dbTarget.CreateDocument()
Set rtitem = docNew.CreateRichTextItem("Doclink")
Call rtitem.AppendDocLink(docSelected, "Title")
Call docNew.Save(True, True) ' <--- that is necessary :(
...
Call workspace.EditDocument(True, docNew)
次に、新しいドキュメントにリンクを作成し、すぐに表示されます。ただし、新しいドキュメントを保存した場合にのみ機能します。ユーザーが保存せずにドキュメントを閉じただけでも、ドキュメントはデータベースに残るため、これはお勧めできません。
したがって、別の解決策を探す必要があります。
ユーザーが保存した後、新しいドキュメントがドキュメント リンクを作成するようにしましょう。このために、新しいドキュメントに、リンク ドキュメントのデータベースと UniversalID に関する情報を提供する必要があります。新しいドキュメントを作成するボタンでそれを行います
Set docNew = dbTarget.CreateDocument()
docNew.LinkDb = session.CurrentDatabase.FilePath
docNew.LinkUniversalID = session.DocumentContext.UniversalID
新しいドキュメントのフォームで、計算された RichText フィールド「Doclink」を作成します。フィールドにリンクを入力するのに適した時期はいつですか? 私が理解したように、Querysave
イベントは早すぎます。フィールド「Doclink」は、標準のドキュメント保存中に破損します。解決策は、それまで待っQueryclose
て、そこにリンクを設定することです。ただし、ユーザーがドキュメントを一度だけ保存した場合にのみ実行する必要があります。そのため、Querysave
イベントを監視し、ユーザーがドキュメントを保存したというフラグを設定する必要があります。リンクを作成するときQueryclose
に、フィールド「LinkDb」と「LinkUniversalID」を削除し、保存フラグが設定されていてドキュメントにフィールド「LinkDb」が含まれている場合は、ドキュメントを再度保存します。
フォームのコードは次のとおりです。
(Declarations)
Dim bSaved As Boolean
Sub Initialize
bSaved = False
End Sub
Sub Querysave(Source As Notesuidocument, Continue As Variant)
bSaved = True
End Sub
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
If bSaved Then
Dim session As New NotesSession
Dim doc As NotesDocument
Dim dbLink As NotesDatabase
Dim docLink As NotesDocument
Dim rtitem As NotesRichTextItem
Set doc = Source.Document
If doc.HasItem("LinkDb") Then
Set dbLink = session.GetDatabase(doc.ParentDatabase.Server, doc.LinkDb(0), False)
Set docLink = dbLink.GetDocumentByUNID(doc.LinkUniversalID(0))
doc.RemoveItem("Doclink")
Set rtitem = doc.CreateRichTextItem("Doclink")
Call rtitem.AppendDocLink(docLink, "Link")
doc.RemoveItem("LinkDb")
doc.RemoveItem("LinkUniversalID")
Call doc.Save(True, True)
End If
End If
End Sub
ドキュメント リンクを追加する前に、RichText フィールドを削除して新しく作成することが重要です。