使用公式语言 return 列值

Using Formula Language to return column values

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

字段中存在值。已选择将多值显示为单独的条目,但 none 个名称已被 return 编辑。

下面是示例代码:

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

我不知道为什么它没有 return 任何东西,将感谢您的帮助。

下面return只有索引为0的联系人,但我想return每个文档中的所有联系人。

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

根据 Richard 的评论,下面 return 需要的值,但不希望对字段名称进行硬编码。

有没有什么方法可以使用 for 循环来 return 字段名称和值?

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

我不相信 IBM's documentation 明确地说了这一点,但我认为 @GetField 在列值公式中不起作用。文档说它在 "current document" 中有效,并且在视图中执行公式时没有当前文档。

假设您知道 N 的最大数量是多少,那么使用一个简单的列表即可:

ChecklistContact_1 : ChecklistContact_2 : ChecklistContact_3 : ... : ChecklistContact_N

如果 N 很大,这将需要大量输入,但您只需输入一次,然后复制、粘贴和编辑数字会非常快。

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

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