db = new Array("myserver", "myfolder\\mydb.nsf")
dir = getComponent("Dir").value;
div = getComponent("Div").value;
lu = @DbLookup(db, "ManagerAccess", dir + "PP" + div, "DTManagers");
var a = [];
a.push(lu);
var item:NotesItem = docBackEnd.replaceItemValue('FormReaders', @Unique(a));
item.setReaders(true);
该代码位于querySaveDocument ssjs上。我从@DbLookup获得的结果(当我放入计算字段时)看起来像这样: Pedro Martinez,Manny Ramirez,David Ortiz,Terry Francona
我尝试在它上面做一个@Explode(@Implode)的东西,但它似乎不起作用。 我在浏览器中遇到的错误只是告诉我replaceItemValue行被破坏了。 为了测试它,我一次按下一个字符串,并且它正确地用多个条目填充我的FormReaders字段。
我做错了什么?
答案 0 :(得分:1)
我在这里看到几个问题:
一个。在你所描述的情况下,@ DDlookup实际上会返回一个数组。如果将数组推入普通的computedField控件,它将与您编写的内容完全相同:
value1, value2, ..., valueN
computedField对多个值等没有任何了解,它只能显示字符串或可以转换为字符串的数据。
如果您想测试返回值,可以尝试返回lu[0]
之类的内容;然后,如果lu不是数组,则应该接收数组的第1个元素或运行时错误。或者你可以使用lu.length
来询问数组的大小。返回数组元素的数量,如果它只是一个普通的字符串,则返回字符数。
B中。您的代码包含以下两行:
var a = [];
a.push(lu);
通过它创建一个空数组,然后将lu[]
推送到a[]
的第一个元素。结果是这样的:
a[0] = [value1, value2, ..., valueN]
,
即。 a是第一个元素包含另一个数组的数组。由于您不需要,只需在replaceItemValue方法中使用@Unique(lu)
。
℃。我不明白为什么replaceItemValue会在这里引发错误,除了我在主题B中写的内容。试一试将lu直接写入项目(首先没有@Unique
)。这应该有用。
d。为了完整性:在第一行中使用了“new Array”。定义db参数的更好方法是
var db = ["myserver", "myfolder/mydb.nsf"];
(请参阅Tim Tripcony在您最近提出的问题中的评论,或在http://www.timtripcony.com/blog.nsf/d6plinks/TTRY-9AN5ZK查看他的博客文章)