VFP要点串讲.docx
《VFP要点串讲.docx》由会员分享,可在线阅读,更多相关《VFP要点串讲.docx(21页珍藏版)》请在冰豆网上搜索。
VFP要点串讲
VFP复习串讲
笔试中各知识点的分数分布
第1章VFP基础知识 <=6分
第2章VFP系统初步 <=2分
第3章数据与数据运算 <=4分
第4章VFP数据库及其操作 <=14分
第5章关系数据库标准语言SQL <=24分
第6章查询与视图 <=4分
第7章程序设计基础 <=8分
第8章表单设计与应用 <=8分
第9章菜单设计与应用 <=4分
第10章报表设计 <=2分
第11章开发应用程序 <2分
上机考试
每次上机考试都会有50套上机考题,学员会从中随机抽取一套。
在这50套题中会有90%的题在平时上机练习中都可以找到,均是原题。
上机考试中的SQL语句,表单,菜单的属性设置经常出现在笔试当中,所以要求大家在上机练习时不但要会操作,还要理解。
声明:
VFP中所有的命令都可以只写前面的4个字母,并且命令单词不分大小写
1VFP中常用文件类型及其扩展名
文件类型
扩展名
对应的创建命令
项目(工程)文件
.PJX.PJT
CREATEPROJECT
数据库文件
.DBC.DCT
CREATEDATABASE
表文件
.DBF.FPT
CREATE|CREATETABLE
程序文件
.PRG.FXP
CREATE|MODIFYCOMMAND
索引文件
.IDX.CDX
INDEXON
内存变量文件
.MEM
SAVETO
表单文件
.SCX.SCT
CREATE|MODIFYFORM
菜单文件
.MNX.MNT.MPR.MPX
CREATE|MODIFYMENU
报表文件
.FRX.FRT
CREATE|MODIFYREPORT
文本文件
.TXT
MODIFYFILE
查询文件
.QPR
CREATEQUERY
视图文件
.vue
CREATEVIEW
2VFP常用运算符
2.1VFP数据类型
1、字符型(C):
字符型数据必须用‘’或“”或[]括起来;
2、数值型(N)整型(I);
3、日期型(D):
{^2006/10/25}或{^2006-10-25}或{^2006.10.25}
4、逻辑型(L);
5、备注型(M);
6、通用型(G)。
2.2算术运算符
+-*/**^%
说明:
算术运算符均为双目运算符,且运算符的两边均是数值型表达式,运算结果也为数值型数据;除双整数运算结果为整数外,其余运算结果均为实数,且默认最少保留两位小数;
乘方运算符有两个**和^;
%为求余运算符,其结果的符号就与第二操作数的符号相同。
日期型数据也可以进行减法运算;一个日期型数据可以加(减)一个整数;
+-运算符也可用于字符串连接和日期型数据运算。
**(^)--*(/,%)--+(-)
2.3关系运算符
<<=>>====<>#!
=$
说明:
关系运算的结果是逻辑值真或假(.T.或.F.);
真值可以用.t./.T./.Y./.y.表示,假值可以用.f./.F./.n./.N.表示;
能进行关系运算的数据可以是:
数值型、字符型、日期型;
$和==运算符只能用于双字符操作数;
例:
?
“abc”$”bdgabcfgh”.T.
?
‘中国’$‘发展中国家’.T.
?
“[人民]”$“中华人民共和国”.F.
2.4逻辑运算符
.NOT.或!
逻辑非,单目运算符
.AND.逻辑与
.OR.逻辑或
.NOT.--.AND.--.OR.
2.5字符串运算符
“abcd”+“abcdefg”“abcdabcdefg”
“□□□□abcd□□□”+“□□□XXXX□□□”
“□□□□abcd□□□□□□XXXX□□□”
“abcd”-“abcdefg”“abcdabcdefg”
“□□□□abcd□□□”-“□□□XXXX□□□”
“□□□□abcd□□□XXXX□□□□□□”
2.6日期型运算符
{^2006/03/01}+3003/31/06
{^2006/03/31}-{^2006/03/01}30
{^2006/03/31}-3003/01/06
3VFP常用函数
3.1数值运算函数
求模函数:
MOD(expN1,expN2)同算术运算符%
举例说明其用法。
3.2字符处理函数
AT(expC1,expC2) 返回N
如果字符串expC1是expC2的子串,则返回expC1第一次在expC2中出现的起始位置。
否则返回0;
例:
?
AT(“abc”,“THGabcUHY”)4
?
AT(“abc”,“THGabcUHYabcGHJ”)4
?
AT(“abc”,“aGHbNhcbagh”)0
AT(expC1,expC2,n) 返回N
如果字符串expC1是expC2的子串,则返回expC1在expC2中第n次出现的起始位置。
否则返回0;如果expC1在expC2中出现的次数少于n,也返回0。
例:
?
AT(“abc”,“THGabcUHY”,1)4
?
AT(“abc”,“THGabcUHY”,2)0
注:
要注意AT()和$运算符区别。
SUBSTR(expC,n) 返回C
返回字符串expC的从第n个字符到结尾的子字符串。
例:
?
SUBSTR(“abcdefgh”,3)cdefgh
SUBSTR(expC,n,m)返回C
返回字符串expC的从第n个字符到第m个字符的子字符串。
例:
?
SUBSTR(“abcdefgh”,3,6)cdef
LEFT(expC,n)返回C
RIGHT(expC,n)返回C
ALLTRIM(expC)返回C删除字符串expC前后的安全空格
LTRIM(expC)
RTRIM(expC)TRIM(expC)
LEN(expC)返回N
3.3日期、时间函数
TIME()24小时制,时:
分:
秒
DATE()
YEAR()
MONTH()
DAY()
3.4转换函数
UPPER(expC)CC
LOWER(expC)CC
CTOD(expC)要求是正确格式的字符串CD
DTOC(expD)DC
STR(expN)NC 注:
转换的结果字符串最多为10个
先将expN四舍五入转换成整数,再按默认10个字符的宽度转换成字符串
?
STR(23456)□□□□□23456
?
STR(23456.457)□□□□□23456
?
STR(23456.543)□□□□□23457
STR(expN,n)NC 先将expN四舍五入转换成整数
?
STR(234.567,3)235
?
STR(234.567,5)□□235
?
STR(234.567,2)**
?
STR(234.567,12)□□□□□□□□□235
STR(expN,n,m)NC
?
STR(234.567,2,2)**
?
STR(234.567,3,2)235
?
STR(234.567,4,2)□235
?
STR(234.567,5,2)234.6
?
STR(234.567,5,3)234.6
?
STR(234.567,6,3)234.57
?
STR(234.567,10,3)□□□234.567
VAL(expC)CN
3.5测试函数
FOUND()
BOF()
EOF()
RECNO()
BETWEEN(n,expN1,expN2)
4表的基本操作
4.1定义表的字段属性
字段名称,字段的数据类型,字段宽度,小数位数(数值型字段)
常用的字段数据类型:
数据类型
简写
字符型
C
数值型
N
日期型
D
逻辑型
L
备注型
M
整型
I
通用型
G
注:
字段变量和内存变量
当字段名与内存变量同名时,引用内存变量必须用m->内存变量名方式。
例:
usestudent
list
显示如下:
Record#学号 姓名 性别 电话
12004001张三 男 222654
22004002李四男 222656
32004005王三可女222666
42004004李自成男222635
go3
姓名=”刘建成”
?
姓名 显示:
王三可
?
m->姓名显示:
刘建成
4.2相关命令:
VFP操作命令的基本格式:
命令词[范围][fields<字段列表>][for<条件>]
create
createtable(SQL命令)
use
modifystructure
list/disp/browse/edit/change
append[blank]
appendfrom
insert[before][blank]
记录定位:
go/gotoexpN或 n
skip±n
能影响记录指针的一些命令:
list/displayall/locate
范围子句:
all/rest/nextn/recordn
replace[范围]fieldsfields1withvalue1….[for<条件>]
delete/pack/recall/zap
SCATTER[FIELDS<字段名表>]to<数组名>
GATHERFROM<数组名>[fileds<字段名表>]
locatefor<条件>
continue
4.3排序和索引
排序:
sortto<表名>on<关键字段1>[/A/D/C][范围]
[for<条件>][fields<字段列表>]
索引文件的类型:
单索引文件,结构复合索引文件,非结构复合索引文件
索引类型:
主索引,候选索引,惟一索引,普通索引
单索引文件(.IDX)
indexon<索引表达式>to<索引文件名>
单索引文件的打开
1.useTableNameindexIDXname1,IDXname2….
2.setindextoIDXname1,IDXname2….
单索引文件打开后,第一个索引文件自动成为主控索引文件
结构复合索引文件(.CDX,与表同名)
indexon<索引表达式>tag<索引标识>
结构复合索引文件随着表的打开自动打开,但没有设置主控索引标识
设置主控索引标识
setordertotag<索引标识>
setorderton
索引查找:
seek
4.4统计命令
count
sum
average
4.5工作区
概念
1—10工作区也为A—J工作区
工作区的选择
sele0
5数据库操作与SQL语言
5.1项目管理器与数据库基本操作
CREATEPROJECT
建立数据库文件:
CREATEDATABASE
打开数据库文件:
OPENDATABASE
关闭数据库:
CLOSEDATABASE
将表添加到数据库:
ADDTABLE
从数据库中移去表:
REMOVETABLE
5.2表的关联
父表和子表
父表和子表有公共字段
子表必须按关联关系建立索引标识并为主控索引
setrelationto<关联表达式>into<子表名>
5.3SQL语言
定义表结构CREATETABLE
CREATETABLE|DBFTableName[FREE]
(FieldsName1fieldsType(width,[n]))NULL|NOTNULL
[CHECKexpL1[ERRORexpC1]]
[DEFAULTexp][PRIMARYKEY]
[,(FieldsName2fieldsType(width,[n]))NULL|NOTNULL]
[CHECKexpL1[ERRORexpC1]]
[DEFAULTexp][PRIMARYKEY]……
例:
CREATETABLEstudentFREE;
(student_IDC(8),nameC(8),birthdayD;
sexC
(2),dyL)建立自由表student.dbf
CREATETABLEGrade(
student_IDC(8)NOTNULLPRIMARYKEY;
course_IDC(4)NOTNULL;
testTypeC(4)NOTNULLCHECK;
testType=[正考]ORtestType=[补考];
ORtestType=[重修];
ERROR[考试类别只能是”正考”、”补考”或”重修”];
DEFAULT[正考];
TestGradeN(5,1)NOTNULL)
提示:
数据库表的引用方式为
数据库名!
表名
字段名的引用方式为
数据库名!
表名.字段名
修改表结构ALTERTABLE
增加字段
ALTERTABLETableNameADD[COLUMN]fieldsName
FieldsType(m[,n])NULL|NOTNULL
[CHECKexp[ERRORexpC]][DEFAULTexp]
[PRIMARYKEY]
修改字段
将上述命令中的ADD[COLUMN]改为ALTER[COLUMN],但不能用来修改字段名。
修改字段名
ALTERTABLETableNameRENAME[COLUMN]
FieldsName1toFieldsName2
删除字段
ALTERTABLETableNameDROP[COLUMN]fieldsName
[DROPCHECK][DROPPRIMARY][DROPDEFAULT]
删除数据库表的字段时,应该一并删除该字段的相关性规则。
对于自由表,则不存在相关性规则
查询命令SELECT…from…
技巧:
尽量使用查询设计器来做
插入记录 insert
INSERTINTOTableName(字段列表)VALUE(值列表)
或者
INSERTINTOTableNameFROMARRAYarrayName
提示:
插入的记录在表的末尾
更新记录update
UPDATEDataBaseName!
TableNameSET
Column_Name1=exp1[,Column_Name2=exp2,…]
Where<条件>
删除记录(作删除标记)delete
DELETEFROMtableNamewhere<条件>
6查询和视图
主要要求掌握查询向导和查询设计器的使用方法,尤其是查询设计器的使用方法。
(添加数据环境,字段,筛选,联接,排序依据,分组依据,杂项,查询去向,运行查询,查看SQL)
命令:
CREATEQUERY
运行查询:
do查询文件名.qpr
视图设计器与查询设计器类似。
命令:
CREATEVIEW
7表单设计
命令:
CREATEform
运行表单:
doform表单文件名
表单设计时,如果在表单中要操作数据表,千万不要忘记向表单添加数据环境。
表单的基本属性:
thisform.release一般用于“退出”按钮
thisform.hide
thisform.show
thisform.caption=””
表单的常用方法:
Load---Init—Destory
Click,RightClick
设置控件时尽量首先使用“生成器”,方法是右击控件,选择“生成器”
注意控件的以下属性和方法:
Caption,ControlSource,value
如:
alltrim(ThisForm.Text1.value)
Click
8菜单与报表设计
菜单设计:
命令:
CREATEMENU
建立好的菜单一定先要执行“生成”命令
运行菜单:
do菜单文件名.mpr
设置菜单快捷键:
如“统计\菜单命令后的语句不能有“;”
如果将设计的菜单加载到系统菜单之后,“显示—常规选项”中设置“追加”
顶层表单和顶层菜单:
如果要在表单中加载菜单,
(1)设置表单为顶层表单,表单属性ShowWindow设定为“2—顶层表单”。
(2)在设计菜单时,“显示—常规选项”中设置“顶层表单”。
返回到系统菜单的命令:
setsysmenutodefault
报表设计请掌握报表向导
9程序设计
VFP的程序其实质上是VFP命令的批处理。
我们在命令窗口中输入的命令是输入一条就执行一条,而VFP程序文件是将若干能完成指定功能的命令组合逐条放在一起,并加上VFP的程序控制语句,让这些语句在控制语句的控制下执行。
VFP程序文件:
.PRG编译后生成.FXP的文件
CREATE|MODIFYCOMMANDXXX
DOXXX
从键盘上接受数据的命令有:
accept[<提示信息>]to<内存变量名>只接收字符型数据,回车结束
input[<提示信息>]to<内存变量名>可接收任意类型的数据,回车结束。
如果要输入字符,必须用定界符
wait[<提示信息>]to<内存变量名>
9.1顺序结构
例:
AA.PRG
settalkoff
usestudent
gotop
displayoff
skip3
displayoff
use
settalkon
9.2选择结构
IF<条件表达式>
语句序列
ENDIF
如:
input“请输入一个整数”toa
ifa>0
?
”a是一个正数”
endif
IF<条件表达式>
语句序列1
ELSE
语句序列2
ENDIF
如:
input“请输入一个整数”toa
ifa<0
?
”a是一个负数”
else
?
”a是一个非负数”
endif
IF语句嵌套
IF<条件表达式1>
IF<条件表达式2>
……
ELSE
……
ENDIF
ELSE
IF<条件表达式2>
……
ELSE
……
ENDIF
ENDIF
如:
input“请输入一个整数”toa
ifa>0
?
”a是一个正数”
else
ifa<0
?
”a是一个负数”
else
?
”a的值为0”
endif
endif
DOCASE语句
9.3循环结构
dowhile<条件>
……
enddo
例:
settalkoff
usescore
gotop
dowhile.not.eof()
aver=(数学+语文+英语+计算机)/4
ifaver>=80
ifaver<90
replace成绩评定with“良好”
else
replace成绩评定with“优秀”
endif
else
ifaver>=60
replace成绩评定with“及格”
else
replace成绩评定with“不及格”
endif
endif
skip
enddo
use
settalkon
用docase语句完成上述程序
settalkoff
usescore
gotop
dowhile.not.eof()
aver=(数学+语文+英语+计算机)/4
docase
caseaver>=90
replace成绩评定with“优秀”
caseaver<90.and.aver>=80
replace成绩评定with“良好”
caseaver<80.and.aver>=60
replace成绩评定with“及格”
otherwise
replace成绩评定with“不及格”
endcase
skip
enddo
use
settalkon
SCAN[范围][for<条件>]
……
ENDSCAN
用SCAN语句完成上述程序
settalkoff
usescore
scan
aver=(数学+语文+英语+计算机)/4
docase
caseaver>=90
replace成绩评定with“优秀”
caseaver<90.and.aver>=80
replace成绩评定with“良好”
caseaver<80.and.aver>=60
replace成绩评定with“及格”
otherwise
replace成绩评定with“不及格”
endcase
endsacn
use
settalkon
for<内存变量>=<初值>to<终值>[step<步长>]
……
endfor
循环体语句中的LOOP和EXIT语句
LOOP:
遇到该语句时,循环将跳过LOOP语句后的部分循环语句直接进入下一轮循环。
EXIT:
遇到该语句时,将直接跳出循环。
9.4过程与过程调用
过程的定义与调用方式
参数的传递与返回值
全局变量(publicc),私有变量(private),局部变量(local)
10一点小技巧
上机考试中的若干技巧:
1、确认当前工作目录是否是考生文件夹;
2、如果题目要求将命令语句保存在XXX.prg文件中,则直接使用“新建――程序”,将命令语句复制到该文件中,然后保存时输入指定文件名“XXX”,而不用指定扩展名。
3、如果题目要求将命令语句保存在“XXX文本文件中”即“XXX.txt”文件中,则直接使用“新建――文本文件”,将命令语句复制到该文件中,然后保存时输入指定文件名“XXX”,而不用指定扩展名。
4、在上机考试中,有一些操作是要求写SQL命令的。
万一写不出来的,可以借助查询向导或查询设计器。
用查询设计器按题目要求设计好以后,使用“查看SQL”,然后将窗口中的SQL复制下来即可。