【问题标题】:How to get the Email Address from names.nsf domino directory - Lotus Notes如何从 names.nsf domino 目录中获取电子邮件地址 - Lotus Notes
【发布时间】:2011-03-08 07:32:39
【问题描述】:

我有一个员工信息表单,其中包含员工编号、员工姓名和员工电子邮件地址字段。注册新员工信息时,我无法获取电子邮件地址(来自 Domino 目录 names.nsf),表格中的员工姓名必须与目录中的姓名匹配并带上邮件地址。
请帮助我,因为我是 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)

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

【问题讨论】:

  • 嗯,我也试过这个... bt wat 我应该为 server_name 设置什么? :(...和ma目录中的隐藏视图$Users,邮件地址栏为空...此外...表单中的ma EMPNAME格式为(用户名/域)...这个shud有一个匹配用户视图仪式中的字段?...
  • 您的实际问题因任何公式只有最后一行返回值而变得更加复杂。您的倒数第二行执行@DBlookup,但它不返回值或将结果分配给稍后可以返回的字段。最后一行实际上没有任何用处,因为它是将布尔值与字符串进行比较。 Mark 的解决方案是正确的——但您仍然需要调整公式的结构。

标签: lotus-formula


【解决方案1】:

哇,您是 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 中删除。它会更快。

【讨论】:

    【解决方案2】:

    马克已经回答了你的问题。
    在格式化问题以使公式更具可读性之后,我注意到仍然可能导致问题:假设这是计算字段 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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多