0

从注释视图中获取所有顶级条目值的最简单方法是什么?我发现属性“TopLevelEntryCount”返回所有类别的数量,但我也想要这些值。

迭代视图条目和列值需要太多时间。

Set ecl = view.Allentries
Set ve = ecl.Getfirstentry()
While Not(ve Is Nothing)
    If IsArray(ve.Columnvalues(0)) Then
        If flag = "" Then
            arr = ve.Columnvalues(0)
        Else
            arr = ArrayUnique(ArrayAppend(arr, ve.Columnvalues(0)))
        End If
    Else
        'error if arr is not already an array
        arr = ArrayUnique(ArrayAppend(arr, ve.Columnvalues(0)))
    End If

    flag = "1"
    Set ve = ecl.Getnextentry(ve)
Wend

有人知道更快的方法吗?它一定不能用 LotusScript 编写,实际上我更喜欢 Java、JS 或 SSJS。

4

2 回答 2

2

思路一: 可以使用 NotesViewNavigator 类,调用 getFirst() 和 getNextCategory() 方法。这应该比遍历所有条目更快。

想法 2: 您可以将 NotesSession.Evaluate() 与在 @DbColumn 上为视图的第一列执行 @Unique 的公式一起使用。那应该带你回来一个数组,你可以得到数组的 ubound 。公式往往很快,但 evaluate() 必须先编译它们,所以我不知道这是否会更快。这种方法的缺点是对于非常大的视图,这可能会超出公式语言的大小限制。但如果它确实被证明更快,您可以捕获异常并回退到较慢的迭代方法。

于 2012-09-18T22:48:52.253 回答
0

理查德的回应是完美的!对于 java 版本,它几乎是相同的:请参阅 getNextCategory 的 Domino 帮助 下面给出的示例 ViewNavigator 确实满足了您的需求:link here
评估方法在 java Session 中也可用

于 2012-09-19T08:36:20.887 回答