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()', не обращаясь к полю Date. –

+0

Теперь это исправлено, спасибо. –

ответ

2

Вы просматриваете заметку NotesDocumentCollection, но используете представление getNextDocument в представлении, а не в коллекции документов. Поэтому измените свою линию с помощью getNextDocument следующим образом:

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

Это решение ошибки - спасибо, но все равно не получает доступ к полю Date в цикле, который затем должен заменить его на сегодняшнюю дату, если null. –

+0

Возможно, проверьте значение null, а также 'isEmpty()'. Если поле не существует, 'getItemValue()' будет null, а не пустым вектором. 'hasItem()' также будет проверять, существует ли поле. 'getItem(). getText()' преобразует его в текстовое значение, которое затем может быть проверено. Это зависит от того, какое значение вы получаете или есть ли еще одна ошибка, связанная с получением поля Date ('getNextDocumentI()' не имеет отношения к датам). –

+0

'getItemValue()' возвращает пустой 'java.util.Vector', если элемент не существует в документе. Он не возвращает значение null. Итак, тест должен работать. –

Смежные вопросы