2012-09-18 3 views
0

메모보기에서 최상위 항목 값을 모두 가져 오는 가장 쉬운 방법은 무엇입니까? 내가 찾은 속성 "TopLevelEntryCount"alle 범주의 수를 반환하지만, 나는 또한 값을 원한다.NotesView에서 최상위 항목 값 모두 가져 오기

뷰 항목 및 열 값을 반복하려면 너무 많은 시간이 필요합니다.

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를 선호합니다.

답변

2

아이디어 1 : 당신은 NotesViewNavigator 클래스를 사용하고, getFirst와()와 getNextCategory() 메소드를 호출 할 수 있습니다. 이것은 모든 항목을 걷는 것보다 빠릅니다.

아이디어 2 : NotesSession.Evaluate()는 @DbColumn의 첫 번째 열에 대해 @Unique를 수행하는 수식과 함께 사용할 수 있습니다. 배열을 가져와야하고 배열의 ubound를 얻을 수 있습니다. 수식은 매우 빠르지 만 evaluate()은 먼저 컴파일해야하므로 더 빠르지 않을지는 모른다. 이 접근법의 단점은 매우 큰 뷰의 경우 수식 언어의 크기 제한을 초과 할 수 있다는 것입니다. 그러나 속도가 빨라지면 예외를 잡아서 느린 반복 방법으로 전환 할 수 있습니다.

+0

모두 아이디어 주셔서 감사합니다! 훨씬 빨리 작동하고 많은 도움이됩니다. – revle87

0

리차드의 반응은 완벽합니다. 자바 버전에 대한 거의 동일합니다 : 는 getNextCategory의 도미노 도움말을 참조하십시오 ViewNavigator 아래 주어진 예제는 정말 당신의 필요에 답 link here
는이 방법은 또한 자바 세션에서 사용할 수 평가