1、常用的函数与表达式构造示例函数类型 函数使用格式 表达式构造示例与说明SUBSTR(expC, expN1 , expN2 )LEFT( ),RIGHT( )SUBSTR(xh,2,3)+ LEFT(xm,2)将 xh 的第 2 至 4 位和 xm 的头两位连接起来LEN(expC )ALLTRIM( expC )RIGHT(xh,LEN(ALLTRIM (xm) ) )例如: xh=0204112 xm= 李宾 则结果是4112STR( expN1 , expN2 , expN3 )ASC(expC) 由字符返回 ASCII 码值字符CHR(expN)由 ASCII 码值返回字符(1) ST
2、R(cj,5,1)+ xh (可作为索引表达式)当成绩相同时,按学号排序(2) CHR(66)+“A“+STR(ASC(“C“),3)结果是“BA 67” MAX() ,MIN(), AVG( ) MAX(cj) as 最高分 (可作为查询输出字段)SUM(expN) 只对数值型字段 SUM(IIF(bxk=.T.,xf,0) )as 必修课总学分 COUNT() 可对多种类型字段 COUNT(xs.xh)as 学生总数 数学VAL( expC ) VAL(LEFT(xh,2) +6将 xh 的前 2 位转换为数值再加 6CTOD( expC )用“月/日/年”的短日期格式时容易产生误解CTO
3、D(“2005/07/20“)-10 返回 07/10/05CTOD(“05/07/20“)-10 返回 04/27/20此处第 1 种为精确日期格式,不会出现误解 DTOC( expD )带参数 1 时,按年月日顺序且无分隔符形式返回字符型日期DTOC(gzrq,1)+xm (可作为索引表达式)工作日期相同时按 xm 排序日期YEAR( expD ) ,DATE() YEAR(DATE())-YEAR(csrq) 得年龄BETWEEN(变量, 下界, 上界 )BETWEEN(cj, 0, 100) cj 在 0-100 分之间(即:0cj=60,合格, 不合格)Cj 不低于 60 为合格,否
4、则不合格逻辑INLIST(变量,值 1,值 2, ) INLIST(zc, 教授 , 副教授 , 讲师 )职称只可以为教授、副教授或讲师VFP 程序设计举例题目: 编制程序计算组合数:解题方法 解法一:按顺序分步计算, 结果输到主窗口中。 解法二:用自定义函数和判断语句进行计算, 结果输到主窗口中。 解法三:用自定义函数和判断语句进行计算,建立一个自由表,并将计算结果输入其中, 退出系统后仍能看到结果。 程序代码 set talk offclear input “请输入 m:“ to m input “请输入 n (注意:;n m) :“ to na=1b=1d=1for i=1 to m a
5、=a*iendforfor i=1 to n b=b*iendforfor i=1 to (m-n)d=d*iendforc=a/(b*d)set talk offdo while .t.clearinput “请输入 m :“ to m input “请输入 n:“ to nif m 来调 出界面,进行计 算 m=val(thisform.text1.value)n=val(thisform.text2.value)do c:sj166.prg thisform.text3.value=str(a)thisform.text4.value=str(b)thisform.text5.value
6、=str(d)thisform.text6.value=str(c)thisform.refresh clear eventsthisform.release public a,b,d,c a=jch(m)b=jch(n)d=jch(m-n)c=a/(b*d)function jchparameters p s=1for i=1 to p s=s*iendforreturn s 解法五:面向对象编程通过运行程序文件 来调出界面,进行计算 set talk offmf=createobject(“formset“)mf.addobject(“jc“,“jianch“)mf.showmf.jc.v
7、isible=.t.read events其余的代码通过下列步骤添加: 在表单设计器中将解法四制作的表单另存为类 给出类名(应以字母开头)和文件名(即自定义可视类库的名称) 关闭表单设计器 从工具菜单中打开类浏览器 在打开对话框中给出可视类库的文件名 在类浏览器选中类名并从工具按钮中单击查看类代码 将浏览窗口中的代码全部选定 单击复制并关闭类浏览器打开解法五的程序编辑窗口 将光标移至程序最后,单击粘贴。程序设计源代码字段的有效性规则设置举例字段类型 有效性信息 有效性规则“性别只能为男或女“xb=“男“ .OR. xb=“女“ 或: INLIST (xb, “男“,“ 女“) 或: xb$“男
8、女“解析:INLIST()函数和$均可表示字符包含关系字符型“姓名的有效宽度必须4 个字节以上,且首字符必须为汉字”LEN(ALLTRIM(xm)=4.AND.ASC(LEFT(xm,1)127解析:ALLTRIM(xm)去掉 xm 首尾的空格LEN(ALLTRIM(xm)xm 的有效长度LEFT(xm,1)从左取 xm 的第一个字节ASC(LEFT(xm,1)返回姓名的首字节 ASCII 码值,汉字的首字节大于 127,这样可以保证输入的首字符是汉字“年龄在 18 至 22 岁之间“BETWEEN(YEAR(DATE() - YEAR (csrq), 18, 22)或: YEAR (DATE ( ) - YEAR (csrq)=18. AND .YEAR (DATE ( ) - YEAR (csrq)=1960 . AND. YEAR (gzrq)0数值型 “课时数(kss)大于等于 2 并且小于等于 6”BETWEEN(kss,2,6)或:kss=2 .AND. kss=6