0

위의 오류의 원인은 'FinishDate'필드가 비어있어 이해할 수 있기 때문입니다. 내가 루프에서 수행하려고했던 것은 비어있는 'FinishDate'필드를 오늘 날짜로 대체하는 것입니다.Xpages - getNextDocument()가 날짜 필드에 액세스하지 않음

'FinishDate'는 활동이 제대로 종료되고 endDate가 생성되고 'FinishDate'필드가 문서에 채워질 때까지 계속됩니다.

   try { 
        var endDate:NotesDateTime = null; 
        if(!docEv.getItemValue("FinishDate").isEmpty()){ 
         endDate = docEv.getItemValue("FinishDate").elementAt(0); 
        }else{ 
         endDate = session.createDateTime(@Now()); 
        } 
       }catch(e){ 
        print("endDate: " + e.toString()) 
       } 

'다른'문이 실행될 때마다 건너 :

은 그냥 NotesDocument 통해 반복하면서 작동하지만 NotesDocumentCollection하지 않는 그 이하했습니다.

아래는 전체 코드와 오류 블록입니다. 당신의 도움이 이해할 수있을 것이다

function getCalObj(){ 
var viewEv:NotesView = database.getView("Diary"); 
var doc:NotesDocument = diaryDoc.getDocument(); 
var sUNID = doc.getUniversalID(); 
var dcEv:NotesDocumentCollection = viewEv.getAllDocumentsByKey(sUNID); 
if(dcEv.getCount() != 0){ 
    var docEv:NotesDocument = dcEv.getFirstDocument();   
    var calendarData = '';  
    try { 
     while (docEv != null) { 
      var pattern = new java.text.SimpleDateFormat("yyyy-MM-dd"); 
       try { 
        var calDate:NotesDateTime = docEv.getItemValue("QueryStartDate").elementAt(0); 
       }catch(e){ 
        print("calDate: " + e.toString()); 
       } 
       try { 
        var endDate:NotesDateTime = null; //check if date is empty 
        if(!docEv.getItemValue("FinishDate").isEmpty()){ 
         endDate = docEv.getItemValue("FinishDate").elementAt(0); 
        }else{ 
         endDate = session.createDateTime(@Now()); // if endDate is null replace with todays date 
        } 
       }catch(e){ 
        print("endDate: " + e.toString()) 
       }     
       try{ 
        ......... 
       }catch(e){ 
        print("Cal data error" + e.toString()); 
       }       
      var tmpdocEv = viewEv.getNextDocument(docEv); 
      docEv.recycle(); 
      docEv = tmpdocEv; 
     } 
    } catch(e) { 
     print("DocEv Loop Error: " + e.toString()); //error, read below 
     //DocEv Loop Error: Exception occured calling method NotesView.getNextDocument(lotus.domino.local.Document) 
    }; 
}; 

}.

+1

질문을 명확하게하십시오. 질문 제목의 오류 메시지는'getNextDocument()'와 관련이 있으며 Date 필드에 액세스하지 않습니다. –

+0

이제 수정되었습니다. 감사합니다. –

답변

2

NotesDocumentCollection을 반복하면서 문서 콜렉션이 아닌 뷰에서 getNextDocument를 사용합니다. getNextDocument를 사용하여 다음과 같이 라인을 변경하십시오.

var tmpdocEv = dcEv.getNextDocument(docEv); 
+0

그게 오류를 해결 - 덕분에,하지만 여전히 날짜 필드로 바꿀 루프의 날짜 필드에 액세스하지 않는 경우 null입니다. –

+0

'isEmpty()'뿐만 아니라 널 (null)도 검사 할 수 있습니다. 필드가 존재하지 않는 경우,'getItemValue()'는 하늘의 Vector는 아니고 null가됩니다. 'hasItem()'은 필드가 존재하는지 점검합니다. 'getItem(). getText()'는 테스트 할 수있는 텍스트 값으로 변환합니다. 그것은 당신이 얻고있는 가치 또는 날짜 필드를 가져 오는 것과 관련된 또 다른 오류 ('getNextDocumentI()'는 날짜를 다루지 않음)에 의존한다. –

+0

getItemValue()는 항목이 문서에 존재하지 않으면 빈'java.util.Vector'을 반환합니다. null를 돌려주지 않습니다. 따라서 테스트가 작동해야합니다. –