第2章VFP表达式及应用Word格式文档下载.docx
《第2章VFP表达式及应用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《第2章VFP表达式及应用Word格式文档下载.docx(41页珍藏版)》请在冰豆网上搜索。
”明天交作业”’和[“Windows”操作]。
字符串长度是指字符串中所含字符的个数(1个半角字符长度为1,1个汉字或全角字符长度为2)。
字符串常数”说:
'
What'
”的长度为9。
2.1.3 货币型数据
货币型数据作为一种特殊的数值型数据,用来表示货币值。
其数据类型用符号Y表示。
货币型常数是在数值前加货币符号$,如:
$12.34。
货币型常数在存储和计算时,系统自动保留4位小数,小数多于4位时四舍五入。
$123.456789将自动存储为$123.4568。
货币型数据在内存中占8个字节,取值范围为-922337203685477.5807~922337203685477.5807。
与数值型数据不同,货币型常数不能用科学计数法表示。
2.1.4日期型数据
日期型数据可表示某一个日期。
数据类型用符号D表示,占8个字节,取值范围为:
0001年1月1日~9999年12月31日。
日期型常数用一对大括号“{}”括起来,其中包含年、月、日三部分内容,各部分内容之间可以用斜杠(/)、连字号(-)、小数点(.)或空格等进行分隔。
1.设置传统/严格日期格式
日期型常数有传统和严格两种格式。
传统的默认格式是美语日期格式{mm/dd/yy}。
传统格式受命令SetDate和SetCentury的影响。
不同设置状态,VFP对同一个日期型常数的解释不一样。
如:
对日期型常数{08/10/01},VFP可能认为是2008年10月1日或2001年8月10日。
严格日期格式为{^yyyy-mm-dd}或{^yyyy/mm/dd}。
用符号“^”作为严格日期常数的开始符号,年月日的次序不能改变,年份必须为4位,它不受命令SetDate和SetCentury命令的影响,在任何情况下都表示唯一确切的日期。
两种日期常数格式可通过命令进行设置:
命令格式:
SetStrictdateTo0|1
命令说明:
设置传统日期格式(0)或严格日期格式
(1)。
【例2.1】
SetStrictdateTo0&
&
设置成传统日期格式
SetDateAnsi
SetCenturyOn
X={07.10.01}&
X赋值成:
2007年10月1日
?
X&
输出结果为:
2007.10.01
SetStrictdateTo1&
设置成严格日期格式
Y={^2008/10/01}&
Y赋值成:
2008年10月1日
Y&
2008.10.01
2.设置日期分隔符
SetMarkTo<
字符表达式>
设置显示日期时的分隔符。
字符表达式值中的首字符为分隔符。
若省略<
,则恢复系统默认的分隔符。
【例2.2】
SetDateANSI
SetMarkTo“–”
{^2007/10/01}&
2007-10-01
SetMarkTo[.]
SetMarkTo‘w’
2007w10w01
SetMarkTo
输出默认的分隔符,结果为:
3.设置世纪值
SetCenturyTo<
世纪值>
Rollover<
年份参照值>
世纪值范围为1~99,年份值范围为0~99。
此命令仅对两位年份的日期有影响。
执行此命令后,设某日期数据为MM/DD/YY,当YY≥年份参照值时,系统将该日期数据视为:
MM/DD/世纪值*100+YY;
当YY<
年份参照值时,系统将该日期数据视为:
MM/DD/(世纪值+1)*100+YY。
【例2.3】
SetDateANSI
SetCenturyTo19Rollover10
SetMarkTo"
."
Ctod(“49.10.01”)&
由于年份值49>
年份参照值10,输出:
1949.10.01
Ctod(“09.10.01”)&
由于年份值09<
2009.10.01
2.1.5日期时间型数据
日期时间型数据表示日期和时间,其数据类型用符号T表示。
日期时间型数据占8个字节。
日期时间型常数由日期和时间两部分组成,日期部分取值范围为0001年1月1日至9999年12月31日,时间部分为00:
00:
00Am至11:
59:
59Pm。
日期部分也有传统和严格两种格式。
系统默认采用严格的日期时间格式:
{^yyyy-mm-dd[,]hh:
mm:
ss[a|p]},日期和时间之间可以用逗号或空格分隔,a(或AM)表示上午;
p(或PM)表示下午,默认是AM。
{^2008-8-18:
18:
30}表示2008年8月1日上午8点18分30秒。
30P}表示2008年8月1日下午8点18分30秒。
2.1.6逻辑型数据
逻辑型数据用来表示逻辑判断的结果,比如条件成立与否,事物的真或假、是与非等。
其数据类型用符号L表示,逻辑型数据占1个字节。
逻辑型常数只有真和假两种值。
用.T.、.t.、.Y.或.y.表示真;
用.F.、.f.、.N.或.n.表示假。
作为逻辑型常数定界符的前后小数点“.”不能省略。
2.2简单内存变量
变量分为内存变量和字段变量两类。
内存变量又分为简单变量和数组变量两类。
内存变量存储在内存中,用来存放程序执行中的原始数据或中间结果。
内存变量名由字母、汉字、数字或下划线组成,不能以数字开头。
如X、年龄和_No都是内存变量名。
而1月工资、$12.3和a+B不是正确的内存变量名。
在VFP中,允许内存变量和字段变量同名,如果内存变量与当前表中的字段(变量)出现重名,在引用内存变量时,需要加前缀“M.”或“M->
”,明确指出内存变量。
如果不加前缀,将引用同名字段变量的值。
M.姓名表示引用内存变量姓名的值。
2.2.1内存变量赋值
使内存变量有确切值的操作称为内存变量赋值。
在VFP中,使用内存变量前必须先赋值。
通过赋值命令为内存变量首次赋值时,就创建(定义)了内存变量,既规定了变量名,又指定了变量的值。
所赋值的数据类型决定了内存变量的数据类型。
有许多为内存变量赋值的命令,典型的命令有:
命令格式1:
<
内存变量名>
=<
表达式>
命令格式2:
Store<
To<
内存变量名表>
两条命令的功能都是将表达式的值赋给内存变量。
格式1只能给一个内存变量赋值;
格式2可以同时给多个内存变量赋相同的值。
【例2.4】
M=”男”&
执行后m的值为:
男,其数据类型为字符型
Store2*3ToX,Y&
执行后X和Y的值都是6,数据类型都为数值型
2.2.2内存变量的清除
内存变量使用完毕,应该从内存中将其清除,以便释放更多的可用内存空间。
清除(释放)内存变量的命令有:
ClearMemory
Release<
格式1清除全部内存变量和数组,格式2清除指定的内存变量和数组。
【例2.5】
Store2*4ToX,Y,Z
ReleaseX
内存变量仍然存在,输出8
由于X被清除,故系统提示:
找不到变量X
命令格式3:
ClearAll
用于关闭所有打开的文件,清楚全部内存变量和数组,也称初始化命令。
命令格式4:
ReleaseAll[Like<
变量名通配符>
|Except<
]
变量名通配符中可以包含“?
”或“*”,表示一批变量。
其中“?
”代表其出现位置的任意一个字符(如果出现在最后,也表示没有字符),例如,“X?
”表示以X开头,最多由两个字符组成的一批变量名;
通配符“*”代表其出现位置的任意多个(包括没有)字符,即字符个数是任意的,每位上的字符也是任意的。
“X*”表示变量名以X开头的所有变量。
各选项的含义为:
(1)All:
清除所有内存变量和数组。
(2)AllLike<
:
清除与“变量名通配符”匹配的变量和数组。
(3)AllExcept<
清除与“变量名通配符”不能匹配的变量和数组。
【例2.6】
Store1ToX,X1,X11,X12,Y,Y1,Y2,Y11,Y12,M1,M12,N1,N12
ReleaseAllLikeY1?
&
清除Y1,Y11和Y12
ReleaseAllLikeX*&
清除X,X1,X11和X12
ReleaseAllExceptM* &
仅保留M1和M12
ClearAll &
释放全部内存变量,并关闭所有文件
2.2.3输出表达式值
可以通过VFP命令输出表达式的值(即运算结果)。
[<
表达式表>
先计算“表达式表”中每个表达式的值,再依次输出这些值。
格式1从下一行开始位置输出计算结果,若省略“表达式表”,则输出一个空行。
格式2从当前位置开始输出计算结果。
【例2.7】
'
总成绩'
62+20
"
分"
输出:
总成绩 82分
2.3数值型表达式
表达式是运算符连接常数、变量和函数等运算对象所构成的运算式。
运算符是对数据进行操作的符号。
单个常数、变量和函数是表达式的特例,即只有一个运算对象,没有运算符。
表达式的运算结果称为表达式的值,根据表达式值的数据类型可分为数值表达式、字符表达式、日期表达式、关系表达式和逻辑表达式。
在VFP中只有同类型的数据(除日期与数值运算外)才能进行运算。
2.3.1数值运算符
VFP中的数值运算符如表2.1。
表2.1数值运算符
优先级别
算术运算符
说明
数学表达式
转换成VFP表达式
1
+、-
取正