使用公式语言返回列值

时间:2017-11-17 23:40:27

标签: xpages lotus-notes xpages-ssjs lotus lotus-formula

我正在尝试返回存储在tNames变量中的所有值。

字段中存在值。已经选择了show multivalues作为单独的条目,但是没有返回任何名称。

以下是示例代码:

tNames := "";
@For(n := 0; n <= QuestionCount - 1; n := n + 1;
tNames := tNames + ", " + @Implode(@GetField("ChecklistContact_" + 
  @Text(n));",")
);
@Trim(tNames)

我不知道为什么它没有返回任何东西,非常感谢你的帮助。

以下仅返回索引为0的联系人,但我想返回每个文档中的所有联系人。

tCount := 0;
@For(n := 0; n <= QuestionCount - 1; n := n + 1;
 tCount := tCount + @If(@GetField("ChecklistContact_" + @Text(n)) = ""; 0; 1)
);
@GetField("ChecklistContact_" + @Text(tCount))

根据理查德的评论,下面返回所需的值,但不希望硬编码字段名称。

有没有办法使用for循环来返回字段名称和值?

tNames := "";
tNames:= @GetField("ChecklistContact_1") : @GetField("ChecklistContact_2") : ... @GetField("ChecklistContact_7");
@Trim(tNames)

3 个答案:

答案 0 :(得分:2)

我不相信IBM's documentatio n明确地说明了这一点,但我认为@GetField不适用于列值公式。该文档说它在“当前文档”中工作,并且当公式在视图中执行时没有当前文档。

假设您知道N的最大数量是多少,那么执行此操作的方法是使用一个简单的列表:

ChecklistContact_1 : ChecklistContact_2 : ChecklistContact_3 : ... : ChecklistContact_N

如果N很大,这将是很多打字,但你只需要做一次,复制,粘贴和编辑数字将使它快速进行。

答案 1 :(得分:2)

听起来可能不够优雅但是,如果可以,请在表单中使用列公式创建一个新的计算字段,然后在列中使用该新字段。此外,从表现的角度来看,你会更好。

答案 2 :(得分:1)

也许使用你的循环来创建Richard建议的字段名列表,然后显示tNames