主题:VFP实现渐进查询详细说明及代码
逐键查询是目前比较流行的查询方式本人去年做一个项目刚好用到这个功能,现在我把做法告诉大家!
一、建立一个表单为FORM1
加一个TEXT和LIST控件TETX和LIST上下紧靠着感觉像COMBO控件
二在TEXT控件的KEYPREE事件里写如下代码
d=nKeyCode
K=alltrim(upper(chr(nKeyCode)))
IF d=5
thisform.list1.visible=.f.
return
endif
if between(d,33,127).or. d=7
thisform.list1.visible=.t.
if d=127 .or. d=7
kk=left(kk,len(kk)-1)
else
kk=kk+k
endif
select *;
from fbcode; *表名
where fbcode.fbtc_inputcode like alltrim(kk)+"%";
order by fbcode.fbtc_chaname;
into table ss
thisform.list1.rowsource="ss.fbtc_chana"
thisform.list1.rowsourcetype= 2
endif
之后在LIST控件的VALID事件中写如下代码
kk=alltrim(dd)
thisform.text1.controlsource="kk"
thisform.list1.visible=.f.
RETURN
这样就可以实现渐进查询大家不妨可以一试!我在VFP8。0和6。0中都调试通过了
最后注意事项:
TEXT控件中的CONTROLSOURCE=“KK”
LIST控件中的CONTROLSOURCE=“DD”
一、建立一个表单为FORM1
加一个TEXT和LIST控件TETX和LIST上下紧靠着感觉像COMBO控件
二在TEXT控件的KEYPREE事件里写如下代码
d=nKeyCode
K=alltrim(upper(chr(nKeyCode)))
IF d=5
thisform.list1.visible=.f.
return
endif
if between(d,33,127).or. d=7
thisform.list1.visible=.t.
if d=127 .or. d=7
kk=left(kk,len(kk)-1)
else
kk=kk+k
endif
select *;
from fbcode; *表名
where fbcode.fbtc_inputcode like alltrim(kk)+"%";
order by fbcode.fbtc_chaname;
into table ss
thisform.list1.rowsource="ss.fbtc_chana"
thisform.list1.rowsourcetype= 2
endif
之后在LIST控件的VALID事件中写如下代码
kk=alltrim(dd)
thisform.text1.controlsource="kk"
thisform.list1.visible=.f.
RETURN
这样就可以实现渐进查询大家不妨可以一试!我在VFP8。0和6。0中都调试通过了
最后注意事项:
TEXT控件中的CONTROLSOURCE=“KK”
LIST控件中的CONTROLSOURCE=“DD”