嗨(抱歉可能重复)。
我试图修复一些过去设计糟糕的遗留商业数据库中的性能问题。
这个数据库中有很多视图,它们都包含内部公式视图列中的公式@Now,@ Today值,这些都是增加Lotus Views打开/刷新速度(作为通知,没有日期操作在视图主选择公式中)。
此数据库中的信息必须始终是最新的并且已刷新,因此更改视图选项(刷新时间间隔)的解决方案不够好。
我正在尝试创建一个全局文档(或找到类似的解决方案),它将在晚上与服务器代理一起更新,并将包含包含年,月和日的字段,并尝试将此文档作为子窗体添加到每个文档,所以这些带有年份等的字段将在每个文档中都可访问,因此我可以在我未来的列@ -formulas中调用它们,并且每天都会更新此子表单中的此字段。
它真的可能/正确的解决方案吗?我怎样才能做到这一点?您能否提出一些建议,解决这个问题的最佳方法是什么?
附:在使用日期时,我已经阅读了大量有关Lotus Views性能问题的文章,而且大多数都是关于创建服务器代理,这将每天更新一次选择公式...但在我的变体中 - 我有一个列中的公式。
谢谢。
更新03.03.2018:
Thanks to Knut Herrmann,我已经明白我需要使用代理来更新列公式,这是可能的。但是我也试图理解为什么在更新视图公式后视图会更快地工作?不太明白这个解决方案。为什么每次在夜间更新一次性公式后都不需要更新视图索引,为什么每次我不使用这种方法时它都会刷新?
使用代理方法。
每晚用NotesViewColumn's Formula属性更改列公式:
Dim column as NotesViewColumn
set column = ...
column.Formula = "your column formula"
代理背后的想法是避免列公式中的@Today
,因为此函数会在每次调用时使视图刷新。
例:
每天晚上2点更改列公式(显示剩余天数)
(@Date(Deadline) - @Today) / 86400
至
(@Date(Deadline) - @Date(2018; 03; 04)) / 86400
通过这种方式,您可以通过将其替换为公式中的当前日期来消除“危险”功能“@Today”。
另一种选择是使用调度代理中的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)