2016-11-18 34 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