2012-12-30 86 views
0

我有這樣的代碼在幾個重複的控制和計算值的XPages @DbLookup問題

@Unique(@DbLookup(database,view,key,columnnumber)) 

我可以看到,如果「得到columnnumber」是一個分類的列然後DbLookup只返回第一個類別。

今天我的解決方案是創建與此列未歸類另一種觀點認爲,但這是我的客戶不好解決,對我來說更多的工作。

有人知道,如果這是一個錯誤?還是有另一種解決方案?

我的Lotus Domino 8.5.3 UP1和同一位設計師

非常感謝,

回答

1

嘗試使用@DbColumn代替或ViewNavigator的。

+0

謝謝,但如果我使用@DbColumn我不能鍵過濾結果。我可以寫一個bucle一個複雜的代碼,但我認爲表現會差 –

+0

如果您需要在第二個分類篩選,我建議有一個範圍的緩存視圖導航的方式。 –

2

你可以得到視圖中的條目是這樣的:

var vc:NotesViewEntryCollection = database.getView("view").getAllEntriesByKey(key, true); 

然後你就可以循環使用的收集:

ve.getColumnValues(); 

var ve:NotesViewEntry = vc.getFirstEntry(); 
ve = vc.getNextEntry(); 

在循環中,以得到列值

我的理解是,這會比@DbLookup表現得更好這 - 我相信 - 也有類似的代碼基礎IT。循環的最快方式視圖是使用的ViewNavigator爲弗雷德裏克建議:

http://www-10.lotus.com/ldd/ddwiki.nsf/dx/Fast_Retrieval_of_View_Data_Using_the_ViewNavigator_Cache

+0

非常感謝Panu和Fredrik,最後我將使用類似於此的代碼,但我認爲在這種情況下存在DbLookup的錯誤。 '變種VC:NotesViewEntryCollection = database.getView( 「視圖」)getAllEntriesByKey(鍵,TRUE); var list = new java.util.Vector(); var entry:NotesViewEntry = vc.getFirst(); if(entry.isCategory()){ list.addElement(entry.getColumnValues()。firstElement()。toString());如果(入口!=空){ \t if \t} \t VAR tmpentry:NotesViewEntry = nav.getNext(條目); \t entry.recycle(); \t entry = tmpentry; } return list;' –