【问题标题】:Lotus Notes ScriptLotus Notes 脚本
【发布时间】:2021-05-06 07:39:08
【问题描述】:

我需要一个脚本,它可以从names.nsf 中的个人文档中的InternetAddress 字段中一个一个复制值并将其附加到User Name 字段中。有人可以帮忙写一个工作脚本吗?

【问题讨论】:

  • 欢迎来到 Stack Overflow。您需要在问题代码中包含您已经尝试开始工作的问题代码,以便其他人帮助您 (stackoverflow.com/help/how-to-ask)
  • 您需要脚本吗?欢迎你来写它......这个网站不是关于“给我一个解决我的问题”,而是关于“帮助我找到一个我自己写它时遇到的问题的解决方案”......告诉我们你做了什么已经:你读过手册吗?你了解代理吗?您是否知道,Notes/Domino 中有两种语言:LotusScript 和@Formula?您可能会发现,后者可以通过一行代码解决您的问题...但您需要研究...

标签: lotus-domino lotusscript


【解决方案1】:

这可以通过单行公式,使用简单的赋值语句和列表追加运算符来完成。这确实是您在所有 Lotus Notes 编程中可以做的最基本的事情。它甚至不需要使用任何@functions。

赋值的语法是:

FIELD fieldThatYouWantToSet := value;

列表追加操作符的语法是:

value1 : value2;

您需要知道的唯一另一件事是 value1 和 value2 可以简单地是现有项目(也称为字段)的名称,并且第二项中的值列表将附加到第一项中的值列表中.

然后,您需要做的就是将此单行代码放入针对当前视图中的所有文档运行的公式代理中,并在视图中时从“操作”菜单运行该代理。

【讨论】:

    【解决方案2】:
    Option-1: 
    

    有几种方法可以做到这一点,最简单的是,正如用户之前指定的,一个简单的字段函数就可以了。

    
    FIELD UserName := UserNAme:InternetAddress;
    
    

    您可以在 $UsersView 的代理中设置和运行上述字段函数

    在选项 2 中,您还可以使用“UnProcessedDoc”功能并设置并作为代理运行。 但是,在这里,我编写了另一种在 $UsersView 中设置和作为代理运行的方法。

    希望这有帮助,如果这对任何人有帮助,请批准此答案。

    Option:2
    

    目前我的系统中没有Domino,为了测试这个sn-p。我希望在我发布之前有任何在线方法来测试这个 sn-p。

    但是,从逻辑上讲,将此 sn-p 视为实现您的目标的伪代码。 最重要的是,自从我在 Domino 中编程以来已经有十多年了。因为,我转向了 RDMS、DW、BI,现在转向了 Cloud……以及 Cloud-9。 :)

    这里是一部分 lotus 脚本代码,用于将个人文档中 InternetAddress 字段中的值一一复制到 names.nsf 中,并将其附加到 UserName 字段中。

    Dim db As New NotesDatabase( "Names Db", "names.nsf" )   
    Dim view As NotesView
    Dim doc As NotesDocument
    Dim InternetAddress_value As Variant
    
    Set view = db.GetView( "$Users" )
    
    // loop thru all docs in $Users view.
    // Get InternetAddress_value and rep it in UserName
    Set doc = view.GetFirstDocument
    If doc.HasItem("InternetAddress") Then
      While Not(doc Is Nothing)
          // in this line we concatenate username with IAaddress_value
          new_value= doc.GetItemValue( "username" ) + doc.GetItemValue( "InternetAddress" ) 
          Call doc.ReplaceItemValue( "UserName", new_value)
          Call doc.Save( False, True )
          Set doc = view.GetNextDocument(doc)
      Wend
    End If
    
    
    

    此解决方案由 Mangai@Notes@Domino@Now_HCL 发布。通过批准答案鼓励发布更多解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      • 2012-11-07
      相关资源
      最近更新 更多