0

上述錯誤的原因是因爲'FinishDate'字段爲空,這是可以理解的。 我一直試圖在循環中取代任何空的'FinishDate'字段與今天的日期。Xpages - getNextDocument()不訪問日期字段

'FinishDate'將持續,直到活動正確結束並且即將生成endDate並且'FinishDate'字段將填充到文檔中。

我試過低於同時通過只是NotesDocument的循環工作,但不與NotesDocumentCollection:每次運行時

   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()) 
       } 

的「其他」語句被跳過。

下面是完整的代碼和錯誤塊。

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()',不訪問日期字段。 –

+0

現在修改了,謝謝。 –

回答

2

您正在循環使用NotesDocumentCollection,但在視圖上使用getNextDocument,而不是在文檔集合上使用getNextDocument。所以改變你的線getNextDocument到這:

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

解決了錯誤 - 謝謝,但仍然不訪問循環中的日期字段,如果爲空,應該用當天的日期替換它。 –

+0

也許檢查null以及'isEmpty()'。如果該字段不存在,'getItemValue()'將爲空,而不是空的Vector。 'hasItem()'也會檢查字段是否存在。 'getItem()。getText()'會將其轉換爲文本值,然後可以對其進行測試。它取決於你得到的值或者是否有與獲取日期字段有關的另一個錯誤('getNextDocumentI()'不處理日期)。 –

+0

如果item不存在於文檔中,'getItemValue()'返回一個空的'java.util.Vector'。它不返回null。所以,測試應該工作。 –