2016-11-11 3 views
1

In IBM Lotus Domino habe ich einen Java-Agenten gebaut. In diesem Agent bin ich eine Ansicht bekommen, die Bestellposten hat:DocumentCollection zählt 5, aber bekomme nur 1 Dokument

View orderLinesView = CurrentDatabase.getView("OrderLinesOnId"); 

Die Ansicht hat eine sortierte Spalte: ID_Order die auch kategorisiert.

Ich habe die folgenden alle Dokumente in der Ansicht mit dem gleichen ID_Order zu erhalten:

Vector keyRegel = null; 
keyRegel = new Vector(); 
keyRegel.add(orderDocument.getItemValueString("ID_Order")); 
DocumentCollection orderLineCollection = orderLinesView.getAllDocumentsByKey(keyRegel, true); 

Jetzt möchte ich eine Schleife durch alle Dokumente und die Beschreibung drucken:

System.out.println("Count orderRegelcollection:" + 
Document orderLineDocument = orderLineCollection.getFirstDocument(); 

while (orderLineDocument != null) { 
    System.out.println("description " + orderLineDocument.getItemValueString("description")); 
    orderLineDocument = orderLineCollection.getNextDocument(); 
} 

Auf Lauf , es druckt 1 Dokument und nach der ersten Schleife endet es. Aus meiner Sicht sehe ich jedoch deutlich 5 Dokumente mit der gleichen ID_Order. Das Merkwürdige ist, dass es nur das letzte Dokument in der Ansicht, (wenn ich auf ID_Order gesucht)

enter image description here

Der vollständige Code ist wie folgt:

View relationsView = dbRelatie.getView("Relations");; 
      Document relationDocument = relationsView.getFirstDocument(); 
while (relationDocument != null) { 

     Vector key = null; 
     key = new Vector(); 
     key.add(""); 
     key.add(relationDocument.getItemValueString("getDebtor")); 
     DocumentCollection orderDocumentCollection = TotalOrdersView.getAllDocumentsByKey(key, true); 
     Document orderDocument = orderDocumentCollection.getFirstDocument(); 

     while (orderDocument != null) { 

und ich bekomme dann die Bestellzeilen ..

Antwort

1

Ihre while-Schleife erhält nie das nächste Dokument.

In Sie while-Schleife die letzte Zeile ändern, um

orderLineDocument = orderLinesView.getNextDocument(); 

auch alternativ, da Sie bereits eine Sammlung aufgebaut haben. Sie können das verwenden, um das nächste Dokument als

zu erhalten. Aus der Dokumentation sieht eine Beispielklasse wie folgt aus. In diesem Beispiel werden alle Dokumente in der Datenbank abgerufen und DocumentCollection erstellt. Der Unterschied zwischen Ihrem Code und dem folgenden Beispiel besteht darin, dass Sie die Sammlung in der Ansicht erstellen. Trotzdem sollte diese Methode auch für Sie funktionieren.

Dieser Agent ruft alle Dokumente in einer Datenbank ab.

import lotus.domino.*; 
public class JavaAgent extends AgentBase { 
    public void NotesMain() { 
    try { 
     Session session = getSession(); 
     AgentContext agentContext = session.getAgentContext(); 
     // (Your code goes here) 
     Database db = agentContext.getCurrentDatabase(); 
     DocumentCollection dc = db.getAllDocuments(); 
     Document tmpdoc; 
     Document doc = dc.getFirstDocument(); 
     while (doc != null) { 
     System.out.println(doc.getItemValueString("Subject")); 
     tmpdoc = dc.getNextDocument(); 
     doc.recycle(); 
     doc = tmpdoc; 
     } 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 
    } 
} 

Documentation for DocumentCollection

+0

Er yea sorry ich orderLineCollection.getNextdocument (hatte); Ich habe es falsch in die Frage eingetippt. Und der Grund, warum ich getAllDocumentsByKey benutze, ist, weil ich keine Schleife durch 100.000+ Dokumente wünschen – YdB

+0

Kein Problem. :) Deshalb habe ich gesagt, dass Sie die Dokumentensammlung in irgendeiner Weise machen können, entweder indem Sie 'getAllDocuments()' oder 'getDocumentByKeys()' machen, das Sammelobjekt ist dasselbe, Sie müssen nur das nächste Dokument daraus in der Schleife, in der Art, wie ich oben erwähnt habe. –

+0

:) Danke für die Antwort, ich habe orderLineCollection.getNextDocument(); Aber ich bekomme nur das letzte Dokument. also sehe ich 5, wenn ich in der Ansicht nachschaue Aber ich bekomme nur die letzte – YdB

Verwandte Themen