PB,如何实现数据窗口根据列的显示值进行过滤?

lcj240856742 2010-03-10 10:46:07
我想要实现一个数据窗口过滤功能,可以根据列的实际显示值进行过滤。
比如:“职业”一列(dddw列),操作员输入汉字“农民”,可以将所有人职业中包含“农民”的全部过滤出来。
请各位高手指教。
...全文
618 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
pb8 2010-03-10
  • 打赏
  • 举报
回复
呵呵,看来在#1楼的回复还是没理解错,你可以用类似于下面的语句来进行判断,通过判断
Describe("Evaluate('LookUpDisplay(职业)', " + string(getrow()) + ")") like '%pb8%'
lcj240856742 2010-03-10
  • 打赏
  • 举报
回复
引用 1 楼 pb8 的回复:
呵呵,增加一个计算字段,内容为lookupdisplay(职业),对该计算字段进行过滤就可以了~~

这个我想过的,我举的“职业”只是一个例子,数据窗口中有很多个这样的字段,我都想要实现根据这些字段显示值来过滤数据窗口中的记录。
而且,我想做一个动态的查询窗口,可以用来对其他窗口中的数据窗口进行过滤。

因此希望能够找到一个方法,
可以直接根据列的显示值过滤数据窗口。

pb8 2010-03-10
  • 打赏
  • 举报
回复
在dw的editchanged事件中编写,
datawindowchild ldwc_data
if string(dwo.name)='职业' then
if dw_1.getchild('职业,ldwc_data) = 1 then
if trim(data)='' or isnull(data) then
ldwc_data.setfilter('')
else
ldwc_data.SetFilter("c_name like '%" + data + "%'")
end if
ldwc_data.filter()
end if

差不多就这样了,呵呵,~~
wag_enu 2010-03-10
  • 打赏
  • 举报
回复
老贴中有的, 搜一下 "DDDW 过滤" 什么的...
pb8 2010-03-10
  • 打赏
  • 举报
回复
呵呵,增加一个计算字段,内容为lookupdisplay(职业),对该计算字段进行过滤就可以了~~
lcj240856742 2010-03-10
  • 打赏
  • 举报
回复
引用 8 楼 pb8 的回复:
呵呵,有些复杂,你看看下面的吧
string ls_filter
ls_filter = 'Describe("' + "evaluate('lookupdisplay(familysick1)'," + '" + string(getrow()) + ")") like "%过滤的字符%"'
MessageBox(ls_filter,dw_1.setfilter(ls_filter) )


可以了,非常感谢,呵呵 。
pb8 2010-03-10
  • 打赏
  • 举报
回复
呵呵,有些复杂,你看看下面的吧
string ls_filter
ls_filter = 'Describe("' + "evaluate('lookupdisplay(familysick1)'," + '" + string(getrow()) + ")") like "%过滤的字符%"'
MessageBox(ls_filter,dw_1.setfilter(ls_filter) )
lcj240856742 2010-03-10
  • 打赏
  • 举报
回复
引用 5 楼 pb8 的回复:
呵呵,看来在#1楼的回复还是没理解错,你可以用类似于下面的语句来进行判断,通过判断
Describe("Evaluate('LookUpDisplay(职业)', " + string(getrow()) + ")") like '%pb8%'

呵呵
这样弄:
string ls_filter
//dw_1.Describe("Evaluate('LookupDisplay(familysick1)',"+String(getrow())+")") ='有'
ls_filter = 'dw_1.Describe('+char(34)+'Evaluate('+char(39)+'LookupDisplay(familysick1)'+char(39)+','+char(34)+'+String(getrow())+'+char(34) +')'+char(34)+') =' + char(39)+'有'+char(39)
dw_1.setfilter(ls_filter)
dw_1.filter()

但是提示语法错误。
敢问为啥?
最后的setfilter()报错
lcj240856742 2010-03-10
  • 打赏
  • 举报
回复
引用 5 楼 pb8 的回复:
呵呵,看来在#1楼的回复还是没理解错,你可以用类似于下面的语句来进行判断,通过判断
Describe("Evaluate('LookUpDisplay(职业)', " + string(getrow()) + ")") like '%pb8%'


呵呵
这样弄:
string ls_filter
//dw_1.Describe("Evaluate('LookupDisplay(familysick1)',"+String(getrow())+")") ='有'
ls_filter = 'dw_1.Describe('+char(34)+'Evaluate('+char(39)+'LookupDisplay(familysick1)'+char(39)+','+char(34)+'+String(getrow())+'+char(34) +')'+char(34)+') =' + char(39)+'有'+char(39)
dw_1.setfilter(ls_filter)
dw_1.filter()

但是提示语法错误。
敢问为啥?

610

社区成员

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

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