VFP基础知识.docx
《VFP基础知识.docx》由会员分享,可在线阅读,更多相关《VFP基础知识.docx(20页珍藏版)》请在冰豆网上搜索。
![VFP基础知识.docx](https://file1.bdocx.com/fileroot1/2022-12/7/da24e466-4918-450b-916e-dead42ca7d96/da24e466-4918-450b-916e-dead42ca7d961.gif)
VFP基础知识
第二章VFP基础知识
复习:
1、VF文件类型
(1)项目文件(.PJX)
(2)表文件(.DBF)
注:
表文件是用于存储数据的二维表。
表中的备注型字段保存在同名的备注文件中。
备注文件的扩展名为(.FPT)
(3)数据库文件(.DBC)
(4)程序文件(.PRG)
注:
执行后生成.FXP文件
(5)表单文件(.SCX)
(6)索引文件(.IDX)和复合索引文件(.CDX)
(7)内存变量文件(.MEM)
2、思考:
用菜单方式设置默认目录与在命令窗口中用“setdefaultto盘符:
\路径”的方式设置默认目录有什么不同?
写出用菜单方式设置默认目录的步骤。
3、DB、DBS、DBMS的关系
4、选择、投影、连接三种运算
5、三种数据模型:
层次模型、网状模型、关系模型
6、关系数据库、元组、属性、关键字、域
7、实体完整性、域完整性、参照完整性
8、自由表、数据库表
四川省等级考试大纲相关内容:
2.VFP的数据元素
(1)常量:
数值型、字符型、逻辑型、日期型常量
(2)变量:
字段变量、简单内存变量、数组;
内存变量的保存与恢复;数组的定义
(3)变量类型:
数值型、字符型、逻辑型、日期型、备注型、通用型等
(4)表达式:
表达式的类型及运算顺序
(5)常用函数:
数值计算函数:
ABS()、INT()、SQRT()、MAX()、MIN()、ROUND()、MOD()等。
字符处理函数:
&、ALLTRIM()、TRIM()、LTRM()、SUBSTR()、LEFT()、RIGHT()、LEN()、AT()、SPACE()、UPPER()、LOWER()等。
数据类型转换函数:
CTOD()、DTOC()、VAL()、STR()、CHR()、ASC()等。
日期处理函数:
DATE()、TIME()、DAY()、DOW()、MONTH()、YEAR()等。
测试函数:
BOF()、EOF()、RECNO()、FOUND()、SELECT()、DELETE()、TYPE()等。
其它函数:
ROW()、COL()、INKEY()、READKEY()等。
2.1数据类型
1.字符型(Character,简写为C)
由数字、字母等ASCII字符和汉字组成。
最多可达254个字符。
注:
字符型数据使用时必须用定界符(“”,‘’或[])括起来。
2.数值型
在VFP中数值型数据被细分为5种。
(1)数值型(Numeric,简写N)
由0~9、小数点和正负号组成。
最大长度为20位
(2)浮点型数据(Float,简写为F)
用F(Float)表示,它是数值型数据的一种。
增设浮点型数据主要目的是使计算精度提高。
(3)整型数据(Integer,简写为I)
(4)双精度型数据(Double,简写为B)
(5)货币型数据(Currency,简写为Y)
3.日期型(Date,简写为D)
4.日期时间型(DateTime,简写为T)
注:
书写时必须按照格式{^MM/DD/YY}或{^YYYY/MM/DD}
5.逻辑型数据(Logic,简写为L)
6.备注型数据(Memo,简写为M)
用于数据中需要进行备注、说明的不定长或大量的字符型数据。
注:
备注型数据存放在与表文件同名、扩展名为FPT的备注文件中。
表中存放的是指向备注型数据在备注文件中存放的具体位置的指针。
7.通用型(General,简写为G)
用于存放数据表中引入的OLE(对象连接与嵌入)。
如文档、表格、图片等。
存放方法和备注型相同
不常用数据类型
8.屏幕型(Screen,简写为S)
用S(Screen)表示,专用于保存屏幕显示信息。
2.2常量
常量
1、概念:
指在命令操作或程序运行过程中其值始终保持不变的数据。
2、类型
(1)字符型常量:
(定界符""''[])如:
"256",[菜子花花非黄]
(2)数值型常量-23.5
(3)日期型常量:
(定界符{})如:
{^2009/3/15}
(4)逻辑型常量:
(定界符.t..F.)如:
.t.
(5)浮点型常量如:
1.58E+10
(6)日期时间型常量如:
{^2009-3-1510:
15:
30}
注:
判断常量的唯一标准是定界符!
2.3变量
大纲:
(2)变量:
字段变量、简单内存变量、数组;
内存变量的保存与恢复;数组的定义
概念和分类
(1)概念
命令操作和程序运行过程中其值可以改变的量。
(2)分类
分为:
字段变量、内存变量、数组变量、系统变量
1、字段变量
即数据表中的字段,是在建表的时候定义的一类变量。
2、内存变量
(1)概念:
用来保存所需要的常数、中间结果或对数据表和数据库进行某种处理后的结果。
(2)类型:
字符型、数值型、日期型、日期时间型、逻辑型、货币型和屏幕型。
注:
当内存变量和字段变量同名时,若要使用内存变量必须在内存变量必须在内存变量前面加“M.”或者“M->”
(3)内存变量的命名规则
可以用数字、字母(大小写通用)、汉字和下画线组成。
注:
定义变量名时必须以字母或汉字开头,内存变量名不能与VisualFoxPro的保留字同名。
例如:
正确:
a、kill123、ss_ss、姓命、中123a_ss
不正确:
'sss、1a、l*ss、k$ss、年_@龄
(4)内存变量的赋值
格式:
①STORE<表达式>TO<内存变量名表>
功能:
将表达式的值赋给内存变量名表中的一个或多个变量.
例如:
STORE2+3TOA,B,C
②<内存变量名>=<表达式>
功能:
将表达式的值赋给内存变量,同时定义内存变量并确定其类型.
例如:
X=“X”
(5)内存变量的显示输出命令
①格式:
DISPLAY/LISTMEMORY[LIKE<通配符>][TOPRINTER/TOFILE<文件名>]
功能:
显示内存变量的当前内容,并可将这些内容打印或送到一个文本文件中。
例如:
X1=12
X2=“12”
XYZ=.T.
Y=X1
LISTMEMORYLIKEX?
LISTMEMORYLIKEX*
注:
DISP是分屏显示,LIST是滚动显示
②格式:
?
/?
?
<内存变量名表>
功能:
换行或在当前位置显示内存变量名表中每个内存变量的值.
例如:
?
X1,XYZ
?
?
X2,Y
?
XYZ
(6)内存变量的保存与恢复
①保存命令格式:
SAVETO<内存变量文件名>[ALLLIKE<通配符>/ALLEXCEPT<通配符>]
功能:
将当前内存中的内存变量存放到内存变量文件中
说明:
内存变量文件的扩展名为.MEM
②恢复命令格式:
RESTOREFROM<内存变量文件名>[ADDITIVE]
(7)内存变量的删除
格式:
①CLEARMEMORY
②RELEASE〈内存变量名表〉
③RELEASEALL[LIKE/EXCEPT〈通配符〉]
3、数组变量
(1)概念
数组变量〈数组〉是按一顶顺序排列的一组内存变量的集合。
(2)数组的定义
格式:
DIMENSION/DECLARE〈数组名1〉(〈数值表达式〉1……)
例如:
DIEMA(6),B(3,2)
(3)数组的赋值
注:
数组定义好后,数组中的每个数组元素自动被赋予逻辑值.F.
例如:
DIMEA(3,4)
STORE5*6TOA(1,2),A(3,3)
A
(1)={^2002/02/03}
A(2,4)=[TRU]+’E’
LISTMEMOLIKEA
4、系统变量
由VF自动生成和维护的内存变量,以下画线“_”开头,用于控制输出和显示信息的格式,其名称由系统规定。
2.4运算符与表达式
1、算术运算符与数值表达式
参与运算的对象为数值型数据,得到的结果也为数值型数据。
例如:
1+-2=-15%2=1
2^3=2**3=8
2、字符运算符与字符表达式
参与运算的对象为数值型数据,得到的结果也为数值型数据。
注:
“+”表示原样连接
“-”在连接字符串时会将前面字符串最后的空格移到连接后字符串的最后。
例如
(1)?
“THI?
?
”+”S”
(2)?
”?
?
THI”+”s”(3)?
”THI?
?
”+”?
?
S”
结果为:
THI?
?
S?
?
THISTHI?
?
?
?
S
(1)?
”THI?
?
”+”S”
(2)?
”?
?
THI”-”s”(3)?
”THI?
?
”-”?
?
S”
结果为:
THIS?
?
?
?
THISTHI?
?
S?
?
“?
”表示空格
3、关系运算符与关系表达式
参与运算的对象类型必须相同或相容,得到的结果为逻辑值。
注:
(1)字符型数据按照相应位置上的两个字符ASCII码值进行比较。
汉字按照拼音进行比较。
(“A”的ASCII码值为65,“a”的为97)
(2)在SETEXACTOFF状态下,用“=”比较两个字符串时,只要“=”右边的字符串与左边的字符串的左端部分相同,即认为是相等。
如是在SETEXACTON状态下,则要完全相同才是相同。
(3)“$”字符串包含运算符,功能:
比较“$”右边的字符串是否包含左边的字符串.
例如:
?
“abc”$”a”,”a-c”$”abc”,”a”$”ab”
输出结果为:
.F.,.F.,.T.
4、日期运算符与日期表达式
注:
日期型数据只能和整数相加,两个日期型不能进行相加。
在和整数做运算时都是那照天来计算
例如:
?
{^2004/02/29}+20
结果为:
2004/03/20
5、逻辑型运算符与逻辑表达式
要求参与运算的对象为逻辑型数据,得到的结果为逻辑型数据。
逻辑运算:
真值表。
A
B
NOTB
A.AND.B
A.OR.B
.T.
.T.
.F.
.T.
.T.
.T..
.F.
.T.
.F.
.T.
.F.
.T.
.F.
.F.
.T.
.F.
.F.
.T.
.F.
.F..
结论:
对于and来讲,如果其中一边为.F.,那么结果都为.F.
对于or来讲,如果其中一边为.T.,那么结果都为.T.
也就是说可以将.t.->1,.f.->0,and看做*,or看做+
优先级:
not>and>or
例如:
x=10
x>23and“this”==”this”andx>(2+13)/23*11and(max(12,22)>min(22,22)orx>0)
x>23and“this”==”this”andx>(2+13)/23*11andmax(12,22)>min(22,22)orx>0
6、运算符及表达式的运算顺序
例2-8(28页)
200<100+15AND“AB”+”EFG”>”ABC”ORNOT“Pro”$”FoxPro”
(1)先进行算术运算和字符串连接运算:
100+15,“AB”+”EFG”
200<115AND“ABEFG”>”ABC”ORNOT“Pro”$”FoxPro”
(2)进行<、>比较和包含$运算
.F.AND.T.ORNOT.T.
(3)逻辑NOTANDOR运算
.F.AND.T.OR.F..F.OR.F..F.
思考:
**50岁以上的女的**
性别=”女”and年龄>50
**入校总分在450分以上的男同学和在400分以上的女同学**
所有基本工资在800元以上的女讲师
2.5常用函数
调用函数格式:
<函数名>([参数表])
使用函数时应注意以下几点:
1、函数名
2、除了&宏函数外,所有函数必须加()
3、函数的作用
4、函数的参数
5、函数的返回值及其类型
(1)每一个函数必然有一个具有确定数据类型的返回值。
(2)函数可以和其它数据进行操作运算。
(2)函数所要求的参数也有一定的数据类型,参数类型不匹配时,将会出现语法错误
(5)常用函数:
数值计算函数:
ABS()、INT()、SQRT()、MAX()、MIN()、ROUND()、MOD()等。
字符处理函数:
&、ALLTRIM()、TRIM()、LTRM()、SUBSTR()、LEFT()、RIGHT()、LEN()、AT()、SPACE()、UPPER()、LOWER()、STUFF()等。
数据类型转换函数:
CTOD()、DTOC()、VAL()、STR()、CHR()、ASC()、LOWER()、UPPER()、等。
日期处理函数:
DATE()、TIME()、DAY()、DOW()、MONTH()、YEAR()等。
测试函数:
BOF()、EOF()、RECNO()、FOUND()、SELECT()、DELETE()、TYPE()、FILE()、DBF()、RECCOUNT()、IIF()等。
其它函数:
ROW()、COL()、INKEY()、READKEY()等。
2.5.1.数值运算函数
(1)求绝对值函数ABS()
【格式】ABS()
【功能】返回的绝对值,参数的类型为N型,得到的函数值的类型为N型。
【例如】输入语句:
?
ABS(-13.5),ABS(13.5),ABS(-50)
显示结果:
13.513.550
注意:
语句?
||是非格式输出语句,具有计算功能。
语句在命令窗口输入。
2)取整函数INT()
【格式】INT()
【功能】返回的整数部分。
【例如】输入语句:
?
INT(-8.99+3),INT(26.9),INT(-26.2),INT(26.2)
显示结果:
-526-2626
(3)求四舍五入函数ROUND()
【格式】ROUND(,)
【功能】返回按所指定的保留小数位数进行四舍五入的值。
若的值为负,则返回小数点左边为绝对值个数零的整数值。
【例如】:
输入语句:
?
ROUND(68.345,2),ROUND(68.745,0),ROUND(68.345,-1),ROUND(68.345,-2)
显示结果:
68.356970100
(4)求平方根SQRT()
【格式】SQRT()
【功能】返回的平方根。
【说明】的值必须为正数或零。
【例如】输入语句:
?
SQRT(25.9),SQRT(8*8),SQRT(ABS(-36))
显示结果:
5.098.006.00
(5)求余函数MOD()
【格式】MOD(,)
【功能】返回除以的余数。
【说明】函数值的符号与相同。
【例如】输入语句:
?
MOD(10,3),MOD(-10,-3),MOD(10,-3),MOD(-10,3)
显示结果:
1-12-2
(6)求指数函数EXP()
【格式】EXP(N)
【功能】返回以e为底,N为幂次的指数值。
【例如】输入语句:
?
EXP(5.5),EXP
(1),EXP(-5),EXP(2*2)
显示结果:
244.692.720.0154.60
(7)求对数函数LOG()
【格式】LOG()
【功能】返回的自然对数值。
【说明】值必须大于零。
【例如】输入语句:
?
LOG(16.5),LOG(10),LOG
(1)
显示结果:
2.802.300.00
(8)求最大值函数MAX()
【格式】MAX(,[,…])
【功能】返回表达式串,[,…]中的最大值。
【说明】这些表达式必须具有相同数据类型(可以同是字符、数值或日期)。
【例如】输入语句:
?
MAX(-23,3.56,12.8,5*9)
?
MAX('BOOK','PEN','READ')
显示结果:
45READ&&比较字符的ASCII大小
9)求最小值函数MIN()
【格式】MIN(,[,…])
【功能】返回表达式串,[,…]中的最小值。
【说明】这些表达式必须具有相同数据类型(可以同是字符、数值或日期)。
【例如】输入语句:
?
MIN(-23,3.56,12.8,5*9)
?
?
MIN('BOOK','PEN','READ')
显示结果:
-23BOOK
2.5.2.字符处理函数
(1)宏代换函数&
【格式】&[.]
【功能】将存储在字符型内存变量中的字符串替换出现。
此外,利用可选的句号分隔符“.”及,还可将额外的值添在其尾端,而且本身也可以是一个宏。
【例如】输入下列语句序列
Name=“李小红”
A1=“你好!
&NAME”
?
A1
显示结果:
你好!
李小红
输入语句:
?
”你是&NAME吗?
”
显示结果:
你是&NAME吗?
?
“你是&NAME.吗?
”
显示结果:
你是李小红吗?
输入语句序列:
A=“123”
?
&A+123
显示结果:
246
X1=“STUD.DBF"
USE&X1
结果:
打开STUD.DBF表
注意:
赋值语句的功能是将表达式的值送到变量中。
(2)删除字符串空格函数
①删除字符串前置空格及尾部空格函数ALLTRIM()
【格式】ALLTRIM(<字符表达式>)
【功能】返回删除了<字符表达式>的前置空格及尾部空格的字符串。
②删除字符串前置空格函数LTRIM()
【格式】LTRIM(<字符表达式>)
【功能】返回删除了<字符表达式>的前置空格的字符串。
③删除字符串尾部空格函数RTRIM()或TRIM()
【格式】RTRIM(<字符表达式>)
【功能】返回删除了<字符表达式>的尾部空格的字符串。
例如:
A=“ABC”
B=“XYZ”
?
ALLTRIM(A),B
?
LTRIM(A),B
?
RTRIM(A),B
?
TRIM(A),B
(3)、查找字符串起始位置函数AT()和ATC()
【格式】AT(<字符表达式1>,<字符表达式2>[,<数值表达式>])
【功能】返回<字符表达式1>第一次出现在<字符表达式2>中的整数位置值(从左到右计数)。
若<字符表达式1>未出现在<字符表达式2>中,则返回零值。
如果有可选项<数值表达式>,则在<字符表达式2>中从<数值表达式>值代表出现<字符表达式1>的次数开始查找。
函数AT()和ATC()功能相同,只是AT()要区分大小写,ATC()不区分大小写。
例如:
?
AT(“n”,”Internet”)
?
AT(“N”,”Internet”)
?
AT(“n”,”Internet”,2)
输出结果:
206
(4)、取子串函数
①左截子串函数LEFT()
【格式】LEFT(<字符表达式>,<数值表达式>)
【功能】返回从<字符表达式>最左边计起的<数值表达式>值个字符。
②右截子串函数RIGHT()
【格式】RIGHT(<字符表达式>,<数值表达式>)
【功能】返回从<字符表达式>最右边计起的<数值表达式>值个字符。
如果<数值表达式>值小于或等于零,则返回空字符串。
③截子串函数SUBSTR()
【格式】SUBSTR(<字符表达式>,<数值表达式1>[,<数值表达式2>])
【功能】返回<字符表达式>中,从<数值表达式1>值开始,由<数值表达式2>值指定个数的字符串。
如果无<数值表达式2>选项,则从<数值表达式1>值位置开始直到<字符表达式>值尾部。
【例如】:
?
SUBSTR(“MicrosoftPowerPoint”,11,5)
输出结果:
Point
?
SUBSTR(“面向对象程序设计”,9,4)
输出结果:
程序
?
left(“面向对象程序设计”,8)
输出结果:
面向对象
?
right(“面向对象程序设计”,8)
输出结果:
程序设计
(5)、空格生成函数SPACE()
【格式】SPACE(<数值表达式>)
【功能】返回一个由<数值表达式>值确定的空格组成的字符串。
【例如】:
?
“首都”+“北京”
输出结果:
首都北京
?
“首都”+SPACE(3)+“北京”
输出结果:
首都?
?
?
北京
注:
?
表示空格,一个空格表示一个字符
(6)、转换字符串函数
①字符插入或替换函数STUFF()
【格式】STUFF(<字符表达式1>,<起始位置>,<长度>,<字符表达式2>)
【功能】在<字符表达式1>中插入或替换一字符串。
在<字符表达式1>中从<起始位置>决定的位置开始,删除由<长度>决定的字符个数,然后在该位置插入<字符表达式2>。
如果<长度>为零,则仅将<字符表达式2>插入<字符表达式1>中。
如果<字符表达式2>为一空字符串,则仅从<字符表达式1>中清除<长度>个字符而不加入任何字符。
【例如】:
A=“FOXPRO”
B=“BASE”
?
STUFF(A,4,4,B)
显示结果:
FOXBASE
?
STUFF(A,4,3,"")
显示结果:
FOX
?
STUFF("DISLAY",4,0,"P")
显示结果:
DISPLAY
②大写字母转小写字母函数LOWER()
【格式】LOWER(<字符表达式>)
【功能】将<字符表达式>中的所有大写字母转换成小写字母,其它字符不变。
返回值为字符型。
【例如】:
?
LOWER(“FoxPro”)
显示结果:
foxpro
③小写字母转大写字母函数UPPER()
【格式】UPPER(<字符表达式>)
【功能】将<字符表达式>中的所有小写字母转换成大写字母,其它字符不变
【例如】:
?
UPPER(“FoxPro”)
显示结果:
FOXPRO
(7)、ASCII码转换函数
①求ASCII字符对应数值函数ASC()
【格式】ASC(<字符表达式>)
【功能】返回<字符表达式>值最左边字符对应的ASCII码(十进制)。
【例如】:
?
ASC(“ABC”)
输出结果:
65
②求数值对应的ASCII字符函数CHR()
【格式】CHR(<数值表达式>)
【功能】返回<数值表达式>值对应的ASCII字符
【例如】:
?
CHR(97)
输出结果:
a
(8)、测试字符串长度函数LEN()
【格式】LEN()
【功能】返回值的字符个数。
可以是一个字符串、备注字段或字符类型字段。
若为一空字符串,则返回数值零。
【例如】输入语句:
?
LEN("AppendBlank")
显示结果:
12
X=“计算机等级考试”
?
LEN(X)
显示结果:
14
(9)条件赋值函数IIF()
【格式】IIF(<逻辑表达式>,<表达式1>,<表达式2>)
【功能】按<逻辑表达式>的逻辑值决定返回<表达式1>的值或<表达式2>的值。
若<逻辑表达式>的逻辑值为真,则返回<表达式1>的值,若<逻辑表达式>的逻辑值为假,则返回<表达式2>的值。
【例如】输入语句:
X=2
Y=3
?
IIF(X>Y,X>0,10+Y)
输出结