2016-11-18 69 views
0

我有窗口-with DW對象 - 當我打開這個窗口,我檢索的所有記錄數據窗口(dw_1.retrieve()檢索頂部100,然後在所有記錄搜索

當用戶想要搜索特定的記錄,我把標準他有效表達式(ls_filter

那麼當服務器在本地網絡上

dw_1.setfilter(ls_filter) 
dw_1.filter() 

我的應用程序工作正常進入。

現在需要將服務器放在網絡上,因此在打開的事件中,我無法檢索所有行,因爲檢索所有行需要大約五分鐘(非常長的時間)。

所以在dw_1 SQL synatx我加入top 100(後選擇),使DW檢索只持續100行

我的問題是:如果用戶希望搜索特定的記錄,是這意味着我必須檢索所有行來搜索,並因此需要很長時間再次加載所有行?

這是正確的嗎?還是有另一種解決方案?怎麼樣?

回答

0

正確的做法是在dw中應用where而不使用過濾器。減少記錄時間。

1

請勿使用過濾器。相反,您需要使用where子句在sql查詢中添加檢索參數。現在,只要你需要搜索特定的記錄,只需使用

從菜單design添加檢索參數 - >retrieval arguments

比方說,你加入檢索參數過濾varchar (100)

您的查詢應該是:

Select top 100 * from tablename where (:filter is null and 1=1) 

(columnxyz like :filter) 

open()的窗口通過null字符串,而檢索。

String is_filter; // instance variable 
Setnull(is_filter); 
Dw_1.retrieve (is_filter) 

上的檢索只能過濾的內容:

is_filter=sle_control.text; 
Dw_1.retrieve (is_filter) 

您也可以訪問該博客:

http://bishtpowerbuilder.blogspot.in/2016/10/4-datawindows-strength-of-powerbuilder_25.html?m=1