VFP表达式及运用_第1页
VFP表达式及运用_第2页
VFP表达式及运用_第3页
VFP表达式及运用_第4页
VFP表达式及运用_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2

章VFP表达式及应用

吉林大学计算机教学与研究中心Welcome!第2章VFP表达式及应用数据是程序加工处理的对象。

VisualFoxPro中常用数据的四种形式:常量、变量、表达式和函数。每一个数据都有一定的类型,数据类型决定了数据的存储方式和运算方式。数值型数据(N),用来表示一个数量的大小,能参与算数运算的数据。数值型常量:由数字0~9、小数点与正负号组成。

也可以用科学记数法形式书写。2.1.1数值型数据例如:23,-153,123.48例如:2.34E+4,3.6E-3234000.0036字符型数据(C),由英文字母、汉字或数字等可显示的符号组成的一串字符。2.1.2字符型数据(1)字符型常量:用半角单引号、双引号或方括号作为定界符把字符串括起来。例如:我是学生,定界符必须成对匹配,并不作为字符串本身内容。“IStudyVFP”,‘’“”[]字符串长度是指字符串中所含字符的个数

。当某种定界符是字符串中的内容,必须用另一种定界符作为标志。例如:“Windows2000”操作一个半角字符长度为1,一个汉字或全角字符长度为2。如:[2008北京奥运]2.1.2字符型数据(2)‘’[]2.1.3货币型数据货币型数据(Y),一种特殊的数值型数据,用来表示货币值。货币型常量:在数值前加货币符号$。

货币型数据在存储和计算时,保留4位小数。例如:123.456货币型数据不能用科学记数法表示。$例如:$-12.45369存储为$-12.4537。2.1.4日期型数据日期型数据(D),用来表示某一个日期。日期型常量:定界符为{},其中包含年、月、日三部分内容,各部分内容之间用分隔符分隔。例如:{2007.10.1},{07/10/02},{09-12-2007}设置传统/严格日期格式(1)日期型常量有传统和严格两种输入格式。VFP6.0默认使用严格日期格式。

传统日期格式:系统默认的日期型数据为美语日期格式{mm/dd/yy}

例如:{02/10/07}严格日期格式:

格式为:{^yyyy-mm-dd}或{^yyyy/mm/dd}

例如:{^2007/10/01},{^2009-12-02}命令格式:SetStrictdateTo

0|1

默认值为1设置传统/严格日期格式(2)例:?{07/10/08}&&此命令能否执行??{^2008/07/10}SetStrictdateTo0?{07/10/08}&&此命令能否执行??{^2008/07/10}SetStrictdateTo1?{07/10/08}&&此命令能否执行??{^2008/07/10}设置日期分隔符命令格式:

例2.2:SetMarkTo<字符表达式>

SetDateAnsiSetCenturyOnSetMarkTo”-”?{^2007/10/01}SetMarkTo[.]?{^2007/10/01}SetMarkTo‘W’?{^2007/10/01}SetMarkTo?{^2007/10/01}2.1.5日期时间型数据日期时间型数据(T),表示日期和时间。日期部分也有传统和严格两种格式。AM(或A)和PM(或P)分别表示上午和下午。日期时间型常量:定界符为花括号{},其中由日期和时间两部分内容组成。例如:{10/01/078:18:30},{^2007-10-18:18:30P}2.1.6逻辑型数据逻辑型数据(L),表示逻辑判断的结果。逻辑型常量只有逻辑真和逻辑假两个值。逻辑真为:

.T.,.t.,.Y.,.y.

。表示方法:逻辑假为:

.F.,.f.,.N.,.n.。2.2简单内存变量内存变量存储在内存中,用来暂时存放程序执行中的原始数据或中间结果。内存变量字段变量变量变量:在命令或程序执行过程中其值可以变化的量。简单变量数组变量内存变量名由字母、汉字、数字或下划线组成,不能以数字开头。例如:X,

姓名,

_No是正确变量名1月工资,

$12.3,a+b是非法变量名2.2简单内存变量若内存变量与当前表中的字段(变量)重名,在引用内存变量时,需要加前缀“M.”或“M->”;不加前缀,字段变量优先。在VFP中,允许内存变量和字段变量同名。例如:M.xh是内存变量xh系统优先查找字段变量,未找到则查找内存变量。2.2.1内存变量赋值命令格式1:<内存变量名>=<表达式>命令格式2:

Store<表达式>To<内存变量名表>内存变量在使用前必须先赋值,变量的类型取决于变量值的类型。例2.4:M=“男”Store2*3ToX,Ya=b=5变量M此时为字符型=6变量X和Y此时为数值型不能完成同时给a,b赋值5的操作。2.2.2内存变量的清除命令格式1:ClearMemory命令格式2:Release<内存变量名表>内存变量使用完毕,应从内存中清除,以便释放其占用的内存空间。命令格式3:ClearAll命令格式4:ReleaseAll[Like<变量名通配符>|Except<变量名通配符>]2.2.3输出表达式的值通过VFP命令输出表达式的值(即运算结果)。命令格式2:??[<表达式表>]例2.7:?‘总成绩’,62+20??”分”命令格式1:?[<表达式表>]说明:先计算<表达式表>中每个表达式的值,再依次输出这些值。格式1从下一行开始位置输出计算结果。格式2从当前位置开始输出计算结果。表达式是运算符连接常数、变量和函数等运算对象所构成的运算式。运算符是对数据进行操作的符号。

表达式的运算结果称为表达式的值,根据表达式值的数据类型可分为数值表达式、字符表达式、日期表达式、关系表达式和逻辑表达式。在VFP中只有同类型的数据(除日期与数值运算外)才能进行运算。2.3数值型表达式2.3.1数值运算符X+Y-1X+Y-1加、减+、-42/((3*X+1)/(X-1))2÷

乘、除、求余*、/、%3X^3或x**3X3乘方**或^2-(+X)-(+X)取正负+、-1转换成VFP表达式数学表达式说明算术运算符优先级别113-+XX例如:?-3**4?15%4,15%-4,-15%4,-15%-42.3.2常用数值型函数(1)函数是用程序来实现的一种数据运算或转换,函数往往需要若干个自变量,即运算对象,但只能有一个运算结果,称为函数返回值。

例如:?MAX(3,-6,70+6**2,100)函数名,用来求最大值自变量(参数),操作对象经过计算得到函数返回值,1062.3.2常用数值型函数(2)求平方根函数

格式:

Sqrt(<N>)

例如:X=-100?Sign(X)*Sqrt(Abs(X))求余函数

格式:

Mod(<N1>,<N2>)例如:?Mod(8,3),Mod(-8,3),Mod(8,-3)功能等价:

<N1>%<N2>2.3.2常用数值型函数(3)例如:?Max(8,-2*3,10,3),Min(8,-2*3,10,3)?Max(‘A’,’B’,’C’),max(.f.,.T.,.n.)?Min($200,$100,$300)

?Max(‘21’,‘3’)求最大值和最小值函数

格式:

Max(<表达式表>)

Min(<表达式表>)说明:

各表达式数据类型必须一致。求整函数说明:

Int函数值是数值表达式的整数部分例:Store5.8ToX?Int(X)?Int(-X)格式:

Int(<N>)2.3.2常用数值型函数(4)格式:

Round(<N1>,<N2>)说明:此函数对<N1>进行四舍五入,<N2>用于指明四舍五入的位置。N2>0,保留小数位数;N2<0,舍入至整数部分。例如:X=345.456?Round(X,2),Round(X,1)??Round(X,0),Round(X,-1)四舍五入函数2.3.2常用数值型函数(5)2.3.2常用数值型函数(6)求ASCII码值函数

格式:

Asc(<C>)例如:?Asc(“EnglishAbc”)求字符串长度函数

格式:

Len(<C>)

例如:X=“中文Visual︼FoxPro6.0”?Len(X)格式:At(<C1>,<C2>[,<N>])例:?AT('AR','cadARA')?AT('Aa','cadAARA'),AT('A','cadARA‘,2)说明:此函数用于返回C1在C2中的位置。若返回值为0,则表示C1不在C2中。

N用于指定C1在C2中第几次出现,默认为1求子串起始位置函数2.3.2常用数值型函数(7)2.3.2常用数值型函数(8)求年份、月份、日数函数

格式:

Year(<D>)Month(<D>)Day(<D>)例如:Store{^2007-08-18}ToD?Year(D),Month(D),Day(D)+1002.3.2常用数值型函数(9)字符转换成数值函数

格式:

Val(<C>)例如:?Val(“-2”)*3,Val(“1.23a56”)*2?Val(“1.2E1”)*3,Val(“A123”)说明1:将字符型数据C,从左至右的顺序,将数字字符转换为相应数值型数据,遇到非数字即停;若C的首字符为非数字,则返回值为0。2.4字符型表达式字符表达式是字符运算符将字符型数据连接起来,运算结果仍是字符型数据。

字符运算符:

+和-+:将两个字符型数据依次连接起来。-:先将第一个字符型数据的尾部空格移动到第二个字符型数据的尾部,再依次连接成一个新的字符型数据。例:X1=’ABC’X2=’DEFG’?X1+X2?X1-X22.4.2常用字符型函数(1)生成空格函数

格式:

Space(<N>)删除空格函数格式:Ltrim(<C>)Rtrim(<C>)Trim(<C>)Alltrim(<C>)例如:?Ltrim('︼成︼绩︼')?Trim('︼成︼绩︼'),Alltrim('︼成︼绩︼')例如:?’VFP’+Space(3)+’6.0版’?Len(Space(7)-Space(2))

2.4.2常用字符型函数(2)取左子串函数

格式:

Left(<C>,<N>)取右子串函数

格式:

Right(<C>,<N>)

例如:?Left(“VFP6.0”,3)例如:?Right(“吉林大学”,4)2.4.2常用字符型函数(3)取任意子串函数

格式:

Substr(<C>,<N1>[,<N2>])说明:若缺省<长度>,则函数从指定位置一直取到最后一个字符。例如:Store“GoodBye!”ToX?Left(X,2),Substr(X,6,2)+Substr(X,6)

,Right(X,3)大小写字母转换函数

格式:

Lower(<C>)

Upper(<C>)

例如:?Lower(”英语2AbC”)?Upper(”英语2AbC”)数值转换成字符函数格式:

Str(<N1>[,<N2>[,<N3>]])说明1:将<N1>的值转换成字符串,转换时根据需要自动进行四舍五入。说明2:<N2>默认值为10,<N3>默认值为0。例如:N=-123.456?Str(N,8,3),Str(N),Str(N,9,2),Str(N,6,3),Str(N,3)例如:M=123456789.983?Str(M,12,3),Str(M,7,3),Str(M,5,3)数据类型函数格式:

Type(’<表达式>’)说明1:Type函数将字符常数的内容作为表达式测试。例如:?Type('123.4'),Type("[123.4]"),Type([$123.4])M=”A”N=1K=3?Type('M'),Type("N"),Type([M+N])?Type([K])2.5日期及日期时间型表达式日期型(时间)表达式是日期(时间)运算符连接日期(时间)或数值型数据所构成的运算式,运算结果可能是日期(时间)或数值型数据

日期运算符:

+和-日期与数值计算:<日期表达式>±<数值表达式>

日期与日期运算:<日期表达式>-<日期表达式>例如:?{^2007-05-04}-{^2006-05-04}?{^2005-05-04}-{^2005-05-06}例如:?{^2008-09-10}+1,{^2008-09-10}-12.5.3常用日期型函数系统日期函数

格式:

Date()例如:?Date()?”今天日期是”+Date()Dtoc()2.6关系表达式关系表达式采用关系运算符将同类型数据连接起来进行比较,结果为逻辑型数据。关系运算符运算符说明运算符说明>大于>=大于或等于<小于<=小于或等于<>、!=或#不等于=等于==字符精确相等$子串包含各类型数据的比较规则数值型和货币型数据比较:日期和日期时间型数据比较:逻辑型数据比较:例如:.F.<=.T.按数值的大小比较。例如:0>-1$105<$200越早的日期或时间越小,越晚的日期或时间越大。例如:{^2008-01-20}>{^2000-12-30}逻辑真大于逻辑假。2.6.1字符型数据的比较规则字符型数据比较方法:字符排序一般规则:当比较两个字符串时,系统对两个字符串的字符从左向右逐个进行比较,一旦发现两个对应字符不同,就根据这两个字符的排序序列决定两个字符串的大小。数字<

英文字母<汉字例如:‘312’<‘5’‘Bad’>‘Back’“GoodMorning!”<[早上好!]字符串精确比较与Exact设置运算符单等号=:用单等号运算符=,比较两个字符串时,分为精确比较和非精确比较,默认的为非精确比较。例如:SetExactOn?'BAG'='BAG︼','COM︼︼'='COM︼'格式:

SetExact

On|Off

单等号精确比较规则对进行比较的两个字符型数据去掉尾部空格后形成的字符串自左向右按对应字符进行比较。精确

非精确字符串精确比较与Exact设置单等号非精确比较规则对两个字符型数据(含空格)进行非精确比较,如果运算符(=)右侧整个数据是左侧数据的首部子串,或两个数据完全相同,则运算结果为逻辑真。例如:SetExactOff?'BEE'='BE','BAG'!='BAG︼','李明'='李'运算符双等号==:运算符“==”不受SetExact状态影响,它要求两个字符串(包含空格)必须完全一致,运算结果才是真(.T.)。例如:'BEE'=='BEE'VFP的“排序次序”对字符串比较结果有影响。

方法一:

“工具”菜单→“选项”→“数据”选项卡→“排序序列”方法二:命令

2.6.2字符型数据的“排序次序”SetCollateTo

“Machine”|“Pinyin”|“Stroke”机内码

拼音

笔划2.6.2字符型数据的“排序次序”Machine(机内码)顺序:

'︼'<'0'<'1'…<'9'<'A'<'B'…<'Y'<'Z'<'a'<'b'…<'y'<'z'<'<汉字>'≠Pinyin(拼音)顺序:

'︼'<'0'<'1'…<'9'<'a'<'A'<'b'<'B'…<'y'<'Y'<'z'<'Z'<'<汉字>'≠Stroke(笔划)顺序:

'︼'<'0'<'1'…<'9'<'a'<'A'<'b'<'B'…<'y'<'Y'<'z'<'Z'<'<汉字>'。汉字依据书写笔划的多少排序,笔划少的汉字小。

2.6.3子串包含运算格式:

<字符表达式1>$<字符表达式2>)说明:若<字符表达式1>的值是<字符表达式2>值的子串,即<字符表达式2>的值完整地包含<字符表达式1>的值,则运算结果为逻辑真(.T.);否则运算结果为逻辑假(.F.)。

AT(<字符表达式1>,<字符表达式2>)>0例如:X="VFP6.0中文版"?'VFP中文版'$X,'VFP6.0'$X功能等价:

2.7逻辑表达式逻辑表达式是逻辑运算符连接逻辑型数据构成的运算式,运算结果仍然是逻辑型数据。

逻辑运算符:优先级别逻辑运算符说明1.Not.Not!非运算2.And.And与运算3.Or.Or或运算逻辑表达式格式[逻辑型表达式1]<逻辑运算符><逻辑型表达式2>真值表AB.NOT.AA.AND.BA.OR.B.T..F..T..T..T..T..F..F..F..T..F..F..F..T..T..T..T..F..F..F.举例:例1:?.Not..F.?.NOT.2>3,!“a”<”ab”例2:A=1B=2?A=1AndB<3?A>0AndB>5?A>2.And.B<3?A>2.And.B>3例3:

X=5?X>0ANDX<=10例4:Name=‘张大伟’?’张’$Name.Or.’伟’$Name例5:?12>2.And.‘人’=‘人民’.Or..T.<.F.?(10>3And(15%2=0))Or‘电脑’!=‘计算机’例6:N=5M=N=10?M,N2.7.2常用逻辑型函数字母函数

格式:

Isalpha(<C>)例如:?Isalpha(“A12b34cd”)??Isalpha(”1a”),Isalpha(”*1a”)文件存在函数格式:File(<C>)例如:?File(“D:\XSA.DBF”),File(“D:\XSA”)?File(‘D:\XSB.DBF')2.7.2常用逻辑型函数测试值域函数格式:Between(<表达式1>,<表达式2>,<表达式3>)

例如:?Between(2+5,2*3,4*3)?Between(Date(),Date()-1,Date()+1)等价于:<表达式1>>=<表达式2>

And;<表达式1>

<=

<表达式3>

2.7.3表达式综述在VFP的同一个表达式中,允许含有多种运算符。各类运算符的优先级别由高到低依次为:数值运算、字符运算、日期运算和日期时间运算同级别;关系运算;逻辑运算。例如:M=5N='ABC'?!(M-2)*2>5Or'D'+N=='ABC'AndM>32.8宏替换及其使用格式:

&<字符型内存变量>[.]说明:1、用字符型内存变量的值替换整个宏替换函数所在的位置。2、.为&变量与其后内容的分界符。举例例1:X=‘25’Y=‘5’?X+Y?&X+&Y例2:A=‘吉林大学’B=‘A’?B,&B255A例3:

X=“5”Y=“8*”?&Y.&X8*5作为变量名的一部分例:XH1="202"N=”1”?XH&N作为常量的一部分例:X="大学"?"吉林&X"大学12.8宏替换及其使用作为表达式的一部分例如:X="2”Y="3/"Y5=”Z”Z=2+4?1+&X*3?&Y.&X?Y5

?&Y5

?&Y51+2*33/2Z3/5空格起来分隔作用,同.2.8宏替换及其使用替换文件名替换一条命令

例如:X="?Date()"&X例如:Accept"请输入表名:"ToBMUse&BM

2.9对话框函数格式:

Messagebox(<C1>[,<N>[,<C2>]])说明:定义带按钮和图标的对话框,函数返回值由用户选择的按钮而定。<C1>:设置对话框中要显示的信息。<N>:用于说明对话框类型。按钮编码+图标编码+默认按钮编码例如:?Messagebox("请关闭电源",1+48+256,"警示")<C2>:设置对话框的标题。2.10数组及其使用数组是内存中连续的一片存储区域,是一组变量名相同而下标不同的内存变量。其中每个内存变量称为数组元素,简称元素。X(1)X(2)X(3)X(4)A1Y(1,1)Y(1,2)Y(1,3)Y(2,1)Y(2,2)Y(2,3)格式:

Dimension<数组名1>(<m1>[,<n1>])[,<数组名2>(m2[,n2])…]Declare<数组名1>(<m1>[,<n1>])[,<数组名2>(m2[,n2])…]说明:1、数组必须先定义后使用,最多可定义65000个数组,每个数组中最多可包含65000个元素2、数组名的命名规则同内存变量的命名规则3、mi、ni为数组下标,是从1开始的正整数4、数组元素的个数由行下标和列下标决定。2.10.1定义数组2.10.1定义数组说明:5、未给数组元素赋值前,其初始值为.F.6、各数组元素所存储的数据类型可不相同,其类型可为N,C,L,D

例如:DimensionX(3),Y(2,3)X(1)X(2)X(3)X(4)12ABC.T..F.Y(1,1)Y(1,2)Y(1,3)Y(2,1)Y(2,2)Y(2,3)Y(1)Y(2)Y(3)Y(4)Y(5)Y(6)X(1)X(2)X(3)X(4).F..F..F..F.2.10.2使用数组元素数组元素引用格式:

<数组名>(<行下标>[,<列下标>])

数组的赋值命令格式同内存变量的赋值命令。说明:

在对数组名赋值时,将为数组中每个元素赋相同的值。说明:

仅引用数组名时,实际上是引用数组中的第1个元素。如:X(1),Y(2,3),Y2.10.2使用数组元素例1:DimensionB(2,2)B[1,1]=7B[1,2]={^2008-05-01}B(2,1)=B(1,1)+B(1,2)?B[2,1]?B(4)B(1,1)B(1,2)B(2,1)B(2,2).F..F..F..F.2008/05/012008/05/087例2:DIMENSIONX(4)STORE1TOXX=”A”STORE.T.TOX(1,1)X(4)={12/20/98}

X(1)X(2)X(3)X(4).F..F..F..F.1111AAAA1998/12/20说明:1、赋值命令中仅出现数组名时,则表示将同一个值赋给数组的

所有元素

2、赋值命令中以带下标的形式出现,则表示给数组中指定的元素赋值.T.2.11内存变量管理查看内存变量格式1:

ListMemory[Like<变量名通配符>][ToPrinter][ToFile<文件名>]

说明:当显示的内容较多时,Display每显示一屏后暂停,按任意键后继续输出下一屏;list无暂停。

格式1:

DisplayMemory[Like<变量名通配符>][ToPrinter][ToFile<文件名>]

例如:ClearMemoryX=”张明”X1={^1990/12/01}X12=.F.DimensionXS(2,2)XS(1)=”2003010”XS(4)={^1990/12/01}Y=$1234.56DisplayMemoryLikeX*2.11.1查看内存变量2.11.2保存内存变

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论