当前位置: 代码迷 >> PB >> pb的模糊查询有关问题
  详细解决方案

pb的模糊查询有关问题

热度:34   发布时间:2016-04-29 06:45:26.0
pb的模糊查询问题?
通过分号间隔,查找出满足条件的记录,比如要在数据窗口中查找包含"中国黑龙江省哈尔滨市"内容的字段,只需在文本框中输入“中国;龙江;哈尔;"即可,无需输入完全一样的字符即可过滤出该条记录。
通过分号实现模糊查询

------解决方案--------------------
通过pos函数查找;来实现

long ll_pos
ls_text = "中国;龙江;哈尔;"
ll_pos = pos(ls_text, ';')
do while ll_pos > 0
   ls_text = left(ls_text, ll_pos - 1) + '%%' + mid(ls_text, ll_pos + 1)
   ll_pos = pos(ls_text, ';')
loop

messagebox('', ls_text)
------解决方案--------------------
没理解错你的意思,我们也是举例说明要实现的方法,至于你的动态条件需要你自己组织代码构造。唉,算了,早上比较闲,给你写了个例子,你应该可以直接拿过去改改就差不多了。这是构造条件表达式的,怎么用不用再说了吧!你总可以得到我下面那个ls_text总条件串吧,能得到就能照法改造了。

string ls_text = "aaaa;dddd;cccc;ddeeeggg;cczzcc;ffffasdd;cesadd;dgggghhss;"
string ls_cond
string arg []
long ll_pos
int li_step = 1
int li_for

do
ll_pos = pos(ls_text,";")
if ll_pos > 0 then
 arg[li_step] = left(ls_text, ll_pos - 1)
 ls_text = mid(ls_text, ll_pos + 1)
 li_step += 1
end if
loop while ll_pos > 0

//假设你的查询列是 c_name
for li_for = 1 to upperbound(arg)
if li_for = 1 then
ls_cond += "( c_name like '%" + arg[li_for] + "%')"
else
ls_cond += " and ( c_name like '%" + arg[li_for] + "%')"
end if
next

messagebox("",ls_cond)
  相关解决方案