1

6 つのエージェント、1 つのフォーム (「エージェント ステータス」)、1 つのビュー (「エージェント ステータス リスト」)、および 1 つのスクリプト ライブラリ (「プロセス エージェント」) があります。

フォーム フィールド: AgentName (エージェントの名前を格納)、LastDate (エージェントの最終実行日時)

表示: フォームに基づく。AgentName は 1 列目です。

各エージェントの名前は次のとおりです (括弧付き): (Agent01)、(Agent02)、(Agent03)、(Agent04)、(Agent05)、および (Agent06)

スクリプト ライブラリ コード

Option Public
Option Declare

Dim vw As NotesView, doc As NotesDocument

Sub Initialize
End Sub

Sub setLastRun(db As NotesDatabase, a As NotesAgent, dte)   
    Set vw=db.Getview("Agent Status List")
    Set doc=vw.Getdocumentbykey(a.Name, True)
    If doc Is Nothing Then
        Set doc=New NotesDocument(db)
        doc.form="Agent Status"
        doc.AgentName=a.Name
        doc.LastDate=CDat(dte)
        Call doc.save(True, True)
        Call vw.Refresh()
    Else
        Call doc.Replaceitemvalue("LastDate", CDat(dte))
        Call doc.Save(True, True)
        Call vw.Refresh()
    End If  
End Sub

Function getLastRun(db As NotesDatabase, a As NotesAgent)
    Set vw=db.Getview("Agent Status List")
    Set doc=vw.Getdocumentbykey(a.Name, True)
    If Not doc Is Nothing Then
        getLastRun=doc.LastDate(0)
    Else
        Call setLastRun(db, a, Now)
        getLastRun=CDat(Now)
    End If
End Function

エージェントの各コードには、次のものを含めます。

頂点で:Use "Process Agent"

コードの冒頭で (「エージェント ステータス リスト」ビューからこのエージェントの最終実行日を取得します):

Dim s As New NotesSession, db As NotesDatabase
Dim a As NotesAgent, lastdate
Set db=s.Currentdatabase
Set a=s.Currentagent
lastdate=getLastRun(db, a)

コードの最後で (このエージェントの新しい最終実行日を設定します):Call setLastRun(db, a, now)

問題は、[エージェント ステータス リスト] ビューでエージェント名を検索できないように見えることです。

エージェント名ロータス ヘルプ ファイルの説明: 読み取り専用。エージェントの名前。データベース内では、エージェントの名前は一意ではない場合があります。

ビューを見ると、既存のドキュメントを参照して更新するのではなく、毎回新しいドキュメントを作成します。ビュー内の名前は、括弧なしで「Agent01」としてのみ表示されます。それが原因ですか?または、名前が一意ではないため、検索できないという記述があります。私はこれを理解していません。すべて問題なければ、ビューには 6 つのドキュメントしか表示されません。

4

1 に答える 1

1

GetDocumentByKey は何も返していません。最も可能性の高い原因は、「エージェント ステータス リスト」の最初の列に並べ替えプロパティを設定するのを忘れていることです。

于 2012-08-08T12:33:12.130 に答える