创建一个列出代理及其上次运行日期的视图&在lotusscript中的时间

时间:2012-08-08 02:20:12

标签: lotusscript

我有6个代理,1个表单(“代理状态”),1个视图(“代理状态列表”),& 1个脚本库(“Process Agent”)。

表单字段: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)

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

代理名称lotus帮助文件的说明是: 只读。代理商的名称。在数据库中,代理的名称可能不是唯一的。

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

1 个答案:

答案 0 :(得分:1)

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