2011-02-24 126 views
1

我有了场员工号,员工姓名&员工的电子邮件地址雇员信息的形式。注册新员工信息时,我无法获取电子邮件地址(来自Domino目录names.nsf),表单中的员工姓名必须与目录中的姓名匹配并带上邮件地址。
请帮助我是新来的Lotus Notes :( 我想这个公式......对于电子邮件地址字段...如何从NAMES.NSF Domino目录中的电子邮件地址 - Lotus Notes的

server := @Name([CN]; @Subset(@DbName; 1)); 
err := "No email address found, plz chk Domino Directory"; 
@If(EmpName != ""; @DbLookup("":"NoCache";server:"names.nsf";"People";Name;4); Email); 
@If(@IsError(err)=err) 

但是这是行不通的,我只得到了错误,但不是电子邮件地址。PLZ帮我:( 然后我DbColumn ...伊茨填充所有的电子邮件地址在电子邮件领域的尝试。
我的要求是把从Domino目录与员工姓名registerd匹配名称的电子邮件地址,如果不存在的邮件地址,显示错误。

+0

嗯,我想这太... BT笏我为server_name放? :(...和隐藏的视图$用户在马目录中,邮件地址列是空的...另外... ma在表格中的EMPNAME是格式(用户名/域名)...这个寒暄有一个匹配用户视图仪式中的字段?... – user631457 2011-02-25 04:04:31

+0

您的实际问题与只有任何公式的最后一行返回值的事实相混淆。您的倒数第二行执行@DBlookup,但它不返回值或赋值最后一行没有任何用处,因为它将一个布尔值与一个字符串进行比较,Mark的解决方案是正确的 - 但您仍然需要调整公式的结构。 – 2012-03-15 15:21:35

回答

1

哇,你是新来的Lotus Notes。这FORMUL一个是一团糟! :-)

首先,“人”的观点是不恰当的@DBLookup。第一列未排序。使用Designer进行检查。

我通常使用隐藏视图($ Users)。第一列有一个人姓名的多种变体,并进行排序。电子邮件地址可在第8列中找到,所以类似这样的内容可能会起作用:

result:= @DbLookup(“”; server_name:“names.nsf”;“($ Users)”; name_to_match; 8; [FailSilent ]);

随着[FailSilent]的结果将是“”,如果有错误或不匹配。如果它不工作,并且你确实认为它应该,请使用[FailSilent]并使用@Prompt([OK];“Result”; @Text(result))来查看错误是什么。

除非你期望的names.nsf个人文档是越来越频繁更新,你可以离开了“NoCache的”出你的@DbLookup的。它会更快。

0

马克已经很好的回答了你的问题。
格式化的问题,以制更具可读性后,我发现了什么仍然会造成一个问题:假设这是一个计算字段Email的值的公式,该公式应返回@DbLookup的结果,如果成功。你使用的那个似乎没有。另外,最后一行似乎错误输入。
所以,马克的办法,结合你的配方并重新排列码一小会儿解决您的评论:
1.没有必要再进一步,如果场EmpName是空的,只是返回的Email当前内容:
@If(EmpName = ""; @Return(Email); "");
2.对于服务器名称,你可以做你用什么公式的第一行,或者只是:
server := @Subset(@DbName; 1);
3.现在做的查找,返回值是必去的Email字段中的值,所以应该有在末尾没有分号:
@DbLookup(""; server:"names.nsf"; "($Users)"; EmpName; 8; [FailSilent])
而且,是的,($Users)视图包含格式Username/Domain的用户名。

如果你决定要显示查找错误(如果有的话)在现场,你应该使用这个代码: errorMessage := "<your message here>";
result := @DbLookup(""; server:"names.nsf"; "($Users)"; EmpName; 8);
@If(@IsError(result); errorMessage; result)

相关问题