列公式中的Lotus View和Date值

时间:2018-03-02 09:45:08

标签: lotus-notes lotus lotus-formula

嗨(对不起可能的公告)。

我正在努力解决一些过去设计糟糕的传统商业数据库中的性能问题。

这个数据库中有很多视图,它们都在内部公式的视图列中包含公式 @Now,@ Today 值,这些值增加了Lotus Views的打开/刷新速度(作为注意,视图主选择公式中没有日期操作)。

此数据库中的信息必须始终是最新的并且已刷新,因此更改视图选项(刷新时间间隔)的解决方案不够好。

我正在尝试创建一个全局文档(或找到类似的解决方案),它将在晚上与服务器代理一起更新,并将包含包含年,月和日的字段,并尝试将此文档添加为子表单对于每个文档,所以这些带有年份等的字段将在每个文档中都可访问,因此我可以在我未来的列@ -formulas中调用它们,并且每天都会更新此子表单中的此字段。

真的可能/正确的解决方案吗?我怎样才能做到这一点? 您能否提出一些建议,解决这个问题的最佳方法是什么?

P.S。在使用日期时,我已经阅读了大量有关Lotus Views性能问题的文章,而且大多数都是关于创建服务器代理,这将每天更新一次选择公式...但在我的变体中 - 我有一个列中的公式。

谢谢。

更新03.03.2018:

Thanks to Knut Herrmann,我已经明白我需要使用代理来更新列公式,这是可能的。 但是我也试图理解为什么在更新视图公式后视图会更快地工作?不太明白这个解决方案。 为什么每次在夜间更新一次性公式后都不需要更新视图索引,为什么每次我不使用这种方法时它都会刷新?

2 个答案:

答案 0 :(得分:1)

使用代理方法。

每晚使用NotesViewColumn's Formula属性更改列公式:

li.active a {
    /*your style goes here*/
}
li.active i {
    /*your style goes here*/
}

代理背后的想法是避免列公式中的Dim column as NotesViewColumn set column = ... column.Formula = "your column formula" ,因为此函数会在每次调用时使视图刷新。

示例:

每天凌晨2点更改列公式(显示剩余天数)

@Today

(@Date(Deadline) - @Today) / 86400

这样你可以通过用公式中的当前日期替换它来消除“危险”功能“@Today”。

答案 1 :(得分:1)

另一种选择是使用调度代理中的NotesDocumentCollection StampAll()方法向所有文档添加字段。例如:

    dim db as NotesDatabase
    dim dc as NotesDocumentCollection
    dim todayDate as new NotesDateTime("")
    set dc = db.alldocuments() ' Or whatever selection of documents you want.
    set todayDate.localtime = format(Now(),"mm/dd/yyyy")
    call dc.stampall("TodayDate",todayDate)