回 帖 发 新 帖 刷新版面

主题: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”

回复列表 (共8个回复)

沙发

是不是我的手太低了,看不太懂啊

一些变量,互相的关系不明

板凳

请楼主把您的思想/思路用文字先表达出来,大家也好理解.
因为你贴子的题目里的"渐进"和你贴子里的"逐键"叫人狐疑.
我粗看了一下代码,太费劲(大凡代码看起来都很费劲),也没看出意思,也我理解你好像在用键盘上的字母键实现快速汉字信息查询.不知道猜得对不对?

3 楼

LZ太好了,
我正要这样一分东东,
好好
顶顶

4 楼


现在才知道这种功能叫渐进查询

5 楼

我也是拉

6 楼

不错

7 楼

楼主的办法太复杂,我有一个简单的.
1、建立一个表单,在表单上添加一个List和一个Text,设计好位置。
2、在数据环境中加入一个表,例如:单位名称表(单位名称 C 20)
3、设List的Rowsource=‘单位名称表.单位名称’
4、在Text的Interactivechange事件中编写如下代码:
  mcs=alltrim(this.value)
  thisform.list1.rowsource=NULL
  select 单位名称表
  set filter to  单位名称='&mcs'
  go top
  thisform.list1.rowsource='单位名称表.单位名称'
  thisform.list1.refresh


注:也可以将List换成Grid。

8 楼


请问,你的程序中的kk dd 变量指的是什么呀?

我来回复

您尚未登录,请登录后再回复。点此登录或注册