0

Der Grund für den obigen Fehler liegt darin, dass das Feld 'FinishDate' leer ist, was verständlich ist. Was ich in der Schleife versucht habe, ist ein leeres 'FinishDate'-Feld durch das heutige Datum zu ersetzen.Xpages - getNextDocument() greift nicht auf ein Datumsfeld zu

'FinishDate' wird fortlaufend sein, bis die Aktivität ordnungsgemäß beendet ist, und dann wird endDate generiert und das 'FinishDate'-Feld wird in das Dokument eingefügt.

Ich habe versucht, das unter dem arbeitet, während nur die Notesdocument-Schleife durch, aber nicht mit 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()) 
       } 

Die ‚else‘ Anweisung jedes Mal übersprungen wird es läuft.

Unten ist der vollständige Code und der Fehlerblock.

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

}

Ihre Hilfe geschätzt wird.

+1

Bitte klären Sie die Frage. Die Fehlermeldung im Titel der Frage bezieht sich auf 'getNextDocument()' und greift nicht auf ein Datumsfeld zu. –

+0

Es ist jetzt geändert, danke. –

Antwort

2

Sie durchlaufen eine NotesDocumentCollection, verwenden aber getNextDocument für die Ansicht und nicht für die Dokumentensammlung. Ändern Sie also Ihre Zeile mit getNextDocument zu diesem:

+0

Das beheben den Fehler - danke, aber immer noch nicht auf das Datum Feld in der Schleife zugreifen, die es dann mit dem heutigen Datum ersetzen sollte, wenn Null. –

+0

Vielleicht überprüfen Sie für Null sowie 'isEmpty()'. Wenn das Feld nicht existiert, ist 'getItemValue()' null und kein leerer Vektor. 'hasItem()' würde auch prüfen, ob das Feld existiert. 'getItem(). getText()' konvertiert es in einen Textwert, der dann getestet werden kann. Es hängt davon ab, welchen Wert Sie erhalten oder ob es einen weiteren Fehler gibt, der sich auf das Abrufen eines Datumsfeldes bezieht ('getNextDocumentI()' behandelt keine Daten). –

+0

'getItemValue()' gibt ein leeres 'java.util.Vector' zurück, wenn das Element im Dokument nicht existiert. Es gibt nicht null zurück. Also sollte der Test funktionieren. –

Verwandte Themen