Lotus Notes:与@DBlookup相关的多个@MailSend

时间:2014-02-24 09:26:15

标签: view lotus-notes formula

以下是我的方案:有一个应用程序,它会在“今天”之前的X天内通知某些用户。

这些用户和天数是在配置区域中引入的。这是列出它们的视图:(顺便说一句,可能会有更多的天数,就像管理员想要的那样多)

Days | Persons |
______________
30
      Name1
      Name2
      Name3
60
      Name4
      Name5

在创建此配置区之前,我在代理中只使用了一个简单的公式(计划每天运行),如下所示:(只修复了30天 - 现在用户可以在配置区中设置为他想要很多天)

@If(@Date(@Adjust(@Date(@Now);0;0;30;0;0;0)) = @Date(final_date)); 
    (@MailSend("Name1":"Name2":"Name3";"";"";"This document expires in 30 days!";"";"";
[IncludeDoclink]) );

我知道使用@DBLookup@Dbcolumn我可以从视图中的2列中获取值。但是,如何根据配置区域上建立的天数大小创建尽可能多的@MailSend函数?我应该创建一个长度=第一列@DbColumn元素的'长度'的数组吗?

此外,必须只创建一个代理(使用多个@MailSend)或多个代理?如果有机会,我想在公式语言中这样做,或者,如果它更容易理解和更简单,那么在LotusScript中。

任何帮助将不胜感激。谢谢你的时间!

2 个答案:

答案 0 :(得分:1)

计算@Date(final_date)@Today之间的天数差异,并将其作为@DbLookup(... [FAILSILENT])的关键字来获取@MailSend的名称列表。如果列表为空,则无需发送邮件。

答案 1 :(得分:0)

只需将它写在Lotusscript中即可。在我看来,更容易。

使用NotesView类的AllEntries属性获取包含视图中所有条目的NotesDocumentCollection对象,然后使用GetFirstEntry / GetNextExtry循环遍历集合。

使用NotesViewEntry对象的ColumnValues属性获取第一列和第二列(比实际打开/访问NotesDocument对象快得多),然后只是邮寄用户。

比较日期也会容易得多。只需使用今天的日期创建一个NotesDateValue对象,将其设置为 n 天 - 其中 n 是ColumnValues(0)中的值 - 并将其与最终日期(您还应将其放在视图中的列中以便快速查找)。

我woudl还建议你和我们进行比较。如果代理无法运行一天,则不会向您的代码发送通知。如果通知已成功发送,则在文档上设置一个标志,并排除在该视图中显示带有该标志的任何文档。