1

我有 6 个代理、1 个表单(“代理状态”)、1 个视图(“代理状态列表”)和 1 个脚本库(“进程代理”)。

表单字段:AgentName(存储代理的名称),LastDate(代理的上次运行日期和时间)

视图:基于表格。AgentName 是第一列。

每个代理命名如下(带括号):(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)

现在的问题是它似乎无法在“代理状态列表”视图中查找代理名称。

代理名称 Lotus 帮助文件的描述为: 只读。代理的名称。在数据库中,代理的名称可能不是唯一的。

当我查看视图时,它每次都会创建一个新文档,而不是引用和更新现有文档。视图中的名称仅显示为“Agent01”,不带括号。是这个原因吗?或者由于名称不是唯一的描述,因此无法查找。我不明白这一点。如果一切正常,视图中应该只有 6 个文档。

4

1 回答 1

1

GetDocumentByKey 不返回任何内容。最可能的原因是您忘记在“代理状态列表”的第一列设置排序属性。

于 2012-08-08T12:33:12.130 回答