2012-09-28 53 views
0

我有3个(或更多)部门。对于每个部门都有电子邮件收件人。例如:Lotusscript从数组中跳过元素?

部门A:约翰,玛丽。部门B:约翰,克里斯。部门C:约翰。

该字段(文本列表)被称为EmailRecipient的形式部门目前我设法发送电子邮件给每个部门的每个收件人。但是,由于电子邮件的内容相同,我只需要向John发送一次电子邮件。我已经在我的测试剂目前做的是如下:

Dim view As NotesView, doc As NotesDocument 
Set view=db.Getview("Department") 
Set doc=view.Getfirstdocument() 
Do While Not doc Is Nothing 
    ForAll x In doc.EmailRecipient 
     Set doc=db.Createdocument() 
     doc.form="Memo" 
     doc.subject="test" 
     Call doc.Send(True, x) 
    End ForAll 
Loop 

如何在下一个部门的EmailRecipient数组中跳过约翰,如果我已经发电子邮件给他?

回答

2

使用列表。如果您不了解LotusScript中的List数据类型,请在Domino Designer帮助数据库中查找“使用列表”。

外面的循环,你会创建一个列表:

dim alreadySent List as String 

内,您的FORALL,你会每名添加到列表:

alreadySent(x) = departmentName 

最后你会把你的电话

if isElement(alreadySent(x)) = True then 
    ' print "Skipping " + x + " because the message was already to this recipient sent for department " + alreadySent(x) 
    Call doc.send(True,x) 
end if 

请注意,我:到检查列表中的if语句里面doc.Send在这里即兴创作。我假设您的部门表单有一个名称字段。我知道你并没有真正阅读过它,但很容易让你添加。您并不需要这么做,因为您可以轻松地声明'alreadySent List为Boolean'并分配了alreadySent(x)= True,但通过使用字符串列表并为每个收件人分配departmentName,您可以跟踪哪个部门你已经看到了这个用户。我包括了注释掉的打印语句,以显示这可能是有用的。

+0

感谢它的工作。唯一的区别是我把doc.sent()放在'Else'声明' –