1

我有一个员工信息表单,其中包含员工编号、员工姓名和员工电子邮件地址。注册新员工信息时,我无法获取电子邮件地址(来自 Domino 目录 names.nsf),表格中的员工姓名必须与目录中的姓名匹配并带上邮件地址。
请帮助我,因为我是 Lotus 笔记的新手 :( 我尝试了这个公式......对于电子邮件地址字段......

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)

但这不起作用,我只收到错误消息,但没有收到电子邮件地址。请帮助我:(然后我尝试使用 DbColumn... itz 填充电子邮件字段中的所有电子邮件地址。
如果电子邮件地址不存在,我的要求是带上与从 domino 目录注册的员工姓名匹配的姓名的电子邮件地址,显示错误。

4

2 回答 2

2

哇,您是 Lotus Notes 的新手。这个公式太乱了!:-)

首先,“人物”视图不适用于@DBLookup。第一列未排序。与设计师一起检查。

我通常使用隐藏视图($Users)。第一列有许多人名的变体,并已排序。电子邮件地址在第 8 列中可用,因此类似这样的方法可能有效:

结果 := @DbLookup(""; server_name:"names.nsf"; "($Users)"; name_to_match; 8; [FailSilent]);

如果有错误或不匹配,则 [FailSilent] 结果将为“”。如果它不起作用并且您确实认为它应该起作用,请取出 [FailSilent] 并使用 @Prompt([OK]; "Result"; @Text(result)) 查看错误是什么。

除非您希望 names.nsf 中的 Person 文档经常更新,否则您可以将“NoCache”从您的 @DbLookup 中删除。它会更快。

于 2011-02-24T20:48:23.637 回答
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)

于 2011-03-07T23:32:39.023 回答