[分享]pb中在dw内实现下拉式模糊查询
岁月明灯 2016-12-15 08:47:17 1、dw中的要做模糊查询的字段(下例为splcode)的EDIT设成Dropdownlistbox格式;
选中:
(1)allow editing
(2)Auto Horz Scroll
(3)Sorted
(4)Always Show List
(5)Always Show Arrow
(6)V Scrollbar
2、Instance Variables中声明:
string is_itemvalue_reverse
3、editchanged事件:
DataStore ds_spl
long ll_i
long ll_rowcount
long ll_splid
string ls_splinfo
DataWindowChild dwc_splcode
string ls_value
string ls_itemvalue,ls_itemvalue_reverse
string ls_datavalue
if isvalid(ds_spl) then
destroy(ds_spl)
end if
setnull(is_itemvalue_reverse)
choose case dwo.name
case 'splcode'
setnull(ls_value)
dw_list.Object.splcode.Values = ls_value
ds_spl = create DataStore
ds_spl.DataObject = "d_supplier_query_like"
ds_spl.SetTransObject(sqlca)
ll_RowCount = ds_spl.Retrieve(data)
for ll_i = 1 to ll_RowCount
setnull(ls_splinfo)
setnull(ls_itemvalue_reverse)
ls_splinfo = ds_spl.GetItemString(ll_i,"splcode")
ls_itemvalue_reverse = ls_itemvalue_reverse+ ls_splinfo + " " + ls_splinfo + '/'//display
ls_splinfo = ds_spl.GetItemString(ll_i,"splcode") +'-' + ds_spl.GetItemString(ll_i,"splname") + " " + ls_splinfo + '/'//display
ls_itemvalue = ls_itemvalue+ ls_splinfo
next
is_itemvalue_reverse = ls_itemvalue_reverse
dw_list.Object.splcode.Values = ls_itemvalue
case else
end choose
if isvalid(ds_spl) then
destroy(ds_spl)
end if
4、Itemchanged事件:
string ls_splname
string ls_splcode
string ls_py
string ls_shortname
string ls_splno
choose case dwo.name
case "splcode"
ls_splno = left(data,7)
this.setitem(row, "splcode",ls_splno)
select splname,shortname,prchead into:ls_splname,:ls_shortname,:ls_py
from pub_supplier
where splcode = :ls_splno;
this.object.splcode.Values = is_itemvalue_reverse
this.setitem(row, "splname",ls_splname)
this.setitem(row, "shortname",ls_shortname)
this.setitem(row, "prchead",ls_py)
end choose
5、d_supplier_query_like的SQL
select COMPID,
SPLID,
SPLCODE,
SPLNAME,
SHORTNAME,
PRCHEAD
from pub_supplier
where stopflag = '00' and
( splcode LIKE '%'||:as_condition||'%' OR
splname LIKE '%'||:as_condition||'%' OR
prchead LIKE '%'||:as_condition||'%' OR
SHORTNAME LIKE '%'||:as_condition||'%')