祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 4254|回复: 0

pb中setFilter详解

[复制链接]

pb中setFilter详解

[复制链接]
ehxz

主题

0

回帖

58万

积分

管理员

积分
588551
贡献
在线时间
小时
2008-6-30 21:20:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×
函数作用:为DataWindow或者DataStore指定数据过滤规则。通常在调用该函数前使用函数Retrieve将数据检索到客户端,该函数可以决定检索到客户端的这些数据哪些可以显示,哪些不能显示。该函数对客户端的数据进行操作,和后台数据库没有任何关系。在设置完过滤规则后使用函数Retrieve检索数据是不合理的,每次设置过滤规则后都检索数据,这样的执行效率很低。需要注意的是,该函数紧紧是设置过滤规则,并不进行过滤。函数Filter是进行过滤的,使用最近设置好的过滤规则对数据进行过滤。
函数语法:integer dwcontrol.SetFilter ( string format )
ldwcontrol:要为其设定过滤规则的DataWindow、DataStore或者下拉子数据窗口控件的名称;
lformat:作为过滤规则的表达式,该表达式的返回值应该是Boolean类型,或者是True、或者是False。如果表达式返回值为Null,则在执行函数Filter时自动弹出对话框让用户指定过滤规则。在表达式中可以使用数据窗口对象函数、列名、列号、数字、字符串等。如果用到了列号,则应该以‘#’开头、后面紧跟数字来表示。多个条件可以使用逻辑运算符进行联结,一个非常良好的习惯是每个条件都应该使用括号。这样既可以保证表达式的清晰,又可以避免一些Bug。后面的代码实例中会讲到。
返 回值:数字类型,1表示执行成功,-1表示执行失败。该函数的返回值没有多大意义,很少在程序中使用该返回值。
代码实例:
例1:使用列名进行过滤。
string ls_filter
ls_filter = "cust_qty > 100 and cust_code >30"
dw_Employee.SetFilter(ls_filter)
dw_Employee.Filter( )
例2:必须使用括号的情况。下面的脚本在逻辑上看起来没有什么问题:
String ls_filter

ls_filter = “name like ‘张%’ and article_title like ‘%计算机%’”
dw_1.SetFilter()
dw_1.Filter()
实际上,上面的程序是不能正确执行的。将过滤规则作如下改动就可以了:
ls_filter = “(name like ‘张%’) and (article_title like ‘%计算机%’)”
例3:取消过滤规则。下面两个语句都能实现:
语句1:dw_1.SetFilter(“”)
语句2:dw_1.SetFilter(“1=1”)
例4:下面的语句在运行时可以让用户自己指定过滤规则:
String ls_null

SetNull(ls_null)
dw_1.SetFilter(ls_null)
dw_1.Filter()
例5:下面脚本可以判断数据窗口中是否有主键重复的数据。假设数据窗口中的主键是dept_id:
string ls_fieldname//主键名称
long ll_rc//数据窗口中总的数据行数

ls_fieldname = "dept_id"
dw_1.SetFilter("1=1")//取消过滤规则,显示全部的数据
dw_1.Filter()//过滤
ll_rc = dw_1.RowCount()//保存数据行数
dw_1.SetSort(ls_fieldname + " A")//用主键进行排序
dw_1.Sort()

//下面语句是核心语句。该过滤规则的含义是:只显示相邻行不同的数据。
dw_1.SetFilter(ls_fieldname + " <> " + ls_fieldname + "[-1] or GetRow() =1")
dw_1.Filter()
if dw_1.RowCount() < ll_rc then
MessageBox("提示",ls_fieldname + "列中存在重复的数据!",StopSign!)
end if
共享共进共赢Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com

QQ|Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2024-11-22 09:07 , Processed in 0.027444 second(s), 8 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表