VFP三章数据元素.docx
- 文档编号:7508220
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:14
- 大小:21.51KB
VFP三章数据元素.docx
《VFP三章数据元素.docx》由会员分享,可在线阅读,更多相关《VFP三章数据元素.docx(14页珍藏版)》请在冰豆网上搜索。
VFP三章数据元素
第三章VFP的数据元素
要点:
常量、字段变量、内存变量、函数的概念概念及其使用,表达式及其运算
----构成VFP计算机语言(表文件与程序命令)的基本要素是:
常量、变量、函数、表达式
1.常量
定义为数据处理过程中不变的量,在VFP的表和程序中使用。
(1)数值型(N):
数字、小数点、正负号
(2)字符型(C):
中英文字符、各种符号、数字
(3)逻辑型(L):
T和Y表示真(TRUE),F和N表示假(FALSE)
(4)日期型(D):
默认美国格式(mm/dd/yy)
2.变量
——程序运行过程中其值可变的量。
取名规则为用汉字或字母开头,后面跟汉字、字母、数字、下划线。
变量有:
(1)字段变量
—表文件的字段名,VFP提供13种,常用的有:
数值型、字符型、逻辑型、日期型、备注型、通用型。
(2)内存变量
—临时存放程序运行的中间结果和最终结果。
常用有:
C型、N型、D型、L型、S型(屏幕型)。
①内存变量的赋值
格式1:
〈内存变量〉=〈表达式〉
格式2:
STORE〈表达式〉to〈内存变量表〉
说明:
格式1用一个值给一个变量赋值,格式2用一个值给一个或多个变量赋值。
例1:
各种类型内存变量的赋值。
命令窗口执行:
N1=123(数值型直接引用)
XM=“李红”(字符型加定界符:
引号,单引号,方扩号)
HF=.T.(逻辑型用两点)
D1=CTOD(“08/21/79”)(日期型加CTOD函数对字符转换)或:
D1={^1978-08-21}
注意:
以上是程序中常量的引用方式,表中常量直接使用。
例2:
一条命令对多个变量赋值。
STORE60.00TOX1,X2,X3
注:
两种变量的区别,字段变量与表文件有关,变量一经定义,类型不变。
内存变量与表文件无关,一变量定义后可重定义,类型可变,如:
A1=“张三”,A1=123。
2内存变量的保存与恢复
—退出VFP后所定义的内存变量丢失,若下一次启动VFP可用,须保存。
(1)内存变量的保存
格式:
SAVETO〈内存变量文件〉[ALLLIKE/EXCEPT<内存变量名表>]
说明:
文件扩展名.MEM,ALLLIKE-要保存的,EXCEPT-不保存的,缺省-全部保存。
(2)内存变量的恢复
格式:
RESTOREFROM〈内存变量文件〉[ADDITIVE]
说明:
[ADDITIVE]缺省—从文件中恢复的变量把当前新定义的内存变量覆盖,该子项若不缺省,就不会覆盖。
③内存变量的显示
格式:
dispMEMO
说明:
显示内存中变量的名称、值、作用域。
④内存变量的清除
格式:
RELAESEALL
(3)数组内存变量
格式:
DIMENSION<数组名>(<数值型表达式1>[,<数值型表达式2>])[,….]
说明:
1)数组变量必需先定义,后引用(赋值)。
2)“数值型表达式”为变量的下标,一维数组为单下标,二维数组为双下标,下标值为数值型。
数组含变量元素如下:
dimensionx(4)—x
(1)、x
(2)、x(3)、x(4)
dimensiony(3,2)—y(1,1)、y(1,2)、y(2,1)、y(2,2)、y(3,1)、y(3,2)
3)一条DIMENSION可定义多个数组。
4)同一数组的变量元素可以是不同类型的变量。
如:
dimenx(3)
x
(1)=20
x
(2)=“北京”
x(3)=ctod(“03/15/2002”)
dispmemo
(4)系统变量
----VFP系统自己定义的变量,以“_”下划线开头。
如打印报表的页码“_pageno”
3.表达式及其运算
(1)表达式的定义及类型
●定义:
字段变量、内存变量、常量、函数是表达式,用运算符把它们连接起来也是表达式。
●类型:
表达式的常用类型有4种,C型、N型、L型、D型,表达式各项类型应一致,若不相同,可用函数进行转换。
如:
数学=80
?
“我的数学:
”+数学(错。
类型不匹配)
?
“我的数学:
”+STR(数学)(对。
把数字型转换成字符型)
显示:
我的数学:
80
注:
?
“我的数学:
”,数学(对。
是两个表达式)
(2)表达式的显示
?
〈表达式〉—在当前行的下一行显示表达式的值
?
?
〈表达式〉—在当前行显示表达式的值
例:
N1=90
?
“我的数学:
”,
?
N1
结果:
我的数学:
90
?
“我的数学:
”
?
?
N1
结果:
我的数学:
90
(3)表达式的运算
—不同类型的表达式使用不同的运算符号也具有不同运算意义。
①算术运算(数值型表达式)
加“+”、减“—”、乘“*”、除“/”、乘方“**或^”、括号“()”,五种。
顺序:
括号—函数—指数—乘除—加减
②字符运算(字符型表达式)
●“+”字符串连接运算
?
“FOX”+“BASE”
FOXBASE
●“—”字符串连接运算(把前面字符串的尾空格移到连接后的后面)
●“$”字符串比较运算(后面包含前面为.T.,否则为.F.)
例:
?
”abc”$”abcdef”
?
”ABC”$”abcdef”
③关系运算(逻辑型表达式,条件表达式)
大于:
>、小于:
<、等于:
=、大于等于>=、小于等于:
<=、不等于:
<>或#或!
=、全等于:
==(字符串精确比较)
例:
listfor姓名=“王”
listfor姓名==“王”
④逻辑运算(逻辑型表达式)
.OR.—表达式一项为真,要操作
.AND.—表达式中两项为真,要操作
.NOT.或!
—对原逻辑值取反操作
说明:
两个以上的条件连接,顺序:
.NOT.-.AND.-.OR.
例:
显示数学及格的男同学记录。
Listfor数学>=60.and.性别=”女”
Listfor数学>=60.or.性别=”女”
⑤日期运算(日期型表达式)
日期减日期=天数
日期加减数字=日期
例:
listfor出生日期>=CTOD(‘01/01/62’)&&显示62年1月1日以后出生的人。
4.函数
—函数是VFP命令的重要组成部分,函数越多语言的功能越强。
VFP提供几百个,常用:
(注意:
函数的返回值与类型)
1)算术运算函数(返回值:
N型)
①ABS-求绝对值函数
格式:
ABS(〈数字表达式〉)
例:
X=-12
?
ABS(X)
12
②SQRT-平方根函数
格式:
SQRT(〈数字表达式〉)
例:
?
SQRT(10)
3.16
③INT-取整函数
格式:
INT(〈数字表达式〉)
说明:
不四舍五入
例:
?
(28.735)
28
④ROUND—四舍五入函数
格式:
ROUND(〈数字表达式〉,i)
说明:
i为正,其值为小数保留的位数。
i为负,其值为整数去掉的位数。
例:
?
ROUND(25.71543,2)
25.72000
?
ROUND(25.71543,-1)
30.00000
?
ROUND(25.71543,0)
26
⑤MOD-求余函数(模函数)
格式:
MOD(〈数字表达式1〉,〈数字表达式2〉)
说明:
当两表达式同号,余数符号为表达式2的符号。
当两表达式异号时,函数值为表达式1除以表达式2的余数(符号为表达式1的)加上表达式2的值。
例:
?
MOD(10,3)
1
?
MOD()(-10,-3)
-1
?
MOD(10,-3)
-2
?
MOD(-10,3)
2
⑥MAX/MIN-函数(略)
⑦RAND随机函数—产生大于0小于1的随机数。
?
RAND()
2)字符运算函数(返回值:
C型)
①&—宏代换函数
格式:
&<字符表达式>[.]
说明:
(1)字符表达式只用于赋值的字符变量
(2)不能用括号
(3)“.”表示变量结束
例:
NAME=”李小红”
A1=“你好!
&NAME”
?
A1
你好!
李小红
?
“你是&NAME吗?
”
?
“你是&NAME.吗?
”
A=”123”
?
&A+123
123123或246
X1=“stud.dbf”
Use&X1
注:
文件名、字段名用变量名表示要用宏代换。
②UPPER/LOWER-变大/小写函数
格式:
UPPER/LOWER(〈字符串表达式〉)
例:
?
UPPE(“Thisisaboy”)
THISISABOY
③SPACE-生成空格函数
格式:
SPACE(〈数字表达式〉)
例:
?
“杭州”+SPACE(8)+“西湖”
杭州西湖
④SUBSTR—子串选择函数
格式:
SUBSTR(〈字符串〉,〈子串起始位置〉,〈子串长度〉)
例:
?
SUBS(“中国民航”,5,4)
民航
⑤AT-子串寻找函数
格式:
AT(〈字符串1〉,〈字符串2〉)
说明:
找到返回值为“字符串1”在“字符串2”的位置,找不到返回值为0.
例:
?
(‘is’,’Thisisagirl’)
3
LISTFORAT(‘王’,姓名)=1
LISTFOR‘王’$姓名
⑥ALLTRIM-移去字符串首尾部空格函数
格式:
ALLTRIM(〈字符串表达式〉)
例:
LISTFOR姓名=“李红”(建表时李红后加空格,找不到)
LISTFORALLTRIM(姓名)=“李红”
⑦LEN-字符串长度函数
格式:
LEN(〈字符串表达式〉)
例:
?
LEN(“四川师范大学”)
12
⑧LEFT/RIGHT-求左/右子串函数
格式:
LEFT/RIGHT(〈字符串表达式〉,<长度>)
例:
?
LEFT(“四川师范大学”,4)
四川
3)日期与时间函数
①DATE-系统日期函数
格式:
DATE()
例:
?
DATE()
03/15/2002
②2)TIME-系统时间函数
格式:
TIME()
例:
?
TIME()
15:
25:
30
思考题:
从13:
10:
00上机的现在TIME(),每小时上机1.5元,共交上机费多少?
③YEAR-年分函数
格式:
YEAR(〈日期表达式〉)
说明:
返回值4为数字。
例:
?
YEAR(DATE())
2001
LISTFORYEAR(DATE())-YEAR(出生日期)>=60
④MONTH/CMONTH-月份名函数
格式:
MONTH/CMONTH(〈日期表达式〉)
例:
?
MONTH(CTOD(“01/25/2001”))
1
?
CMONTH(CTOD(“01/25/2001”))
January
⑤DOW/CDOW-星期函数
格式:
DOW/CDOW(〈日期表达式〉)
说明:
“星期日、一、二……六”的DOW()是“1、2….7”
?
CDOW(DATE())
Friday
?
DOW(DATE())
6
思考题:
?
“2005年3月15日是星期几”
提示:
xq=”日一二三四五六”
⑥DAY-日函数
格式:
DAY(〈日期表达式〉)
?
DAY(DATE())
15
4)数据类型转换函数
①ASC-求ASC码函数
格式:
ASC(〈字符串表达式〉)
说明:
将字符串的第一个字符转换成ASC代码。
例:
?
ASC(”Were”)
87
②CHR-求字符函数
格式:
CHR(〈数字表达式〉)
例:
?
CHR(87)
W
③STR-数字型转换成字符型函数
格式:
STR(〈数字表达式〉,[<长度>],[小数])
说明:
1、长度包括小数、小数点位数、整数。
2、长度、小数可缺省。
(整数保留8位,无小数)
例:
?
STR(3.1416,6,4)
3.1426
?
STR(3.1416)
3
④VAL-字符串转换成数字函数
格式:
VAL(〈字符串表达式〉)
说明:
1、遇非数字字符,函数值为“0”,停止转换。
2、对含小数的字符,四舍五入保留2位。
例:
?
VAL(“A18”)
0
?
VAL(“18A18”)
18.00
Y=VAL(“143.1592”)
143.16
?
STR(Y,8,4)
143.1592
⑤CTOD-字符型转换成日期型函数
格式:
CTOD(〈字符串〉)
说明:
“字符串”须是“mm/dd/yy”格式
例:
Y=CTOD(‘10/25/86’)
10/25/86
?
Y+10
11/04/86
⑥DTOC-日期型转换成字符型函数
格式:
DTOC(〈日期型表达式〉)
例:
?
DTOC(DATE())
03/15/2001
5)测试函数
——检察系统的某些实时状态,记录指针的位置,光标的位置等。
①RECNO—当前记录函数
格式:
RECNO()
例:
USESTUD
go5
?
RECNO()
5
②BOF-文件起始函数
格式:
BOF()
例:
USESTUD
GOTOP
?
RECNO()
1
?
BOF()
.F.
SKIP–1
?
RECNO()
1
?
BOF()
.T.
③EOF—文件结束函数
格式:
EOF()
例:
USESTUD(10条记录)
GOBOTTOM
?
RECNO()
10
?
EOF()
.F.
SKIP
?
RECNO()
11
?
EOF()
.T.
④TYPE-文件类型检测函数
格式:
TYPE(〈字符表达式〉)
说明:
字符表达式为变量要加引号
例:
a=123
?
type(a)错
?
type(“a”)
N
?
type(“123”)
N
?
type(“abc”)
U(未定义)
abc=”xyz”
?
type(“abc”)
C
⑤DELETED-测试删除标记函数
格式:
DELETED()
例:
USESTUD
GO2
?
DELETED()
.F.
DELETED(删除当前记录)
?
DELETED()
.T.
⑥FOUND-查询函数
格式:
FOUND()
例:
USESTUD
LOCAFOR姓名=”李红”
?
FOUND()(找到:
.T.,未找到.F.)
⑦SELECT-测定工作区函数
格式:
SELECT()
例:
?
SELECT()
1
5)其他函数
①ROW/COL-屏幕行/列坐标函数
格式:
ROW()/COL()
说明:
给出当前光标在屏幕上的行/列坐标(25行80列)
例:
?
ROW(),COL()
5,45
②条件函数IIF()
格式:
IIF(<逻辑表达式>,<表达式1>,<表达式2>)
说明:
<逻辑表达式>为真,返回值为<表达式1>,<逻辑表达式>为假,返回值为<表达式2>。
例:
a=123
b=456
?
iif(a>b,a,b)
上机内容:
1、在命令窗口下完成所有函数练习。
2、LIST显示年满18岁的同学(只有出生日期字段)。
3、完成以上的思考题。
习题
一、选择题
1.VFP中字段名称是()。
A.常量B.变量C.运算符D.函数
2.DIMENSIONXY(3,3)定义内存变量数组,XY(5)表示的数组元素是()。
A.XY(2,3)B.XY(3,2)C.XY(2,2)D.没有
3.查询表中数学大于等于60分小于80分的男同学和及格女同学的条件表达式是()。
A.性别=”男”.AND.(数学>=60.AND.数学<80).OR.性别=”女”.AND.数学>=60
B.性别=”男”.AND.数学>=60.AND.数学<80.AND.性别=”女”.AND.数学>=60
C.性别=”男”.AND.(数学>=60.AND.<80).OR.性别=”女”.AND.数学>=60
D.性别=”男”.AND.(数学>=60.AND.数学<80).OR.性别=”女”.OR.数学>=60
4.内存中有内存变量A1、A2、A3、A4、A5,要保存A1、A2、A3到文件N1.MEM中,正确的操作命令是()。
A.SAVETON1ALLB.SAVETON1ALLLIKEA1、A2、A3
C.SAVETON1D.SAVETON1EXCEPTA1、A2、A3
5.M1=123,?
”&M1”+”123”的屏幕显示是()。
A.123123B.246C.类型不匹配D.无显示
6.?
LEN(ALLTRIM("物理"+space(4)-"99级"))执行后,屏幕显示的是()。
A.12B.6C.13D.8
7.自由表中有10条记录,LIST命令后()。
A.BOF()和EOF()都为.T.B.BOF()为.T.,EOF()为.F.
C.BOF()和EOF()都为.F.D.BOF()为.F.,EOF()为.T.
8.A=”23”,?
TYPE(A)的显示结果是()。
A.NB.CC.UD.找不到变量
二、填空题
1.表中含有逻辑字段“是否党员”,对该值为.F.的记录要操作命令的条件表达式是____。
2.VFP中的程序命令和对象都可以用快捷键____复制,____粘贴。
3.VFP的常量类型有种,它们是____。
4.?
ROUND(326.1543,-1)的显示结果是____。
5.?
VAL(”18B15”)的显示结果是____。
6.当前自由表含出生日期字段,要查询1978年8月25日出生人员的记录,其命令的条件表达式是____。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VFP 数据 元素