Lotus notes Lotus Notes:如何使@MailSend只运行一次

Lotus notes Lotus Notes:如何使@MailSend只运行一次,lotus-notes,lotus-formula,Lotus Notes,Lotus Formula,有一个名为:Sum的计算数字字段。正如它的名字所说,它基本上是一个百分比,每次用户完成其他字段时都会发生变化。最初是100% 我创建了一个配置区域,其中有一个包含两列的视图: Minimum value | Names ------------------------------------- 60 Name1, Name2 ------------------------------------- 30

有一个名为:
Sum
的计算数字字段。正如它的名字所说,它基本上是一个百分比,每次用户完成其他字段时都会发生变化。最初是100%

我创建了一个配置区域,其中有一个包含两列的视图:

         Minimum value | Names
-------------------------------------
            60          Name1, Name2
-------------------------------------
            30          Name3
-------------------------------------
            15          Name5
因此,当
Name3
Sum通知(仅一次)以及最后当数值字段
Sum
达到小于
15
=>配置区域中固定的另一
Name5
通知的立即值时,也仅一次。(我只想@MailSend一次的原因是,比方说,
Sum=20
=>前两个@MailSend不再生效,因为它们在
Sum
运行时,例如在第一种情况下,
=59.61
,相应地,
=29.14

我所做的是:

我尝试创建一些默认值为0的计算字段(隐藏,作为标志)。当第一个通知发出时,只需验证标志值是否为
0
,然后将值更改为
1
。但是,如果管理员在配置区域中创建了10个最小值,比如说
Sum
,我应该为这10个值创建每个标志吗


我感谢你的时间和帮助

检查newminimum是否在范围内,然后检查oldminimum是否超出范围

perphaps阵列可以帮助您

dim minimum(3) as integer
dim sendTo(3) as string
dim x as integer

minimum(0) = 0
minimum(1) = 10
minimum(2) = 30
minimum(3) = 70

sendTo(0) = "nameA"
sendTo(1) = "nameB"
sendTo(2) = "nameC"
sendTo(3) = "nameD"

x=0

newminimum = oldminimum + newvalue
do until x=UBound(minimum)
    if newminimum >= minimum(x) and newminimum >= minimum(x+1) 
         if oldminimum < minimum(x) then
                'send mail to Usergroup sendTo(x)
            end if
    end if
    x=x+1
loop
dim最小值(3)为整数
dim sendTo(3)作为字符串
作为整数的dim x
最小值(0)=0
最小值(1)=10
最低(2)=30
最低(3)=70
发送到(0)=“nameA”
发送至(1)=“名称B”
发送到(2)=“nameC”
发送至(3)=“已命名”
x=0
新最小值=旧最小值+新值
直到x=UBound(最小值)为止
如果新最小值>=最小值(x)和新最小值>=最小值(x+1)
如果最小值<最小值(x),则
'将邮件发送到用户组sendTo(x)
如果结束
如果结束
x=x+1
环

从视图的第一列获取所有总和值,如果邮件尚未发送,则为小于或等于字段总和的每个条目发送邮件。下面是一个未经测试的示例公式代码,旨在了解其工作原理:

_SumViewList := @DbColumn(...; 1);
@Transform(_SumViewList; "_SumView";
    @If(Sum <= _SumView & !(MailSentFor = @Text(_SumView));
            @Do(    @MailSend(@DbLookup(...; _SumView; 2); ...);
                    FIELD MailSentFor := @Trim(MailSentFor : @Text(_SumView)));
            ""))
\u SumViewList:=@DbColumn(…;1);
@转换(_SumViewList;“_SumView”;

@If(Sum)感谢您的回复,但是如果Sum应该是67,下一个是65呢?我应该每次编辑代码吗?