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、开始:bel1.visible=.f.&&重新开始,abel1标签的可见为假,即赢字隐去.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.如果为两行及以上可用分号(;)分开,最后一行不用分号,不影响命令执行。
bel1.visible=.t.&&那么label1标签的可见为真,即"赢"字显示出来else &&否则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))=15replace 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) >= 232、显示达到某个条件的内容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) >=23select 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)>23andmonth(fnchrq)<month(fncsrq)) or (year(fnchrq)-year(fncsrq)>23 and day(fnchrq)<day(fncsrq))十三、在VFP中设置焦点设置焦点:意思是程序开始后默认动作处mand1.SetFocus &&本表单.command1.设置焦点.command1是开始按扭的名称,程序开始时系统自动在该处显示动作虚框。
表单后缀名是scx十四、VFP中几个常用函数1DATE()返回目前的系统日期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中的常量字符常量都必须包含在引号中日期常量都必须包含在大括号中逻辑常量都必须包含在句点(.)中十八、在一个表内查询有关字段内容的方法:SELECTJBQK.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))>=2832、显示达到某个条件的内容Brow for year(fnchrq) – year(fncsrq) >=233、替换领取独生子女证时间日期为当前月的最后一天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 topDO WHILE NOT EOF()aa=V AL(SUBSTR(DTOC(出生时间),1,4))bb=V AL(SUBSTR(DTOC(出生时间),6,2))IF bb=12REPLACE 领证时间WITH CTOD(ALLTRIM(STR(aa+1))+'01'+'01') ELSEREPLACE 领证时间WITH CTOD(ALLTRIM(STR(aa))+ALLTRIM(STR(bb+1))+'01')ENDIFSELECT 表SKIPENDDO修改身份号码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))=15replace 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=''{回车}。