代码之家  ›  专栏  ›  技术社区  ›  Alexey Shabramov

列公式中的Lotus视图和日期值

  •  1
  • Alexey Shabramov  · 技术社区  · 6 年前

    您好(很抱歉可能有问题)。

    我正在尝试修复一些过去设计糟糕的遗留商业数据库中的性能问题。

    这个数据库中有很多视图,它们都包含公式 @现在,@今天 内部公式中视图列中的值,这将提高Lotus视图的打开/刷新速度(请注意,视图主选择公式中没有日期操作)。

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

    我正在尝试创建一个全局文档(或寻找类似的解决方案),该文档将在夜间使用server agent更新一次,并将包含年、月和日字段,并尝试将此文档作为子表单添加到每个文档中,因此,每个文档中都可以访问e.t.c年份的字段,因此我可以在未来的列@-公式中调用它们,并且每天都会更新此子窗体中的字段。

    真的有可能/正确的解决方案吗?我该怎么做? 你能给我一些建议吗?解决这个问题的最好方法是什么?

    p、 我已经读了很多关于Lotus View在使用日期时的性能问题的文章,大部分都是关于创建服务器代理的,它将每天更新一次选择公式。。。但在我的变体中,我在列中有一个公式。

    非常感谢。

    2018年3月3日更新:

    Thanks to Knut Herrmann ,我知道我需要使用代理来更新列公式,这是可能的。 但我也在试图理解为什么视图公式更新后,视图会运行得更快?不太了解此解决方案。 为什么在夜间更新一次性公式后,它不需要每次都更新视图索引,为什么现在我不使用这种方法时,它每次都会刷新?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Knut Herrmann    6 年前

    使用代理方法。

    使用更改列公式 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
    

    这样,就可以用公式中的当前日期替换“危险”函数“@今日”。

        2
  •  1
  •   Duston    6 年前

    另一种选择是使用scheduled agent中的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)