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()'は空のVectorではなくnullになります。 'hasItem()'は、フィールドが存在するかどうかもチェックします。 'getItem()。getText()'はそれをテキスト値に変換し、それをテストすることができます。それは、あなたが得ている値、または日付フィールドを取得することに関連する別のエラー( 'getNextDocumentI()'は日付を扱わない)があるかどうかによって異なります。 –

+0

getItemValue()は、項目がドキュメントに存在しない場合は空の 'java.util.Vector'を返します。 nullを返しません。したがって、テストはうまくいくはずです。 –

関連する問題