标题:请将你自己做的VFP的技巧传上来
取消只看楼主
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
结帖率:100%
 问题点数:0 回复次数:3 
请将你自己做的VFP的技巧传上来
事由:
常常见到狐友为某些小的不如意而痛苦,也常见狐友取得一点进步而顿感成功。也许你的成功正好能帮助别的狐友的克服苦恼。建议将你自己做的VFP的技巧传上来,大家分享。当然你看到的某人做的东西也可以拿来分享,只是要注明作者和出处才是。

内容:
1.良好的编程习惯
2.解决问题的良好的思路
3.简洁的代码
4.高效的程序
5.意想不到的诀窍
6.其他

要求:
或仅仅是看看,学习学习;或者尽你自己所能,发点技巧上来,与狐友分享;或者发点心得过来,共同进步。但不要在这里灌水,关心每一个帖子,吸取每一个精华,奉献每一个爱心,需要你我的努力。


先来一个吧。关于程序设计格式的。
一般地,做了程序以后,如果遇到存在问题,要找到问题所在的话,好象不是一件容易的事情。我的通常的做法就是写成锯齿结构。这样就便于检查结构是否完整,根据不同的情况判断错误或有错误隐患的命令到底可能会出现在哪个语句块等。

循环语句(一):如计算1+...+100=?
STORE 0 TO SUM1,I
DO WHILE I<100
I=I+1
SUM1=SUM1+I
ENDDO
?SUM1

循环语句(二):
FOR 变量=起始值 TO 终止值 STEP 步长
...
...
ENDFOR

循环语句(三):
SCAN FOR <条件>
...
...
ENDSCAN

条件语句(一):如判断是否及格
IF 语文>=60
?"及格"
ELSE
?"不及格"
ENDIF

条件语句(二):如判断是第几个季度
N=MONTH(DATE())
DO CASE
CASE N<=3
?"第一季度"
CASE N<=6
?"第二季度"
CASE N<=9
?"第三季度"
CASE N<=12
?"第四季度"
OTHERWISE &&本句没有用,可删除
?"不合法的日期"
ENDCASE

复合结构:比如判断一个数321是否为素数
N=321
OK=.T.
FOR I=2 TO SQRT(N)
IF MOD(N,I)=0
OK=.F.
EXIT
ENDIF
ENDFOR
IF OK=.T.
?"N=",N,"是素数"
ELSE
?"N=",N,"是合数"
ENDIF

[此贴子已经被作者于2006-7-23 18:59:27编辑过]

搜索更多相关主题的帖子: VFP 技巧 事由 诀窍 心得 
2006-07-23 18:24
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
得分:0 
在梅子论坛看到一个帖子,解答了出来,因无法发帖,现放在这里,希望能对大家有所帮助。
* 有两个表TABLE_A和TABLE_B
* TABLE_A内容为
* A1 A2
* AAA
* BBB
* CCC
* DDD
* EEE
* FFF
*
* TABLE_B内容为
* A1 A2
* AAA 1
* CCC 2
* DDD 3
* EEE 4
*
*要求使用一条UPDATE命令使得TABLE_A的内容变为
* A1 A2
* AAA 1
* BBB
* CCC 2
* DDD 3
* EEE 4
* FFF
*
* 事实上如果直接用UPDATE语句,则会出现找不到别名的错误;
* 如果两个表分别在不同的工作区打开而不用建立关联的话,也最多只能替换1条记录;
* 因此建立关联后在用UPDATE就会有相应的效果。
*
CLOSE ALL
USE TABLE_B
INDEX ON A1 TO A1.IDX
SELECT A
USE TABLE_A
SET RELATION TO A1 INTO B
UPDATE TABLE_A SET TABLE_A.A2=TABLE_B.A2 WHERE TABLE_A.A1=TABLE_A.A1
CLOSE ALL
ERASE A1.IDX
USE TABLE_A
BROW

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-08-05 11:04
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
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



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




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

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