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

アイデア 1: NotesViewNavigator クラスを使用して、getFirst() メソッドと getNextCategory() メソッドを呼び出すことができます。これは、すべてのエントリをたどるよりも高速です。

アイデア 2: NotesSession.Evaluate() を、ビューの最初の列の @DbColumn で @Unique を実行する式で使用できます。これで配列が返され、配列の ubound を取得できます。数式は非常に高速になる傾向がありますが、evaluate() は最初にそれらをコンパイルする必要があるため、これが高速になるかどうかはわかりません。このアプローチの欠点は、非常に大きなビューの場合、数式言語のサイズ制限を超える可能性があることです。しかし、それがより高速であることが判明した場合は、例外をキャッチして、より遅い反復方法にフォールバックすることができます。

于 2012-09-18T22:48:52.253 に答える
0

リチャードの反応は完璧です!Java バージョンの場合もほぼ同じです。getNextCategory については、Domino ヘルプを参照してください。以下の例を参照してください

于 2012-09-19T08:36:20.887 に答える