Xpages - getNextDocument() 未访问日期字段

Xpages - getNextDocument() not accessing a Date field

出现上述错误的原因是因为'FinishDate'字段为空,这是可以理解的。 我一直试图在循环中做的是用今天的日期替换任何空的 'FinishDate' 字段。

'FinishDate' 将一直持续到 activity 正确结束,届时将生成 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())
                }   

每次运行时都会跳过 'else' 语句。

下面是完整代码和错误块。

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

}

我们将不胜感激。

您正在循环访问 NotesDocumentCollection,但您在视图上使用了 getNextDocument,而不是在文档集合上。因此,将 getNextDocument 的行更改为:

var tmpdocEv = dcEv.getNextDocument(docEv);