VF常用函数.docx
- 文档编号:4057184
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:14
- 大小:23.90KB
VF常用函数.docx
《VF常用函数.docx》由会员分享,可在线阅读,更多相关《VF常用函数.docx(14页珍藏版)》请在冰豆网上搜索。
VF常用函数
常用函数
函数是系统为实现一些特定功能而设置的内部程序,作为系统的一部分供用户使用.VisualFoxpro提供了500多个函数,功能比较强大,为程序设计和软件开发提供了许多方便.
函数的基本形式为:
函数名([<操作数表达式>])
函数的操作有三种情况:
有一部分函数的操作数由系统规定,用户不必输入,此时函数无操作数,其形式为:
函数名();有一部分函数的操作数必须由用户输入;还有一部分函数的操作数可以由用户来指定,如用户不指定,系统就按有关规定给出.对于后两种情况,输入的操作数就相当于一般函数的自变量.VisualFoxpro对每个函数自变量的个数、类型以及函数值的类型都有明确的规定,在使用函数时必须遵循这些规定.学习函数必须掌握它输入输出的数据类型.按VisualFoxpro函数的功能和用途,可将函数分为11大类型:
数值和数学函数、字符型函数、日期时间函数、转换函数、测试函数、数据库和表函数、数组函数、对象特性函数、SQL查询函数、菜单和窗口函数、其它函数。
我们只介绍部分最常用函数。
一、数值和数学函数
该类函数的输入均为数值型。
输出除了其中的确定函数为逻辑型外,其它为数值型。
(一)一般数值函数
(1)取整函数
格式:
INT(<数值表达式>)
该函数返回<数值表达式>的整数部分(舍尾).
(2)向上取整函数
格式:
CEILING(<数值表达式>)
该函数返回不小于<数值表达式>的最小整数。
(3)向下取整函数
格式:
FLOOR(<数值表达式>)
该函数返回不大于<数值表达式>的最大整数。
例:
?
INT(3.14),INT(-3.14),CEILING(3.14),CEILING(-3.14),FLOOR(3.14),FLOOR(-3.14)
3-34-33-4
(4)四舍五入函数
格式:
ROUND(<数值表达式1>,<数值表达式2>)
该函数要求保留小数位。
其具体操作是:
根据<数值表达式2>指定的位数,对<数值表达式1>进行四舍五入操作,最后保留相应的小数位数。
若<数值表达式2>指定的位数为负数,则表示对整数部分舍至第几位,得到的值将尾随<数值表达式2>个零。
例:
?
ROUND(1024.5972,2),ROUND(1024.5972,0),ROUND(1024.5972,-2)
1024.6010251000
(5)取模函数
格式:
MOD(<数值表达式1>,<数值表达式2>)
功能:
返回<数值表达式1>除以<数值表达式2>的余数,如<数值表达式2>为正,则函数值为正,否则为负.表达式自动取整再进行取模运算。
与%相同。
例:
?
MOD(6*8,30/3),MOD(-89,7.5),MOD(89,-7.5),6*8%(30/3),-89%7.5,89%(-7.5)
81-181-1
(6)最大值函数
格式:
MAX(<表达式1>,<表达式2>[,<表达式3>…])
功能:
返回若干表达式中的最大值.表达式可以是各种数据类型,但在同一个函数中的表达式的类型应一致.
(7)最小值函数
格式:
MIN(<表达式1>,<表达式2>[,<表达式3>…])
功能:
返回若干表达式中的最小值.
(8)绝对值函数
格式:
ABS(<数值表达式>)
功能:
返回<数值表达式>的绝对值.
(9)平方根函数
格式:
SQRT(<数值表达式>)
功能:
返回<数值表达式>的算术平方根.<数值表达式>应大于或等于零.
(10)指数函数
格式:
EXP(<数值表达式>)
功能:
返回以e为底的指数值,<数值表达式>为e的指数部分.
例:
?
ABS(30-40),SQRT(64),EXP(0),EXP
(1)
10812.72
(11)符号函数
格式:
SIGN(<数值表达式>)
功能:
根据<数值表达式>的值为正、零、负数分别返回1、0、-1。
例:
?
SIGN(3.2),SIGN(0),SIGN(-3.2)
10-1
(12)随机函数
格式:
RAND(<数值表达式>)
功能:
返回一个0---1.0之间的随机数.<数值表达式>是随机种子.如果<数值表达式>是一个正数,则该数将代替缺省"种子",如果是相同的正数,则产生相同的随机序列;如果<数值表达式>是一个负数,由系统时钟产生"种子".为了获得真正的随机序列,可以在第一个RAND函数中使用负参数,用该数代替缺省"种子",而以后的RAND()不带任何参数.
例:
=RAND(-1)
?
(b-a)*RAND()+a
二、字符型函数
在使用字符型函数时,应注意每一个汉字相当于两个西文字符的位置。
(一)字符串截取函数
该类函数的输出是字符型的.
(1)取消前后空格函数
格式:
ALLTRIM(<字符表达式>)
功能:
去掉<字符表达式>中的前后空格.
(2)删除字符串前导空格函数
格式:
LTRIM(<字符表达式>)
功能:
截去<字符表达式>中左边空格.
例:
?
"计算机"+"应用"&&计算机应用
(3)删除字符串尾部空格函数
格式:
TRIM(<字符表达式>)/RTRIM(<字符表达式>)
功能:
字符串尾部空格.若<字符表达式>全由空格组成,则函数返回空串.
例:
STORE"计算机"TOZ
?
TRIM(Z)+"应用"&&计算机应用
(4)左子串截取函数
格式:
LEFT(<字符表达式>,<数值表达式>)
功能:
截取<字符表达式>最左边的<数值表达式>个字符为一个子字符串.若<数值表达式>的值大于<字符表达式>的长度,则该函数返回整个字符串;若<数值表达式>小于或等于零,则返回空串.
(6)右子串截取函数
格式:
RIGHT(<字符表达式>,<数值表达式>)
功能:
截取<字符表达式>最右边的<数值表达式>个字符为一个子字符串.若<数值表达式>的值大于<字符表达式>的长度,则该函数返回整个字符串;若<数值表达式>小于或等于零,则返回空串.
(6)取子串函数
格式:
SUBSTR(<字符表达式>,<数值表达式1>[,<数值表达式2>])
功能:
截取<字符表达式>的子串.其中,<数值表达式1>指定取子字符的起始位置,<数值表达式2>指定取字符的个数.若缺省<数值表达式2>或其值大于<字符表达式>的长度时,则将截取<数值表达式1>指定的位置起至最后一个字符为止的子串.当<数值表达式1>的值为0时,输出空串.
例:
X="10/14/99"
?
SUBSTR(X,7,2)+"年"+SUBSTR(X,1,2)+"月"+SUBSTR(X,4,2)+"日"
99年12月14日
?
SUBSTR(X,7)&&输出余下所有字符
99
?
SUBSTR(X,0,7)&&输出空串
(二)字符查找和替换函数
(1)子串检索函数
格式:
AT(<字符表达式1>,<字符表达式2>[,<数值表达式>])
功能:
返回<字符表达式1>在<字符表达式2>中第<数值表达式>次出现的位置.若<字符表达式1>不在<字符表达式2>中则返回0,若省略<数值表达式>则隐含为1.其返回值类型为数值型.
例:
STORE"Iamastudent."TOSTR2
STORE"am"TOSTR1
?
AT(STR1,STR2),AT(STR1,"student"),AT("t",STR2,2)
309
(2)表达式计算函数
格式:
EVALUATE(<字符表达式>)
功能:
返回<字符表达式>的值.<字符表达式>是要计算的表达式,可以是一个字符串,一个合法的表达式,内存变量,数组元素或任何数据类型的字段.
例:
X="学生.DBF"
USEEVALUATE('X')
A="9*5"
?
EVALUATE("A")&&9*5变量为字符型
?
EVALUATE(A)&&45相当于执行了命令?
EVALUATE("9*5")
(3)字符串替换函数
格式:
STUFF(<字符表达式1>,<数值表达式1>,<数值表达式2>,<字符表达式2>)
功能:
可用<字符表达式2>修改<字符表达式1>中任一部分.其中,<数值表达式1>指定修改的起始位置,<数值表达式2>为要修改的字符个数.若<数值表达式2>为0,则在<字符表达式1>的<数值表达式1>位置插入<字符表达式2>;若<字符表达式2>为空串,则从<字符表达式1>中自<数值表达式1>起删除<数值表达式2>个字符,而不增加任何字符.所以该函数集修改(替换)、插入、删除功能为一身。
输出类型为字符型。
例:
?
STUFF("南方财经学院",9,4,"大学")&&南方财经大学
?
STUFF("会计凭证",5,0,"记帐")&&会计记帐凭证
?
STUFF("南方财经大学",5,4,"")&&南方大学
(4)字符替换函数
格式:
CHRTRAN(<字符表达式1>,<字符表达式2>,<字符表达式3>)
功能:
在<字符表达式1>中查找<字符表达式2>,如果找到,就用<字符表达式3>来替换.若<字符表达式3>中的字符比<字符表达式2>的字符多,多余的字符被忽略;若<字符表达式3>中的字符比<字符表达式2>的字符少,则后面多余的字符以空表示.
例:
?
CHRTRAN("azbycx=aZbYcX","abc","ABC")
AxByCx=AZBYCX
(5)字符串检索替换函数
格式:
STRTRAN(<字符表达式1>,<字符表达式2>[,<字符表达式3>][,<数值表达式1>][,<数值表达式2>])
功能:
用<字符表达式3>替换<字符表达式1>中出现的<字符表达式2>.其中<数值表达式1>指定替换的起始位置,即第<数值表达式1>次出现<字符表达式2>的位置开始替换,缺省为1.<数值表达式2>指出替换的次数,缺省值为出现几次就替换几次.若找不到就不替换.
例:
STRTRAN("南方工业大学工业系","工业","财经")
南方财经大学财经系
(6)填充字符函数
格式1:
PADL(<表达式>,<数值表达式>[,<字符表达式>])
格式2:
PADR(<表达式>,<数值表达式>[,<字符表达式>])
格式3:
PADC(<表达式>,<数值表达式>[,<字符表达式>])
功能:
分别在<表达式>的左、右、两边填充<字符表达式>,并使结果串长度为<数值表达式>。
缺<字符表达式>,将以空格字符填充。
例如:
PADL("Good",12,"*"),PADC("Good",12,"*"),PADR("Good",12,"*")
********Good****Good****Good********
(三)其它字符函数
(1)数据类型测试函数
格式:
TYPE(<字符表达式>)
功能:
返回<字符表达式>的类型.操作数必须是字符型的,即必须将参数用定界符括起来.TYPE()函数的参数可以是表达式,它先计算表达式的值,最后返回一个指示该表达式类型的单个字母.
例:
?
TYPE("10+8")&&N数值型,包括浮点、双精度、整型
?
TYPE(".F.OR.T.")&&L逻辑型
?
TYPE("DATE()")&&D日期型
?
TYPE("DATETIME()")&&T日期时间型
?
TYPE("‘ABC123’")&&C字符型
?
TYPE("ABC123")&&U未定义,表示参数有错,无法返回正确类型
OOLE对象M备注型G通用型Y货币型
(2)字符串长度函数
格式:
LEN(<字符表达式>)
功能:
返回<字符表达式>的长度。
例:
LEN(“Thisisabook.”)&&15
LEN(SUBSTR("首都师范大学",0,10))&&0
(3)子串个数测试函数
格式:
OCCURS(<字符表达式1>,<字符表达式2>)
功能:
返回<字符表达式1>在<字符表达式2>中出现的次数.
例:
OCCURS("is","Thisisanexample.")&&2
(4)空格函数
格式:
SPACE(<数值表达式>)
功能:
输出<数值表达式>个空格.输出类型为字符型.
(5)字符重复函数
格式:
REPLICATE(<字符表达式>,<数值表达式>)
功能:
将<字符表达式>重复<数值表达式>次.输出类型为字符型.
例:
?
REPLICATE("*",10)&&**********
三、日期时间函数
(1)系统时间函数
格式:
TIME(<数值表达式>)
功能:
以hh:
mm:
ss形式返回当前系统时间.如果包含有<数值表达式>,则返回的时间精确到百分之几秒,<数值表达式>可以是任何值.输出值的类型为字符型.
例:
?
TIME()&&14:
18:
23
?
TIME(6)&&14:
18:
56:
23
(2)日期函数
格式:
DATE()
功能:
返回当前系统日期.返回日期的格式与日期格式设置函数有关.输出类型为字符型.
例:
?
DATE()&&10/18/99
(3)日期时间函数
格式:
DATETIME()
四、宏代换函数
格式:
&<字符型内存变量>[.<字符表达式>]
功能:
替换出字符型内存变量的值。
例:
STORE"GZ.DBF"TOX
USE&X
宏代换的作用范围是从符号"&"起,直到遇到一个圆点符"."或空白为止.所以,要在宏代换后面再加入其它字符,可用圆点符"."将他们分开.
例:
H=“GZ”
USE&H..DBF&&变量H后第一个点是&函数的分隔符.
五、转换函数
(1)字母大小写换函数
格式:
UPPER/LOWER(<字符表达式>)
功能:
将<字符表达式>中所有小/大写字母转换为大/小写字母.
例:
?
LOWER("PersonalComputer"),UPPER("PersonalComputer")
personalcomputerPERSONALCOMPUTER
(2)字符型转换为日期型函数
格式:
CTOD(<字符表达式>)
功能:
将字符型日期转换成日期型日期.字符表达式的有效输入范围为"1/1/100"到"12/31/9999".输出值的类型为日期型.
例:
?
CTOD("10/18/99")&&10/18/99
(3)日期型转换为时间型函数
格式:
DTOC(<日期表达式>[,1])
功能:
把日期型日期转换为字符型日期.加选择参数1,则输出格式转换为年、月、日,年份为4位。
输出值的类型为字符型。
例:
?
DTOC(DATE())&&10/18/99
?
DTOC(DATE(),1)&&19991018
(4)字符转换为ASCII码
格式:
ASC(<字符表达式>)
功能:
返回<字符表达式>中首字符的ASCII码十进制数..输出值的类型为数值型.
例:
?
ASC("APPLE"),ASC("apple")&&6597
(5)ASCII码转换为字符
格式:
CHR(<数值表达式>)
功能:
把<数值表达式>的值转换为相应的ASCII码字符.输出值的类型为字符型.
例:
?
CHR(98)&&b
该函数可以用来实现控制字符的转换.例如,下面的命令可以使喇叭连续发三声:
?
CHR(7)+CHR(7)+CHR(7)
(6)数值型转字符型函数.
格式:
STR(<数值表达式1>[,<数值表达式2>[,<数值表达式3>]])
功能:
将<数值表达式1>转换为字符型数据,<数值表达式2>是转换的长度,<数值表达式3>指定小数位数.缺省<数值表达式2>转换整个长度,缺省<数值表达式3>不转换小数位.输出值的类型为字符型.
例:
?
STR(156.73,6,1)&&156.7
?
STR(12345.478,4,2)&&****当<数值表达式2>的值小于<数值表达式1>的整数位数时,转换溢出.
(7)字符转换数值函数
格式:
VAL(<字符表达式>)
功能:
将字符型数据转换为数值型数据.其输入为字符型数据,输出为字符型数据.字符串中可转换部分从第一个数字字符开始到非数字字符为止的数字串,可以包含符号.函数值的小数位由SETDECIMALTO命令决定,默认值为2.输出值的类型为数值型.
例:
?
VAL("134ABCD576.235")&&134.00
?
VAL("-657.5326")&&-657.53
?
VAL("ABDC236")&&0.00
SETDECIMALTO3
?
VAL(“-657.5326”)&&-657.533
五、数据库和表函数
(一)字段处理函数
(1)字段数函数
格式:
FCOUNT([<工作区号>/<别名>])
功能:
返回指定工作区中打开表的字段数.若指定的工作区中没有打开的表,则返回0.输出值的类型为数值型.
例:
USE学生
?
FCOUNT()&&显示学生表的字段数
(2)字段名函数
格式:
FIELD(<数值表达式>[<工作区号>/<别名>])
功能:
返回指定工作区中第<数值表达式>个字段的名字.输出值的类型为字符型.
例:
USE学生
?
FIELD
(1)&&学号
(3)字段长度函数
格式:
FSIZE(<字段名>[<工作区号>/<别名>])
功能:
返回指定工作区中指定字段的长度.输出值的类型为数值型.
例:
USE学生
?
FSIZE("姓名")&&8
(4)求备注字段内容的行数
格式:
MEMLINES(<备注字段名>)
功能:
返回当前记录中指定的备注字段内容所站的行数.输出值的类型为数值型.
(5)求备注字段某行内容
格式:
MLINE(<备注字段名>,<数值表达式1>[,<数值表达式2>])
功能:
返回当前记录指定的备注字段名中的<数值表达式1>行且自<数值表达式2>开始的内容,备注文件内容每行从0开始编号.输出值的类型为字符型.
(二)记录处理函数
(1)表起始/结束测试函数
格式:
BOF/EOF([<工作区号>/<别名>])
功能:
测试表文件开始/结束状态,并返回一个逻辑值.当把记录指针移到表文件的第一条/最后一条逻辑记录位置之前/之后时,该函数为.T.,否则返回.F.。
(2)删除函数
格式:
DELETED([<工作区号>/<别名>])
功能:
若当前记录已作删除标记,则返回.T.,否则返回.F.
例:
USE工资
DELETERECORD3
?
DELETED()&&.T.
(3)记录数测试函数
格式:
RECCOUNT([<工作区号>/<别名>])
功能:
返回指定工作区中表文件的记录总数.若指定工作区中没有打开的表文件,则函数值为0.
例:
USE工资
?
RECCOUNT()&&显示工资表的记录数
(4)记录号测试函数
格式:
RECNO([<工作区号>/<别名>])
功能:
返回指定表中当前记录号.若指定的工作区中没有打开的表文件,则函数值为0;若是一个空表,则RECNO()=1且EOF()=.T.;若记录指针移到表的最后一条记录后面,则得到比最后一条记录的记录号大1的值;若记录指针移到表的第一条记录前,函数值为1.
六、测试函数
1.光标行/列坐标测试函数
格式:
ROW()/COL()
功能:
返回当前光标所在的行坐标或列坐标.输出值的类型为数值型.
2.鼠标行/列坐标测试函数
格式:
MROW([<字符表达式>])/MCOL([<字符表达式>])
功能:
返回当前鼠标指针所在的行坐标或列坐标.输出值的类型为数值型.
说明:
<字符表达式>为窗口名称,若缺省且没有活动的用户自定义窗口,则返回的值时相对整个屏幕的;如果<字符表达式>缺省,但有活动的用户自定义窗口,则返回的值是相对该活动窗口的;如果鼠标驱动程序没有安装,则返回的值均为-1.
3.文件测试函数
格式:
FILE(<字符表达式>)
功能:
测试指定的文件是否存在.文件名必须包含扩展名.若存在,返回.T.,否则返回.F.
4.磁盘可用空间测试函数
格式:
DISKSPACE()
功能:
返回当前驱动器上磁盘可用字节数.
5.条件函数
格式:
IIF(<逻辑表达式>,<表达式1>,<表达式2>)
功能:
当<逻辑表达式>的值为.T.时,返回<表达式1>的值;当<逻辑表达式>的值为.F.时,返回<表达式2>的值.
例:
NUM=10
?
IIF(NUM>9,STR(NUM,2),STR(NUM,1))&&10
6.环境设定函数
格式:
SET(<字符表达式>[,1])
功能:
返回开关的状态(ON或OFF)和设置命令所设置的值.其中<字符表达式>是SET命令组中各条命令的关键字,因有些命令在SET命令关键字ON/OFF和SET命令关键字TO…两个命令形式中有相同的命令关键字,为了区别这种情况,在需要返回SET命令关键字TO…设置时,在SET函数中加参数1.
例:
?
SET("CLOCK")&&OFF
?
SET("BELL")&&ON
?
SET("CURRENCY")&&LEFT
?
SET("CURRENCY",1)&&$
七、数组函数
该类函数均返回数值型。
(1)数组复制函数
格式:
ACOPY(<源数组名>,<目标数组名>[,<数值表达式1>[,<数值表达式2>[,<数值表达式3>]]])
功能:
将源数组中的元素一对一地复制到目标数组中去,源数组中的元素将替换目标数组的元素.如目标数组不存在,VisualFoxpro将自动创建与源数组大小相同的目标数组.该函数返回复制到目标数组中的元素个数.
说明:
<数值表达式1>指定源数组中第一个被复制元素的编号,复制从此元素开始(包含此元素).如果缺省<数值表达式1>,则从源数组的第一个元素开始复制.<数值表达式2>指定复制的源数组的元素数目,如果其值为-1,则从元素<数值表达式1>开始,复制源数组中所有的元素.<数值表达式3>指定目标数组中第一个被替换的元素编号.
例:
?
ACOPY(A1,A2,1,10,11)&&将数组A1的前10个元素分别复制到数组A2的11到20元素中
(2)寻找数组内容函数
格式:
ASCAN(<数组名>,<表达式>[,<数值表达式1>[,<数值表达式2>]])
功能:
在数组中搜索与<表达式>匹配,有相同数据和数据类型的元素。
其中,<数值表达式1>是搜索开始元素的序号,<数值表达式2>是搜索元素的数目,如果两者都缺省则从头到尾搜索整个数组.如果找到一个匹配元素,则返回包含表达式的元素的序号,否则返回0。
(3)删除数组内容函数
格式:
ADEL(<数组名>,<数值表达式>[,2])
功能:
从一个一维数组里删除
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VF 常用 函数