如何设置多重过滤条件?

上哪说理去 2013-05-14 10:59:30
刚学PB没多久,遇到一个问题,希望各位前辈指点
我有一个数据窗口,包括name、sex、age、class这几个列
想设置过滤的功能
如果在age项 输入 18 就 输出18岁的人
再在sex项中 输入 男 就输出18的男生

这几个过滤条件 不需要同时输入 ,输入一项自动输出结果
并且 不考虑输入的顺序

string ls_filter
ls_filter = 'Describe("' + "evaluate('lookupdisplay(age)'," + '" + string(getrow ()) + ")") like "%'+sle_3.Text+'%"'
dw_1.SetFilter(ls_filter)
dw_1.Filter()

我在每个sle中是这么写的,可是过滤出来有问题
请各位前辈指点
...全文
235 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
上哪说理去 2013-05-16
  • 打赏
  • 举报
回复
引用 5 楼 Dersak 的回复:
给你提供一个新思路。首先,在我从业的时间内,我从来不用filter,因为效率不好。在此我就不解释这个了。对于动态条件检索,我惯用的方法是使用数据窗口的2个函数,一个是getsqlselect,另一个是setsqlselect。前一个是用来获取数据窗口原始语法的,后者是用来组后动态and条件重设数据窗口语法的,重设语法后,立即执行检索,在得到查询结果后,再次调用setsqlselect将原始语法设置回去,以便下次执行。其中有一点需要注意的是,在你用getsqlselect提取数据窗口语法之前一定要让数据窗口绑定事物,就是那句dw.settransobject()。否则你会得到不一样的sql。
好的 谢谢你!
t59616 2013-05-15
  • 打赏
  • 举报
回复
新建数据窗口的时候可以在条件检索中选择按多个条件检索。
I_am_Z 2013-05-15
  • 打赏
  • 举报
回复
给你提供一个新思路。首先,在我从业的时间内,我从来不用filter,因为效率不好。在此我就不解释这个了。对于动态条件检索,我惯用的方法是使用数据窗口的2个函数,一个是getsqlselect,另一个是setsqlselect。前一个是用来获取数据窗口原始语法的,后者是用来组后动态and条件重设数据窗口语法的,重设语法后,立即执行检索,在得到查询结果后,再次调用setsqlselect将原始语法设置回去,以便下次执行。其中有一点需要注意的是,在你用getsqlselect提取数据窗口语法之前一定要让数据窗口绑定事物,就是那句dw.settransobject()。否则你会得到不一样的sql。
sjlion 2013-05-15
  • 打赏
  • 举报
回复
没看懂
DYFDWX 2013-05-15
  • 打赏
  • 举报
回复
顶楼上的,通过getsqlselect 以及set sqlselect减少网络流量
jshcheer 2013-05-15
  • 打赏
  • 举报
回复
引用 5 楼 Dersak 的回复:
给你提供一个新思路。首先,在我从业的时间内,我从来不用filter,因为效率不好。在此我就不解释这个了。对于动态条件检索,我惯用的方法是使用数据窗口的2个函数,一个是getsqlselect,另一个是setsqlselect。前一个是用来获取数据窗口原始语法的,后者是用来组后动态and条件重设数据窗口语法的,重设语法后,立即执行检索,在得到查询结果后,再次调用setsqlselect将原始语法设置回去,以便下次执行。其中有一点需要注意的是,在你用getsqlselect提取数据窗口语法之前一定要让数据窗口绑定事物,就是那句dw.settransobject()。否则你会得到不一样的sql。
正解
薛123 2013-05-14
  • 打赏
  • 举报
回复
ls_filter = "(arg1 like '%" + sle_1.text + "%')" IF not sle_2.text = "" THEN ls_filter = ls_filter + " and (arg2 like '%" + sle_2.text + "%')" END IF dw_1.SetFilter(ls_filter) dw_1.Filter()
上哪说理去 2013-05-14
  • 打赏
  • 举报
回复
引用 1 楼 afu1972715000 的回复:
ls_filter = "(arg1 like '%" + sle_1.text + "%')" IF not sle_2.text = "" THEN ls_filter = ls_filter + " and (arg2 like '%" + sle_2.text + "%')" END IF dw_1.SetFilter(ls_filter) dw_1.Filter()
开始我也是这么写的,但我的实际上有6个过滤条件,而且不需要区分查询的数据,所以这么写判断起来很麻烦

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧