在IBM Lotus Domino中,我构建了一个Java代理。在这个代理中,我得到一个有订单行的View:
View orderLinesView = CurrentDatabase.getView("OrderLinesOnId");
该视图有一个已排序的列: ID_Order ,该列也已分类。
我执行了以下操作以使用相同的ID_Order获取视图中的所有文档:
Vector keyRegel = null;
keyRegel = new Vector();
keyRegel.add(orderDocument.getItemValueString("ID_Order"));
DocumentCollection orderLineCollection = orderLinesView.getAllDocumentsByKey(keyRegel, true);
现在我想遍历所有文档并打印描述:
System.out.println("Count orderRegelcollection:" +
Document orderLineDocument = orderLineCollection.getFirstDocument();
while (orderLineDocument != null) {
System.out.println("description " + orderLineDocument.getItemValueString("description"));
orderLineDocument = orderLineCollection.getNextDocument();
}
在运行时,它会打印1个文档,并在第一个循环完成后完成。但是,在我看来,我清楚地看到5个具有相同ID_Order的文档。 奇怪的是它只占用视图中的最后一个文档(当我在ID_Order上搜索时)
完整的代码是这样的:
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) {
然后我得到了订单..
答案 0 :(得分:1)
你的while循环永远不会得到下一个文档。
在你循环中将最后一行改为
orderLineDocument = orderLinesView.getNextDocument();
此外,或者,因为您已经构建了一个集合。您可以使用它来获取下一个文档
orderLineDocument = orderLineCollection.getNextDocument();
从文档中,示例类看起来像这样。这个例子虽然是在数据库中获取所有文档并创建DocumentCollection。您的代码与以下示例之间的区别在于您是从视图创建集合。尽管如此,这种方法也适合你。
此代理获取数据库中的所有文档。
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(); } } }