我需要有一个脚本,可以复制在names.nsf的个人文档中的InternetAddress字段的值,并将其追加到User Name字段中。有没有人能帮我写一个工作脚本?
发布于 2021-05-07 07:39:28
这可以通过一个简单的赋值语句和列表追加运算符,通过一行公式来完成。这确实是Lotus Notes编程中可以做的最基本的事情。它甚至不需要使用任何@函数。
赋值的语法是:
FIELD fieldThatYouWantToSet := value;list append运算符的语法为:
value1 : value2;您需要知道的唯一另一件事是value1和value2可以只是现有项的名称(也称为字段),并且第二项中的值列表将被附加到第一项中的值列表。
然后,您需要做的就是将这一行代码放入一个公式代理中,该公式代理针对当前视图中的所有文档运行,并在视图中从Actions菜单运行代理。
发布于 2021-05-12 04:52:51
Option-1: 有几种方法可以做到这一点,最简单的方法是,正如用户之前指定的那样,一个简单的字段函数就可以完成此任务。
FIELD UserName := UserNAme:InternetAddress;您可以在$UsersView中的代理中设置和运行上述字段函数
在选项-2中,您还可以使用"UnProcessedDoc“特性,并作为代理进行设置和运行。但是,在这里,我已经编写了另一种在$UsersView中设置和作为代理运行的方法。
希望这有帮助,如果这对任何人有帮助,请批准这个答案。
Option:2目前,我的系统中没有Domino,以便测试此代码片段。我希望在我发布之前,有任何在线的方法来测试这段代码。
但是,从逻辑上讲,将此代码片段视为实现您的目标的伪代码。最重要的是,自从我在Domino中编程以来,已经有十多年或二十多年了。因为,我转向了RDMS、DW、BI,现在又转向了云...云-9。:)
下面是一部分lotus脚本代码,用于在names.nsf中逐个复制person文档中InternetAddress字段的值,并将其附加到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发布。鼓励通过批准答案来发布更多的解决方案。
https://stackoverflow.com/questions/67413756
复制相似问题