VFP6.0学习笔记(修订)
VFP6.0学习笔记2008年4月10日
目录
一、VF6.0的主索引
二、VF6.0表单建立
三、VFP中”退出”按扭代码和VFP中猜数游戏中”开始”程序码
四、VF6.0表单居中
五、VFP中调用焦点方法:
六、Vf6.0中两个表的链接查询
七、VFP常用命令及用法实例
八、在VFP中显示某特定条件的数据记录
九、VFP中身份证号码修复
十、VFP中计算年龄
十一、VFP程序设计中英文注释
十二、VFP中统计年龄
十三、在VFP中设置焦点
十四、VFP中几个常用函数1
十五、VFP中时间函数
十六、VFP中的字符串替换命令
十七、VFP中的常量
十八、在一个表内查询有关字段内容的方法:
十九、VFP的多表查询
一、VF6.0的主索引
VF6.0中的主索引的用途,是指在表中不能出现重复记录.
二、VF6.0表单建立
改变容器大小选项:在“全部”选项卡里输入Height(高度).Width(宽度值)
改变图片显示容器属性:在属性框中选择Stretch.默认是0‘剪载’,改成变填充,可将图片在容器中全部显示.
修改窗体介绍:在属性栏选Caption.添加窗体背景图,在属性栏里选Picture,点上面的浏览‘按钮’,进行查找图片文件.
三、VFP中”退出”按扭代码和猜数游戏中”开始”程序码
1、退出:
在方法程序中双击Click Event,输入:
thisform.release&&本表单.释放
2、开始:
https://www.360docs.net/doc/057226217.html,bel1.visible=.f.&&重新开始,abel1标签的可见为假,即赢字隐去.
https://www.360docs.net/doc/057226217.html,bel2.visible=.f.&&将label2标签的可见为假,即"输"字隐去.
thisform.text1.value=int(rand()*10)&&设置本表单text1文本框的随机值.本例中随机值是10。
thisform.text2.value=int(rand()*10)&&设置text2文本框
的随机值.本例中随机值是10。
thisform.text3.value=int(rand()*8) &&设置text3文本框的随机值.
if thisform.text1.value=7 .or. ;
thisform.text2.value=7 .or. ;
thisform.text2.value=7 &&假如text1的值等于7或者text2等于7或者text3等于7.如果为两行及以上可用分号(;)分开,最后一行不用分号,不影响命令执行。
https://www.360docs.net/doc/057226217.html,bel1.visible=.t.&&那么label1标签的可见为真,即"赢"字显示出来
else &&否则
https://www.360docs.net/doc/057226217.html,bel2.visible=.t.&&label2标签可见为设为真,即"输"字显示出来.
endif &&结束假设
四、VF6.0表单居中
在表单属中选择AutoCenter,将其值改为‘真’,表示表单自动居中。为了使表单运行时不再运行其它语句,在属性窗体中选WindowType,将其值改为‘1’模式,只有在关闭表单后其它程序才能使用。
修改表单名称:Caption修改名称
方框透明:BackStyle中修改为透明
五、VFP中调用焦点方法:
对象名称.setfocets
程序将自动在该方框中设置输入焦点.
六、Vf6.0中两个表的链接查询
SELECT Jbqk.妇女编码, Jbqk.妇女姓名, Jbqk.妇女身份证, Jbqk.妇女民簇, Jbqk.妇女婚姻, Jbqk.女婚变日期, Jbqk.丈夫姓名, Jbqk.丈夫身份证, Jbqk.丈夫民簇, Jbqk.丈夫婚姻, Jbqk.避孕时间, Jbqk.避孕状况, Jbqk.xynh, Jbqk.xynvh, Syjjtzn.孩次, Syjjtzn.性别, Syjjtzn.是否合法, Syjjtzn.子女出生, Syjjtzn.生育备注;(指明调用哪些字段,每一个字段前必须加有表名称,字段名之间用英文或半角下的逗号“,”分开)
FROM jbqk INNER JOIN syjjtzn ;(指明调用表的名称)
ON Jbqk.妇女编码= Syjjtzn.妇女编码;(指明两个表关联的字段名)
ORDER BY Jbqk.妇女编码;(设定排序字段名,本例中为升序)INTO TABLE g:\资料类\数据库文件\ylfn\出生查询2.dbf(查询结果保存路径)
七、VFP常用命令及用法实例
以“表”形式浏览内容:brow(表式浏览)
条件:for(浏览条件)
显示字段名:fields例如:brow fields fnxfhm (回车)只显示字段名为fnxfhm的内容(注意:两个命令之间不能用for)
八、在VFP中显示某特定条件的数据记录
包含命令:$例如:将fnxm中包含“陈”字的显示出来Brow for“陈” $ fnxm
相对等于命令:= (包括)
绝对等于命令:==(完全相等)
大于命令:>fncsrq大于1970.03.21的显示出来:brow for fncsrq>{^1970.03.21}
九、VFP中身份证号码修复
replace all fnsfhm with substr(fnsfhm,1,6) + substr(dtoc(fncsrq),3,2) + substr(dtoc(fncsrq),6,2) + substr(dtoc(fncsrq),9,2) +substr(fnsfhm,13,3) for len(alltrim(fnsfhm))=15
replace all fnsfhm with substr(fnsfhm,1,6) + substr(dtoc(fncsrq),1,4) + substr(dtoc(fncsrq),6,2) + substr(dtoc(fncsrq),9,2) +substr(fnsfhm,15,4) for len(alltrim(fnsfhm))=18
十、VFP中计算年龄
1、育龄妇女初婚时达到晚婚年龄的人数
select count(fnxm) from jbqk.dbf where year(fnchrq) - year(fncsrq) >= 23
2、显示达到某个条件的内容
Brow for year(fnchrq) –year(fncsrq) >=23
十一、VFP程序设计中英文注释
FontSize:设定字号大小
Alignment:文档对齐方式
Caption:标题属性(可输入文字内容)
Visible:可见属性(真或假)
Click Event:按动事件
thisform.release :本表单.释放
ForeColor:设置文字或前景颜色
Disabledback:设置背景颜色
十二、VFP中统计年龄
1、育龄妇女初婚时达到晚婚年龄的人数
select count(fnxm) from jbqk.dbf where year(fnchrq) - year(fncsrq) >= 23 (select为选择命令,count为统计计算命令,from为调用表命令)
2、显示达到某个条件的内容
Brow for year(fnchrq) – year(fncsrq) >=23
select count(fnxm) from jbqk.dbf where (year(fnchrq)-year(fncsrq) >= 23 and month(fnchrq)>=month(fncsrq) and day(fnchrq)>=day(fncsrq)) or (year(fnchrq)-yea r(fncsrq)>23and
month(fnchrq) 十三、在VFP中设置焦点 设置焦点:意思是程序开始后默认动作处 https://www.360docs.net/doc/057226217.html,mand1.SetFocus &&本表单.command1.设置焦点.command1是开始按扭的名称,程序开始时系统自动在该处显示动作虚框。 表单后缀名是scx 十四、VFP中几个常用函数1 DATE()返回目前的系统日期 TIME()返回目前的系统时间 UPPER()将小写字母转换成大写字母 LOWER()将大写字母转换成小写字母 CTOD()将字符型转换成日期型格式 DTOC()将日期型转换成字符型格式 LEN()计算字符表达式的长度 ALLTRIM()删除字符串前置和尾部空白 TRIM()删除字符串尾部空白 LTRIM()删除字符串前置空白 SUBSTR()节选字符串的位数,第一个数为第几位,第二个数为连续的个数 STR()将数值表达式转换成字符串 VAL()将字符串转换成数值表达式 十五、VFP中时间函数 Year()取年份 Month()取月份 Day()取天日 十六、VFP中的字符串替换命令 STUFF()字符串替换,如:REPLACE all fnhjddm with STUFF(fnhjddm,7,3,“999”)意思是将字段fnhjddm中从第7位起取3个字符替换成999 字段名”Fnhjddm”是妇女户籍地代码 十七、VFP中的常量 字符常量都必须包含在引号中 日期常量都必须包含在大括号中 逻辑常量都必须包含在句点(.)中 十八、在一个表内查询有关字段内容的方法: SELECT JBQK.Fnbm,JBQK.Pyxm,JBQK.Fnxm,JBQK.Fnxjd,JBQK.xynh, xynvh; (指定字段名命令)(字段名,每一个字段名必须带有表的名称,如:jbqk.fnxm,) FROM E:\乡级软件安装\数据表\乡级软件安装 \BFHFS\JBQK.DBF; (指定路径命令)(文件的路径……………………………………………….) WHERE (JBQK.PYXM='zz') (显示的条件命令)(显示的条件,可以不用条件) 意思是:显示E盘下的乡级软件安装\数据表\乡级软件安装\BFHFS\JBQK.DBF表的几个字段内容,一行不够用另起一行时在上一行的后面加分号,表示继续执行下一行命令 十九、VFP的多表查询 SELECT Jbqk.fnbm, Jbqk.fnxm, Jbqk.fngzdw, Jbqk.fnsfhm, Jbqk.fnmz,Jbqk.fnhyzk,Jbqk.fnhbrq,Jbqk.zfxm,Jbqk.zfsfh m, Jbqk.zfmz, Jbqk.zfhyzk,Jbqk.byzk, Jbqk.byksrq, Jbqk.xynh, Jbqk.xynvh, Syjjtzn.znhc, Syjjtzn.znxb,Syjjtzn.zcsx, Syjjtzn.zncsrq, Syjjtzn.sybz; FROM jbqk INNER JOIN syjjtzn ; ON Jbqk.fnbm = Syjjtzn.fnbm; INTO CURSOR查询4 二十、将系统日期格式设置为年月日格式 SET DATE ANSI (将系统日期格式设置为年月日格式) SET CENTURY on (年份为四位) 计算年龄 1、育龄妇女初婚时达到晚婚年龄的人数 select count(fnxm) from jbqk.dbf where year(fnchrq) - year(fncsrq) <= 20 另外一个计算晚育的句子:sele coun(*) as wy,left(fnbm,12) as dwdm into dbf tempdb from tempwy wher ((year(zncsrq)-ye ar(fncsrq))*12+month(zncsrq)-month(fncsrq))>=283 2、显示达到某个条件的内容 Brow for year(fnchrq) – year(fncsrq) >=23 3、替换领取独生子女证时间 日期为当前月的最后一天 gomonth(date(),1) - day(gomonth(date(),1)) 下个月的第一天 gomonth(gomonth(date(),iif(day(date())=1,1,0)) - day(gomonth(date(),iif(day(date())=1,1,0))-1),1) 40、另外一个替换独生子女日期命令 SELECT 表 GO top DO WHILE NOT EOF() aa=V AL(SUBSTR(DTOC(出生时间),1,4)) bb=V AL(SUBSTR(DTOC(出生时间),6,2)) IF bb=12 REPLACE 领证时间WITH CTOD(ALLTRIM(STR(aa+1))+'01'+'01') ELSE REPLACE 领证时间WITH CTOD(ALLTRIM(STR(aa))+ALLTRIM(STR(bb+1))+'01') ENDIF SELECT 表 SKIP ENDDO 修改身份号码 1、以下命令将修复身份证号码和出生年月日相同,15位和18位的分别修复: replace all fnsfhm with substr(fnsfhm,1,6) + substr(dtoc(fncsrq),3,2) + substr(dtoc(fncsrq),6,2) + substr(dtoc(fncsrq),9,2) +substr(fnsfhm,13,3) for len(alltrim(fnsfhm))=15 replace all fnsfhm with substr(fnsfhm,1,6) + substr(dtoc(fncsrq),1,4) + substr(dtoc(fncsrq),6,2) + substr(dtoc(fncsrq),9,2) +substr(fnsfhm,15,4) for len(alltrim(fnsfhm))=18 替换命令 如:想替换现居地代码, 1、先用brow for查出要查看的内容,例如:查县直县委办(县委办代码是401)代码等于空的,请打入:brow for fndwdm=' '{回车}。 2、然后,再用repl fndwdm with '371421600401'{回车} 3、替换日期型字段内容 replace妇女初婚日期with妇女婚变日期for empty(妇女初婚日期) = .t. and. 婚姻状况='初婚' 4、将妇女出生日期前面加上“371421”后面加上“321”组成一个15位的身份证号码替换到身份证号码字段里面:replace all fnsfhm with "371421"+subs(dtoc(fncsrq),7,4)+subs(dtoc(fncsrq),1,2)+s ubs(dtoc(fncsrq),4,2)+"331" 用命令修改字段名 select 字段1 as "名称1",.... from 表1 into cousor 临时表 select 临时表 copy to XXX.xls type xl5 Alter Table xs Add Column BJ C(8)表示在表XS中添加一个字段BJ; Alter table xs Alter BJ C(10)表示把XS表中BJ字段宽度改为10; Alter Table xs Renaem column BJ to BJMC表示将XS 表中的BJ字段改名为BJMC; Alter Table xs Drop Column BJMC表示删除BJMC字段 (1)把"婚姻变更日期"替换成"初婚日期"的内容 replace all 婚姻变更日期with 初婚日期 (2)身份证号为18位,取第17位不是奇数 brow for (val(substr(身份证,17,1)) % 2)=0 and len(alltrim(身份证))=18 (3)身份证号为15位,取第15位不是偶数 brow for (val(substr(身份证,15,1)) % 2)=1 and len(alltrim(身份证))=15