我有一个员工信息表单,其中包含Employee No,Employee Name&员工电子邮件地址。注册新的员工信息时,我无法获取电子邮件地址(来自Domino目录names.nsf),表单中的员工姓名必须与目录中的名称匹配并带上邮件地址。
请帮助我,因为我是莲花笔记的新手:(
我尝试了这个公式...用于电子邮件地址字段...
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 ... itz填充电子邮件字段中的所有电子邮件地址 我的要求是带来与domino目录中注册的员工姓名匹配的名称的电子邮件地址,如果电子邮件地址不存在,则显示错误。
答案 0 :(得分:1)
首先,“People”视图不适合@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中的Person文档经常更新,否则可以将“NoCache”从@DbLookup中删除。它会更快。
答案 1 :(得分:0)
马克已经回答了你的问题
在格式化问题以使公式更具可读性之后,我注意到仍然可能导致问题:假设这是计算字段Email
的值的公式,公式应该返回@DbLookup的结果,如果成功的。你使用的那个似乎不是。此外,最后一行似乎输入错误
因此,将Mark的方法与您的公式相结合,并在解决您的评论时重新安排代码:
1.如果字段EmpName
为空,则无需更进一步,只需返回Email
的当前内容:
@If(EmpName = ""; @Return(Email); "");
2.对于server_name,您可以使用公式的第一行,或者只是:
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)