次のコードを持つエージェントがあります。
Sub Initialize
MessageBox "AgentStart"
Print "AgentStart"
Dim ws As New NotesUIWorkspace
Dim s As New NotesSession
Dim db As NotesDatabase
Dim vItemsBySupplierSpec As NotesView
Dim Doc As NotesDocument
Dim DocsWithSameSupplierSpec As NotesDocumentCollection
Dim MatchingDoc As NotesDocument
Set Doc = ws.CurrentDocument.Document
If Len(Doc.ItemSupplierSpecification(0)) > 0 Then
' Check that this supplier specification isn't use anywhere else.'
Set db = s.CurrentDatabase
Set vItemsBySupplierSpec = db.GetView("vItemsBySupplierSpec")
Set DocsWithSameSupplierSpec = vItemsBySupplierSpec.GetAllDocumentsByKey(Doc.ItemSupplierSpecification(0), True)
Set MatchingDoc = DocsWithSameSupplierSpec.GetFirstDocument
Dim ItemsString As String
ItemsString = "The following items already use this supplier specification." + Chr(10) + Chr(10) + _
"You should check whether you really want to raise another, or use the existing one." + Chr(10)
While Not MatchingDoc Is Nothing
ItemsString = ItemsString + Chr(10) + MatchingDoc.ItemNumber(0) + " - " + MatchingDoc.ItemDescription(0)
Set MatchingDoc = DocsWithSameSupplierSpec.GetNextDocument(MatchingDoc)
Wend
If DocsWithSameSupplierSpec.Count > 0 Then
Print ItemsString
MsgBox ItemsString
End If
End If
End Sub
以前は、フォームのフィールドの onchange イベント内で実行されていました。
上記のようにエージェントを作成したので、UI から Lotus スクリプトと @formula 言語の両方でエージェントを呼び出したいと考えています。
Dim s As New NotesSession
Dim db As NotesDatabase
Set db = s.CurrentDatabase
Dim CheckSupplierSpec As NotesAgent
Set CheckSupplierSpec = db.GetAgent("CheckSupplierSpec")
If CheckSupplierSpec.Run = 0 Then
MessageBox "Agent Ran"
End If
イベント - メニュー選択、ターゲット: なし、オプション: 共有のトリガーとしてエージェントを作成しました。「Agent Ran」というメッセージ ボックスが表示されます。
私はこれを試しましたが、onchangeイベントが発生したときに最後に実行されたとエージェントを確認しましたが、メッセージボックスや印刷出力が表示されません。
最初の質問は、なぜメッセージ ボックスが機能しないのかということです。2 番目の質問は、現在のドキュメントを取得するにはどうすればよいですか?