标题:请将你自己做的VFP的技巧传上来
只看楼主
btchongzi
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2006-8-22
得分:0 
楼上Set Centry ON 了 就可以了
2006-09-01 16:10
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
得分:0 
模糊查询问题

做查询的时候,总希望能用尽量少的信息找到所需要的记录。用“=”作为条件太严格;用AT函数或$虽有所改进,却也只能找到连续匹配的字符串;若能给出"人大"就能找到"中国人民大学","全国人民代表大会","省人民代表","人小心大"等,岂不美妙?这也属于模糊查询的范畴。

结合实例写上部分代码,期望能抛砖引玉。假设表单的"职工.DBF"文件内容被显示在表格(GRID1)中,有一文本框TEXT1放的是欲查询的模糊信息,需要从"姓名"这个字段中查找该模糊信息,则"查询"命令按钮的CLICK代码为

cString=ALLTRIM(THISFORM.TEXT1.VALUE)
IF EMPTY(cString)
SELECT * FROM 职工
ELSE
cText="%"
FOR nCnt=1 TO LEN(cString)
IF ISLEADBYTE(SUBSTR(cString,nCnt))
cText=cText+SUBSTR(cString,nCnt,2)+"%"
nCnt=nCnt+1
ELSE
cText=cText+SUBSTR(cString,nCnt,1)+"%"
ENDIF
ENDFOR
SELECT * FROM 职工 WHERE 姓名 LIKE (cText)
ENDIF
* BY Tiger5392 (C)Copyright 2006-2006

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-10-06 00:27
dong2dong
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-10-19
得分:0 

看了楼上各位的技巧,收获很多,还不能一一验证和掌握,先收下了。
作为回报,我也写些内容与大家分享。
我编程总想简单,能不用控件就不用控件,在动态显示进度时,我们总是用控件ProgressBar Control,我现在用两个文本框代替这个控件同样解决了问题,而且不存在控件的注册问题。
步骤一,在表单上添加两个文本框,重叠,text2在text3之上,两个ENABLED、visible均设为.f.,text3略小些,disabledbackcolor高为rgb(255,255,0)黄色(或其他色),text2高为透明,文本居中,disabledforecolor高为rgb(0,0,0)。text3的width=A(最后的宽度)。
[IMG]C:\a.bmp[/IMG]
步骤二:程序运行后,求出记录总数B。在text2\text3的visible=.t.之前,令text3.width=0
步骤三:显示进度,设已处理记录数为C,不断修正text3.width=C*A/B,并显示text2.value=str(C*100/B,3)+"%",
这样随着程序的进行,一个动态的进度条生成了。
第四步:结束后,将text2\text3的visible=.f.即可。
使用和设置一点也不比ProgressBar Control控件复杂。当然这个进度条还不是很美观。

[此贴子已经被作者于2006-10-19 19:31:00编辑过]

2006-10-19 19:23
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
13楼的办法的确很好,实际上还可以用动态画方框的方法解决。

活到老,学到老! http://www. E-mail:hu-jj@
2006-10-25 20:46
xtutem
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-9-24
得分:0 
大家多多交流,共同进步!
2006-12-11 11:08
xtutem
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-9-24
得分:0 
这个网站作的非常好!要常来哦!原找志同道合之士,共同学习编程.我的QQ:397942679.别忘了加我哦!
2006-12-11 11:10
心随所欲
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-12-26
得分:0 
12楼的方法我试了一下
不怎么管用啊
也可能是我放错了地方
但在我这里真的实现不了啊
?????????????????????????????????
????????
2006-12-26 09:27
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
得分:0 

TO:心随所欲

你可以根据12楼的提示进行测试。这里,为了快速方便你测试,建议你在表单中只添加两个控件:一个文本框TEXT1,一个命令按钮COMMAND1。但事先在表单的初始化部分THISFORM.INIT打开表“职工.DBF”,设置文本框的INPUTMASK中X的个数与姓名宽度一致,并在表中添加用于测试的数据,比如“张三”、“张大三”、“张小三”、“李四”、“李大四”、“李小四”等数据。你将12楼的程序一个字不改地复制到命令按钮的CLICK事件中。

运行表单后在文本框中输入“张三”,点击命令按钮,结果是不是出现前面所说的3条记录。


感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-12-26 23:25
MELANCHOLY
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-12-15
得分:0 
谢谢分享!
2007-04-23 00:52
YILANG
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-5-9
得分:0 

请问二楼的:"IIf(recn()="+M_RECNSTR+",RGB(255,255,255),RGB(0,0,0))"这个表达式中,M_RECNSTR是个变量,为什么用两个+号还用引号


性格决定一个人的命运
2007-05-15 01:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-79864-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.576075 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved