Visual FoxPro 基础串讲笔试考点_第1页
Visual FoxPro 基础串讲笔试考点_第2页
Visual FoxPro 基础串讲笔试考点_第3页
Visual FoxPro 基础串讲笔试考点_第4页
Visual FoxPro 基础串讲笔试考点_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

第一章:VisualFoxPro基础

一、VFP6.0的作用

VFP6.0关系数据库系统是新一代小型数据库管理系统的杰出代表,它以强大的性能、完整而又

丰富的工具、较高的处理速度、友好的界面以及完备的兼容性,深受广大用户的喜爱。VFP是第一个全

面支持面向对程序设计(OOP)的数据库语言。

VFP6.0拥有的近500条命令,200余种标准函数。

二、计算机数据管理的发展

1、人工管理(20世纪50年代中期以前)

2、文件系统(20世纪50年代后期至60年代中期)

3、数据库方式(20世纪60年代后期)

数据与程序分离、数据集中的管理、数据可被多个程序共享

4、分布式的数据库系统(20世纪70年代)

数据库与网络技术的结合,可分为紧密结合型和松散结合型

5、面向对象的数据库系统(20世纪80年代后期)

面向对象的方法与数据库的结合

1.1.2数据库系统(DBS)

一、数据库(DataBase)

DBS(DB)DBMS

存储在计算机存储设备上,结构化的相关数据的集合。

1、数据的冗余度最小

2、资源共享性和数据独立性

3、安全可靠,保密性能好

二、数据库应用系统(DBAS)

(DataBaseApplicationSystems)

指系统开发人员利用数据库资源开的面向某一类实际应用的应用软件系统.

三、数据库管理系统(DBMS)

(DataBaseManagementSystem)

对数据库进行管理的系统软件

四、数据库系统(DBS)

引入了数据库技术后的计算机系统。它实现了有组织地、动态地存储大量关联数据及提供数据处理

及信息共享的手段。

1、组成

数据库(DB)

数据库管理系统(DBMS)及相关软件

数据库管理员及用户

硬件系统

DBS包括DB和DBMS

数据库系统的核心是数据库管理系统

1.1.3数据模型和二维表

通过计算机处理数据,首先存在着把事物及事物间的联系抽象为计算机所能接收的数据的一个过

程。

一:实体描述

1、实体

客观存在并可以相互区别的事物

形式:

实际存在的事物.(例:职工,图书)

抽象的事件.(例:职工的比赛活动,借阅图书)

2、实体属性

描述实体的特性称为属性

例:职工属性(职工号,姓名,性别,出生日期,职称)

图书属性(总编号,分类号,书名,作者,单价,出版社)

实体:属性值的集合

实体型:属性的集合

实体集:同类型实体的集合

VisualFoxPro中,表的字段对应实体的属性;表中的记录对应一个具体的实体;表对应实体集;某个

记录属性的集合对应实体型。

二、实体间联系

1、联系

实体与实体间的对应关系,它反映现实世界事物之间的联系。

三、数据模型

1、概念:DBMS中表示实体与实体间联系的方法

2、数据模型的种类

层次模型:通过树型结构来反映实体与实体间联系的方法,适宜于反映实体之间1:n的关系;

网状模型:通过网状结构来反映实体与实体间联系的方法,适宜于反映实体之间m:n的关系;

关系模型:

用二维表格的结构形式来表示实体及实体间的联系。

1.2关系数据库

121关系模型

用二金表的形式表示实体及实体间的联

系的数据模型称关系数据模型。

一、关系术语

1、关系:一个关系就是一张二维表,每个关系有一个关系名。在VisualFoxPro中,一个

关系就是一个表文件。

2、属性:二维表中垂直方向的列称为属性,

在VisualFoxPro中叫字段。

3、域:属性的取值范围。

4、元组:二维表中水平方向的行称为元组,

在VisualFoxPro中叫记录。

5、关键字:属性或属性的组合,其值能唯一标识一个元组,分主关键字和候选关键字.

6、外部关键字:如果一个字段不是本表的主字或候选关键字,而是另外一个表的主关字或候选关键字,

则此字段(属性)为外部关键字。

总结.

1、关系是元组(或实体)的集合,对应VFP中的表。

2、关系模式:实体属性的集合,对应表记录的属性。

3、元组:属性值的集合,对应VFP中的记录。

4、关系模型:若干个相互联系的关系模式的集合,在VFP中对应数据库。

1.2.2关系运算

一、传统的集合运算

1、并:指由属于两个关系R,S元组组成的集合。

2、差:指属于关系R但不属于关系S的元组组成的集合,

即差运算的结果是从R中去掉S中也有的元组。

3、交:由即属于关系R又属于关系S的元组组成的集合,即交运算的结果是R和S的共同元组。

注:以上运算均要求两个关系R,S必须具有相同的实型体,即属性集合要相同。

二、专门的关系运算

关系运算的操作对象是关系,运算的结果仍为关系。

1、选择

从关系中找出满足给定条件的元组组成新的关系。

也就是说,选择运算是在二维表中选择满足指定条件的行。

例:在Student(学生基本情况)表中,若要找出所有女学生的元组,

就可以使用选择运算来实现,条件是:Sex="女

2、投影

从在关系中指定若干个属性组成新的关系。

投影是从列的角度进行运算,相当于对关系进行垂直运算。

3、联接

联接运算是将两个关系模式拼接成一个更宽的关系模式,生成的新关系中满足联接条件的所有元组。(联

接是关系的横向结合)

联接过程通过联接条件来控制,联接条件中将出现两个表中的公共属性名。

自然联接

第二章:表的创建及常用命

VisualFoxPro6.0是一个32位数据库开发系统

一、表的创建

表的组成:表由表结构和表中数据组成

建立数据库表(.dbf)即表结构的四种方法:

(1)、通过项目管理器

(2)、通过“新建”菜单

(3)、通过数据库设计器

(4)、通过命令方式

Create[TabieName]

eg:create学生表.dbf

eg:ceratexs.dbf

1、Null

在表设计器中,Null用于表示字段值是否允许为空,Null在此表示的是缺值或无确定的值,即中

数据库中尚未存储数据的字段,它与空字符串,数值0等含义不同。

二、修改表结构,启用表单设计器

modifystructure

三、给当前表追加新记录

append命令或ctrl+y

命令格式

Append[Blank]

功能:该命令用于向当前表末尾添加空记录或以交互式填写记录。

命令说明

(1)、Blank子句用于在表尾添中空记录,若省略Blank参数,则进入记录编辑对话框以交互式输入记

录。

(2)、若添加的是空记录,要向表中输入数据,则还需用Edit,Change或Browse等命令来实现。

eg:use学生表

append

****四、补充四个标识符

(1)、Bof(文件头):BeginningOfFile具体的位置是最上面那一条记录的上面。

(2)、Top(顶端):最上面的那条记录,并不等同于1号记录。

(3)、Eof(文件尾):EndOfFile最下面的那条记录的下面。

(4)、Bottom最下面那条记录,不一定是记录号最大的记录。

网学生表口回区I

BOF►姓名性别1大学英语1计算机1高数1

TOP»1001张三男80.508010

1002王小丫女60.0010080

1003李四女25.005060

1004张三丰男98.005010

BOTTOM—»1005王五丁80.009013

EOFy

五、三个常用函数

(1)、RecnoO测试当前记录的记录号,结果为N型。

(2)、Bof()测试当前记录指针是否指向BOF,结果为L型。

(3)、Eof()测试当前记录指针是否指向EOF,结果为L型。

六、go(或got。)指针的绝对定位。

eg:goN/Top/BottomoN是代表记录号。

七、skip

•skip]

功能:以当前记录作为参考点,向下或向上移动指针。其中N是代表移动的记录数。

八:displaylist

格式:display[范围]for表达式,如果没的for表达式,表示范围为显示当前记录。

补充:VFP中的四个范围

(1)All表示全部记录,All与当前的记录无关。

(2)NextN

N代表的记录数,

表示从当前记录开始往下数,总共有N条记录,包括当前记录。

如:use学生表

go3

display

displayall

go2

displaynext2

(3)RecordN表示记录为N那条记录。与当前记录无关。

如:go2

displayrecord3注:显示3号记录

(4)Rest表示从当前记录开始,

往下到最后一条记录,包括当前记录。

如:go2

displayrest(显示的是:2、3、4条记录)

八、list

格式:list[范围]for表达式

功能:显示记录所有记录

如:usexs

go2

list

?recno()2

九、使用Browse命令浏览记录

命令格式

Browse

命令功能

该命令用于打开浏览窗口以浏览表中的记录。

【例】假设已建立一个Student表,则要浏览Student表中的内容,可采用如下命令:

UseStudent

Browse

十、insert命令

格式:Blank[Before][Blank]

功能:在表的任意位置插入一条记录

说明:

(1)、Before子句用于在当前记录前插入新记录,缺省则在当前记录之后插入新记录.

(2)、Blank子句用于插入空记录,若缺省则出现记录编辑对话框

(3)、若添加的是空记录,则要向表中输入数据,还需用Edit,Change或Browse等命令来实现。

VFP中记录的删除要经历两步:

(1)逻辑删除,即先在要删除的记录上加删除标记;

(2)物理删除,即用Pack命令将带有删除标记的所有记录从表中物理删除。

VFP提供了三种删除记录的命令:

Delete(逻辑删除即置删除标记)。

Pack(物理删除)命令以及Zap(全部删除)命令。另外,VFP也提供了对已标记删除标记的记录进

行恢复的Recall命令。

H一、置删除标记Delete命令

逻辑删除指在满足条件的记录上打上删除标记"*",并不真正将其从表中删除。

格式:Delete[For1Expressionl]pack

功能:对当前表上满足条件的所有记录加上删除标记"*

说明:

For子句用于将满足条件的所有记录加上删除标圮,若缺省,则在当前记录置删除标记。

【例】若要逻辑删除Student表中的第3条记录,那么可以使用如下命令:

UseStudent

Go3

Delete

【例】若要逻辑删除Student表中的所有的男生记录,那么可以使用如下命令:

Use学生表

DeleteFor性别=“男”

十二、恢复记录Recall命令

格式:Recall[ForlExpressionl]

功能:用于对已做了删除标记的记录进行恢复操作,即撤消记录上的删除标记“

说明:

For子句用于恢复所有满足条件的记录,若缺省则只恢复当前记录。若当前记录上无删除标记,则

什么都不做。

例:恢复当前表中已经删除的女生记录

RecallFor性别="女”

十三、物理删除所有带有删除标记的记录Pack命令

格式:Pack

功能:对当前表中所有已做了删除标记的记录进行物理删除操作。

十四、物理删除表中的所有记录Zap命令

格式:Zap

功能:物理删除当前表中所有记录,不管是否带有删除标记。

说明:

(1)、该命令只删除表中的记录,并不删除表的结构。

(2)、该命令等同于Delete和Pack两条命令的组合。

(3)、该命令删除时全部删除,而不管记录上是否带有删除标记。

十五、Copyto

格式:Copy[范围]To新表名For表达式Fields字段名列表。

功能:将当前表中指定范围内满足For表达式的记录复制生成新的表文件。其中新的表文件所包含的

字段由Fields后面的字段列表决定。

例如:

Usexs

Copytoj:\student.dbf

Copytoj:\student.dbffields学号,姓名

Usexs

Go2

DeleteNext2

Copytoj:\xsl.dbffordelete()

十六、Copystructureto

格式:Copystructureto表文件fields字段名表

功能:将当前表的结构复制生成新的表文件,生成的表是一个空表。

例如:

usexs

list

copystructuretonew.dbf

usenew

liststructure

modifystructure

注:第十五和十六条命令的to后面必须是一个新的文件或是一个处于关闭状态下的表文件,如果是一

个处于打开的状态下的表文件,则系统将会出现”文件正在使用“

closeall

十七、copystructureto结构描术文件extended

功能:将当前表文件的结构生成一个结构描术文件。结构描术文件也是一个表文件,只是它的结构是由

VFP自动设置的。

例如:

usexs

copystructuretonewlextended

usenewl

liststructure

*十八、AppendFrom

格式:AppendFrom表文件for表达式

或AppendFromarray数组名for表达式

功能:将另一个表中满足for表达式的记录追加到当前表中,或者将一个数组中满足for表达式的数

据添加到当前表。

例如

1、先打开表

useaa

2、使用appendfrom

Appendfromxs.dbf

则将xs.dbf中所有的记录添加到aa.dbf的后面。

十九、Clear清屏作用

第三章:VFP基础知识

3.1常量和变量

据计算机处理数据的形式来划分,VFP除表中的数据外,还有常量,变量,表达式,函数四种

形式的数据,而对于每一种数据来说,都有一定的类型,数据类型决定了数据的存储方式和运算方

式。

对一个表中的数据,其类型是在定义表的结构时定义的。常见的数据类型有:

1、字符型2、数值型3、货币型

4、日期型5、日期时间型6、逻辑型(L)

3.1.1常量

1、常量:指程序运行期间其值不变的量,其类型主要有以下六种:

(1)字符型常量:

用定界符(单引号',、双引号”“和方括号[])括起来的字符串。

(示例:"ade”<568,[book]“<book,的中文意思是,书,。”)

注意:

定界符不作为字符型常量本身,但它规定了常量的类型以及常量的起始与终止界限

字符型常量的定界符必须成对匹配(例:"myname,,[bcde”两个表示均错]

若某种定界符也是字符串本身的内容,则需要用另一种定界符作为该字符串的定界符.(例:

“'abed",[“abc[ned]”])

不包含任何字符的字符串(”“)叫空串,它与包含空格的字符串(”“)不同

(2)数值型常量:用来表示一个数量的大小

构成:由数字,负号,小数点构成.

表示形式:一般:538,-10.5

科学记数法:56E-12,34E4,-1.05E+20

(3)货币型常量:用来表示货币值,书写时应加前导符"$"

注:货币型常量无科学记数表示法,其处理和运算时采用4位小数,如果一个货币型常量多于4位小数,

则系统会自动将多余的小数四舍五入。

例:$123.45678将存储为$123.4568(超过4位自动四舍五入)

例:S332E12(错误)$435(正确)

(4)日期型常量:表示一个确切的日期,

「花括号作为}定界符,分隔符为斜杠(/),连字符(-)或空格中任一种,默认为斜杠(/)。12-22-1980

影响日期格式的命令:

(l)SETMARKTO[日期分隔符]

功能:设置日期的分隔符

分隔符可设置为“/“,“,缺省时系统统默认为斜杠

(2)SETDATE[TO]AMERICAN|ANSI|YMD等

功能:设置日期的的显示格式,默认为美国格式

(3)SETCENTURYON/OFF

功能:设置日期型数据显示时年份以2位还是以4位显示。

(4)SETSTRICTDATETO[0/1/2]

功能:用设置是否对日期格式进行检查

0表示不进行严格日期格式检查,与早期FoxPro兼容

1表示进行严格日期格式检查,系统默认

2表示进行严格日期格式检查,且对CTOD()和CDOT()函数也有效。

(5)逻辑型常量:只有逻辑真或逻辑假两个值,用句点(••)来作定界符

逻辑真的表示形式有:.「,.t.,.Y.,.y.

逻辑假的表示形式有:.F.,.f.,.N.,.n.

(示例:.t..T..f..F..Y..N..y..n.)

注:逻辑型常量的定界符不能省略

3.1.2变量

变量:在使用过程中其值可以改变的量。分为字段变量、内存变量两大类

1、字段变量

2、内存变量

(1)、内存变量:它是内存中的一个区域,其值就是存储于该区域里的数据,它常用来存储常数、中间

结果或最终结果。

(2)、内存变量的类型包括:

字符型(C),货币型(Y),

日期型(D),日期时间型(T),

数据型(N),逻辑型(L)六种.

(3)、当内存变量名与字段变量名同名时,字段名优先于内存变量名,若确实要使用内存变量,则可在

其前加上”乂->或(M.)”以示访问的是内存变量,而非字段变量。

3.1.3内存变量常用命令

一、内存变量的赋值

格式1:

STORE(表达式)T0

store〈变量名列表或数组名列表》

功能:将表达式的值赋给一个或多个内存变量.

格式2:

内存变量名*表达式>

格式2只能给一个变量赋值,而格式1可给多个内存变量或数组赋值。

【例如】

store3*4toal,a2,a3,a4,a5则al,a2值均为12

【例如】

bl=3将bl赋值3;

b2=bl+2将bl加2后的值赋给b2,此时b2等于5;

b2=b2+3将b2加3后的值再赋给b2,此时b2等于8。

说明:

一个变量的值可以不断变化,最终结果是它最后一次的赋值,在此,”="不是等于运算符,而赋值运算

符。

2、表达式值的显示

?

??

3、显示内存变量

格式:

LIST/DISPLAYMEMORY[LIKE〈通配符>][TOPRINTER/TOFILE<文件名>]

说明:

◎通配符指"?“和“

?:表示任意的一个字符。

*:表示任意多个字符。

like短语用于显示与通配符匹配的内存变量

list和display区别为:

4、释放内存变量

格式1:RELEASE〈内存变量名表》

格式2:RELEASEALL[LIKE〈通配符>/EXCEPT〈通配符》]

格式3:RELEASEALL[EXTEND]

格式4:CLEARMEMORY

说明:

(1)、格式1用释放指定的内存变量。

(2)、格式2:选用LIKE短语用于清除与通配符本匹配的内存变量,若选用EXCEPT短语,用于清除与

通配符不相匹配的变量。

(3)、格式3用于清除所有内存变量。

(4)、格式4用于在关闭所有文件的同时清除所有的内存变量。

示例:RELEASEALL

RELEASEX,Y,Z

RELEASEALLLIKEA*

二、数组

2、数组的定义

命令格式:

Dimensiondeclare〈数组名1>(<下标上限1>[,<下标上限2>])

说明

(1)〈下标上限》为数组下标,对一维数组来说,指的是数组元素的个数;对二维数组来说,指的是数组

的最大行号和最大列号。

(2)数组的下标允许使用圆括号或方括号括起来。

(3)在同一个数组中,不同的数组元素数据类型可以不同。

(4)数组一旦被定义之后,

该数组的每个元素的初值为逻辑假值,

即.F.,可以使用有关的命令给数组元素赋值。

(5)数组应先定义,再使用,这与普通的内存变量不一样。

例如:Dimensionaa(3),C[2,3]

二维数组举例:

DIMENSIONA(2,3)

A(l,1)=1A(l,2)=2A(l,3)=3

A(2,1)=4A(2,2)=5A(2,3)=6

123

456

?a(l,1)

二维数组元素的存放:按行存放

例如:给二维数组X和一维数组Y进行赋值。

DIMENSIONX(3,4),Y(3)

STORE5TOX

Y(1)=325

Y(2)="ABC”

Y(3)=.T.

5、表中数据与数组数据之间的交换

(1)、表中的数据传送到数组的语句

格式1:

SCATTERTO〈数组名〉

例:DIMEA(9)

USE学生表.dbf

SCATTOA

?A(l),A(2),A(3)

(2)数组中的数据复制到表的的当前记录

格式1:

GATHERFROM〈数组名>[FIELDS〈字段名表>][MEMO]

格式2:

格式1:将数组中的数据作为一个记录复制到表的当前记录中,从第一个数组元素开始,依次向指定的

字段填写数据。

例dimeA(3)

STORE“0”TOA

USE学生表

GATHFROMA

3.2表达式

1、表达式是指用运算符将常量、变量、字段或函数连接起来的有意义的式子。

2、表达式值:表达式最终计算结果

3、表达式的类型:由表达式值的数据类型决定,主要有:数值型、字符型、日期型、关系型、逻辑型

等。

3.2.1数值、字符与日期时间表达式

1、数值表达式

数值表达式是由算术运算符将常量、变量、字段或函数连接起来的式子,其结果仍为数值型数据。

(1)、数值运算符:圆括号()、乘方(**或,)、乘(*)、除(/)、取余(%)、加(+)、减(-)»

(2)、数值表达式:由数值运算符将数值型常量、变量、函数等连接起来的式子,其结果为数值型。

(3)、运算符的优先顺序:括号、乘方、乘除与取模、加减。

例:取余运算符闾的应用。?10%3?-10%3

2、字符表达式

字符表达式是由字符运算符将常量、变量、字段或函数连接起来的式子,其结果仍为字符型数据。

在字符运算符两边的数据必须是字符型数据。

(1)字符串运算符:+、-、字符串包含运算符($)和精确比较运算符仁=)o

说明:

+:两个字符串首尾连接形成新字符串;

-:当第一个字符串的尾部有空格时,

将第一个字符串尾部的空格移到第二个字符串的尾部,然后,再将两个字符串连接起来。

【例】?"ABC"+”DEF”="ABCDEF”

?“ABC“DEF”="ABCDEF”

包含运算符$:检测左边的字符串是否被包含在右边的字符串中。

如果包含,返回逻辑真值(」.),否则返回逻辑假值(.F.)。

精确比较运算符==:只有当两边的字符串完全相等时,才返回逻辑真值(.「),反之假(.F.)。

(2)字符表达式:由字符串运算符将字符型常量、变量、函数等连接起来的式子。

例:?”abc"+"bed"结果为“abcbed”

?”abcbed"结果为"abcbed'

?"book"$"bookstore"结果为(.T.)

?“the”$"this”结果为(.F.)

?“that”=="that”结果为(•「)

?”that“=="that”结果为(.F.)

3、日期时间表达式

(1)日期型运算符:(+)、(-)

例如

?{04/03/99,12:30:20}+20结果为:{04/23/99,12:30:40)

?{04/03/99,12:30:20}-20结果为:{03/14/99,12:30:00)

?{03/03/99,12:30:20}-{03/3/99,11:30:20}结果为3600

例如:已知某个人的出生日期为1979年7月20日,计算其现在年龄为多少?

(「2008/1/17}-「1979/7/20})/365

注意:

(1)两个日期及日期时间型数据的相加是无意义的。

(2)+和-既可作为日期运算符,也可作算术和字符串运算符,而使用时具体做何种运算符受其所连接运

算对象决定。

3.2.2关系表达式

(1)关系运算符:小于(<)、大于(>)、等于(=)、不等于(<>、#或!=)、小于等于(<=)、大于等于(>=)。

(2)关系表达式:由关系运算符、数值表达式、字符表达式或日期表达式组合而成的式子,返回结果为

逻辑型数据。

(3)关系运算符的两边,可以是字符表达式、数值表达式或者日期表达式,但两边的数据类型必须一致

才能进行比较。

(4)=与==不完全相同。前者称为普通比较,后者称为精确比较。

当环境设定为SETEXACTON时,二者有一定区别;当环境设定为SETEXACTOFF时,结果是不同的。

比较时,使用右字符串去比较左字符串。当右字符串比较完,则比较结束。如果此时的比较结果相同,

则=比较的值为.「,而不管左字符串是否结束;相反,==则要求左右必须完全一致,结果才为.T.。

【例】?”abede”=“abc”

当设置了SETEXACTOFF时,上述关系表达式结果为.T.

当设置了SETEXACTON时,上述关系表达式结果为.F.

(5)比较大小时,

日期早的日期型数据小于日期晚的日期型数据;

越早的越小,越晚的越大

如:{*2000-06-11}>{*2008-12-15}

(6)字符型数据比较时从左到右逐个比较,当某个字符不一样时,则两个不同字符的大小决定两个字符

串的大小,字符的大小受命令设置影响.

例:?"abc”>“ab”结果为(.T.)

(7)字符串包含运算符"$”用于比较左字符串是否存在于右字符串中,如果存在,则为.T.,反之为.F.。

(8)比较货币或数值时,按数值及货币的大小比较

例:?$564>$234结果为(.T.)

例:?“王”$"王红”结果为.T.

1、字符排序次序的设置

当比两个字符串时,系统对两个字符串的字符自左向右逐个进行比较,一旦发现两个对应的字符不

同,则根据这两个字符的排列次序决定两个字符串的大小,其字符的排列次序(即字符的大小)受设置命

令的影响,其命令设置方法:

(1)在“工具”菜单下选择"选项“,打开”选项对话框,选择其中的”数据选项卡,再选择右上方的”

排列序列''下列框中选择"Machine(机器)","PinYin(拼音)”,或者"Stroke(笔画)”

(2)命令设置方式

命令:SETCOLLATETO“〈排序次序名>“

次序名可以是:"Machine","PinYin”,或"Stroke”

(3)字符的排列次序

Machine(机器)次序:西文字符按照ASCII码值排列,空格在最前面,大写ABCD字母序列在小写abed

字母序列的前面,因此大写字母小于小写字母;对于汉字,据它们的拼音顺序决定其大小,其拼音第一

个字母在后的值大.

例:?"计算机”>“电脑”结果为(.T.)

?"a”<“A”结果为(.F.)

PinYin(拼音)次序:按照拼音次序排序,对于西文字符,空格在最前面,小写abed字母序列在前,大

写ABCD字母序列在后,即大写字母大于小写字母。

Stroke(笔画)次序:中文按照书写笔画的多少排序;对于西文与拼音方式相同。

3.2.3逻辑表达式

逻辑表达式是由逻辑运算符将关系表达式连接起来的表达式,结果为逻辑真和逻辑假。

逻辑运算符有:.NOT(非).、.AND(与).和.OR(或)…

优先级别:.NOT.、.AND.、.OR.。

运算规则为:

注意点总结:

And逻辑与遇假则假

Or逻辑或遇真则真

not或!逻辑非真假互换

【例】已知某28岁女职工工资为600元

?NOT.(性别=“女”)结果为.F.

?性别="女”.AND.年龄>=28结果为.T.

?性别="男”.AND.年龄>=28结果为.F.

?性别=“女”.OR.年龄<28结果为.T.

3.2.4运算符的优先级

同一类运算符可同时出现在一个表达式中,其运算具有优先级,而对不同类型的运算符也有可能出

现于同一表达式,此时也要据它们的优先级顺序来决定表达式的运算顺序.

不同类型运算符在同一表达式中的运算符优先级顺序为:

1、算术运算符:(),**或八,*/%,+-

2、字符串运算符和日期时间运算符:+-

3、关系运算符

4、逻辑运算符:NOT,AND,OR

例:12>2.AND.,人,<,人民,.OR..T.<.F.

先判数12>2,再判断‘人'<'人民',再运算AND,之后再运算.T.<.F.,最后运算0R.

例:((10%3)AND(15%2=0))OR,电脑,!=,计算机,

3.3常用函数

函数是用程序来实现的一种数据运算或转换,每一个函数都有特定的数据运算或转换功能,它往往

需要若干个自变量,即运算对象或参数,但函数只能有一个返回值,称为函数值或返回值,函数值的类

型决定了函数的类型,其常见类型有:

函数的格式:函数名(参数1,参数2)

3.3.1数值型函数

(IX绝对值函数

格式:ABS(〈数值表达式〉)

功能:返回数值表达式的绝对值。

【例】?ABS(-12.34)结果为12.34

(2)、最大值函数

格式:MAX(〈数值表达式1>,<数值表达式2>)

功能:计算各数值表达式的值并返回最大值。

【例】?MAX(5*4,60/2)结果为30

(3)、最小值函数

格式:MIN(〈数值表达式1>,(数值表达式2>)

功能:计算数值表达式的值,返回最小值。

(4)、平方根函数

格式:SQRT(〈数值表达式〉)255

功能:计算数值表达式的平方根。

注:其自变量表达式不能为负

【例】?SQRT(25*4)结果为10

?-SQRT(ABS(zz))

(5)、取整函数

格式:INT(〈数值表达式》)

CEILING(〈数值表达式》)

FLOOR(〈数值表达式》)

功能:

INTO返回数值表达式的整数部分.

【例】?INT(-4.68)结果为-4

****(6)四舍五入函数

格式:ROUND(〈数值表达式),〈保留小数位数》)

功能:返回指定数值表达式指定位置后的结果。

说明:如果保留小数位数为正数n,

则对小数位进行四舍五入,

如果保留小数位数为负数n,

则对整数位进行四舍五入.

第0位指整数部分的第一位数即个位

【例】?ROUND(123.34567,3)结果为123.346

?ROUND(753.34567,-3)结果为1000

(7)圆周率函数

格式:PI()

功能:返回圆周率(数值型),无自变量

(8)求余函数(与%等同)

格式:MOD(〈数值表达式1>,<数值表达式2>)

功能:

返回两个数相除后的余数.3%5

〈数值表达式1》为被除数,

〈数值表达式2>为除数,

余数的符号与被除数相同,

如果被除数与除数同号,

则函数值即为两数相除的余数;

若被除数与除数异号,

则函数值为两数相除的余数再加上除数的值.

例:

?MOD(1O,3),MOD(10,-3),MOD(-10,3),MOD(-10,-3)

则结果为:1-22-1

注:首先将除数和被除数的符号忽略进行求余运算,得到X=L

再将X的符号定为被除数的符号,得到Y=T。

由于除数和被除数是异号,所以结果是:Y+除数=-1+3=2。

mod(15,-4)=-l3+(-4)15-12=3+(-4)=-1

mod(-15,4)=1-3+4-15+12=-3+4=l

1、满足MOD(X,2)=0这个表达式时,说明X是一个偶数。

2、满足MOD(X,2)=1这个表达式时,说明X是一个奇数。

3、MOD(X,5)=0

如下数列请描术它的通项公式。

(1)1、9、17、25、33...

(2)3、7、11、19、23...

MOD(X,8)=1或MOD((X-1),8)=0

MOD(X,4)=3或MOD((X+l),4)=0

3.3.2字符型函数

字符型函数主要对字符型数据进行运算。

(IX求子串位置函数

格式:

AT(〈字符表达式1>,〈字符表达式2>,[<数值表达式n>])

ATC(〈字符表达式1>,〈字符表达式2>,[<数值表达式n>])

功能:

著找〈字符表达式1>在〈字符表达式2>中的起始位置。如果有<数值表达式n>,则确定〈字符型表达

式1>在<字符型表达式2>中的第n次出现的起始位置,若缺省〈数值表达式n>默认为1;如果字符表达

式1不是字符表达式2的子串,则返回为0。

界H

T0

【例】?AT(“A”,"BCDE”)K

劣m1

?AT("A","ABADE”)/l

身n4

?AT(“A”,"ABCADE”,2)=T

ATC函数不区分大小写

?ATC("a","ABCDA”,1)

(2)、截取子串函数

*****格式:SUBSTR(〈字符表达式》,〈起始位置>,[<长度>])

功能:从指定的〈起始位置》开始,在〈字符表达式》中截取指定〈长度》的字符串。

说明:假设起始位置为m,长度为n。若省略n,则从m开始截取以后的所有字符串;若n大于从m开

始的字符串长度,则从m开始截取以后的所有字符串;若m大于字符表达式的长度,则截取的字符串为

空白字符串。

【例】

?SUBSTR(“HARDWORK”,3,4)结果为“RDWO”

?SUBSTR(“HARDWORK”,2)结果为“ARDWORK”

?SUBSTR(“HARDWORK”,3,9)结果为“RDWORK”

?SUBSTR(“HARDWORK”,9,5)结果为““

(3)、左截取子串函数

格式:LEFT(〈字符表达式>,〈数值表达式》)

功能:从字符表达式左边开始,截取〈数值表达式>指定长度的字符串。

【例】

?LEFT("HARDWORK",3)'结果为“HAR”

(4)、右截取子串函数

格式:RIGHT(〈字符表达式>,〈数值表达式》)

功能:从字符表达式右边开始向左截取〈数值表达式)指定长度的字符串o

【例】

?RIGHT(“HARDWORK”,3),结果为“ORK”

(5)、生成空字符串函数

格式:SPACE(〈数值表达式》)

功能:生成指定空格数的空字符串。

【例】?SPACE(3)'结果为““

(6)、字符串长度函数

格式:LEN(〈字符表达式》)

功能:求字符串的长度(包括空格)。

【例】?LEN("howareyou")11

'结果为11

?Len(space(3)-space(6))

(7)、字符串替换函数

格式:

***STUFF(〈字符表达式1>,〈起始位置〉,〈长度〉,〈字符表达式2〉)

功能:从指定的起始位置开始,用字符表达式2替换字符表达式1中指定个数的子串。

说明:替换与被替换的字符个数不一定相等;若长度为0,则将〈字符表达式2>插入到字符表达式1中;

若〈字符表达式2>为空,则指定长度的字符串被删除.

【例】7STUFF(wcomputerw,3,4,“abc”)'结果为"coabcer”

?STUFF("computer”,3,1,“abc”)'结果为"coabcputer”

?STUFF("computer”,3,4,”“)‘结果为“coer”

(8)、删除前后空格函数

格式:TRIM(〈字符表达式》)

LTRIM(〈字符表达式》)

ALLLTRIM(〈字符表达式))

功能:

TRIM。返回指字符表达式值去掉尾部空格后形成的字符串

LTRIM0返回指字符表达式值去掉前导空格后形成的字符串

ALLTRIM()返回指字符表达式值去掉前导和尾部空格后形成的字符串

例:

STORESPACE(1)+“TEST'+SPACE(3)TOSS

?TRIM(SS)+LTRIM(SS)+ALLTRIM(SS)

结果为:”TESTTESTTEST”

?LEN(SS),LEN(TRIM(SS)),LEN(LTRIM(SS)),LEN(ALLTRIM(SS))

结果为:8574

(9)、计算子串出现次数函数

格式:OCCUS(〈字符表达式1>,<字符表达式2>)

功能:

返回第一个字符串在第二个字符串中出现的次数,若第一个字符串不是第二个字符串的子串,则返

回0.

例:STORE'abracadabra'TOS

?OCCUS('a',S),OCCUS('b',S),OCCUS('c',S),OCCUS('e',S)

结果为:5210

(口)、字符串匹配函数(等同于==)

格式:LIKE(〈字符串表达式1》,〈字符串表达式2>)

功能:

比较两个字符串对应位置上的字符,若所有对应字符都相匹配,函数返回逻辑真(」.),反之,返

回逻辑假(.F.)

〈字符表达式1>中可包含有通配符"*“和“?”

例:STORE“abc”TOx

STORE“abed”TOy

?LIKE(“ab”,x),LIKE(“ab*”,y),LIKE("?b”,x),LIKE(“Abe”,x)

结果为:.F..T..F..F.(大小写区分)

(12)、字符替换函数

格式:Chrtran(〈字符表达式1>,〈字符表达式2>,<字符表达式3>)

功能:

当第一个字符串中的一个或多个字符与第二字符串中的某个字符相匹配时,就用第三个字符串中的

对应字符(即与第二个字符串位置对应)替换这些字符,若第三个字符串包含的字符个数少于第二个字符

串包含的字符个数,即无对应字符,则第一个字符串中相匹配的字符被删除;反之,若多余,则多余字

符被忽略.

例:X1=CHRTRAN(“ABACAD”,“ACD”,“X12”)

CHRTRAN("ABACAD”,“ACD”,“X12”)

CHRTRAN(“XBACAD”,“ACD”,“X12”)

CHRTRAN(“XBXCAD”,“ACD”,“X12”)

CHRTRAN(“XBX1AD”,“ACD”,“X12”)

CHRTRAN(“XBX1X”,“AC”,“XI”)

CHRTRAN(“XBX1X2”,“ACD”,“X12”)

yl=CHRTRAN(“计算机ABC”,“计算机“,"电脑

Z1=HCRTRAN(“大家好”,“大家”,“你”)

?XI,yl,zl

结果等于多少?

3.3.3日期函数

(1)、系统时间函数

格式:TIME()

功能:返回当前系统时间。时间格式为HH:MM:SS

说明:此函数返回值不是日期时间型,

****而是字符型

【例】?TIME()

(2)、系统日期函数

格式:DATE()

功能:返回当前系统日期,函数值为日期型

(3)、系统日期时间

格式:DATETIME()

功能:返回当前系统的日期时间,函数值为日期时间型

【例】SETDATETOYMD

?DATE()

'假设当前日期为2001/2/17,那么结果为01/02/17

(4)、年函数

格式:YEAR(〈日期型|日期时间型〉)

功能:输出日期型表达式的年份。

【例】?YEAR(DATE())'假设当前日期为2001/2/17,那么结果为2001。

(5)、月函数

格式:MONTH(<日期型|日期时间型》)

功能:输出日期型表达式的月份。

【例】?MONTH(DATE())'假设当前日期为2001/2/17,那么结果为2

(6)、日函数

格式:DAY(〈日期型|日期时间型》)

功能:输出日期型表达式的日。

【例】?DAY(DATE())'假设当前日期为2001/2/17,那么结果为17

(7)、时,分,秒函数

格式:HOUR(〈日期时间表达式》)

MINUTE(〈日期时间表达式》)

SEC(<日期时间表达式〉)

功能:返日期时间型表达式的当前小时,分钟和秒数

注:此三函数的参数只能为日期时间型,而不能是日期型.

3.3.4转换函数

数据的运算要求符合数据类型一致的原则,因此,若要对不同类型的数据进行运算,那么必须通过

转换函数将其转换为一致的数据类型。

(IX数值型转换为字符型函数

格式:STR(〈数值表达式>[,<长度>][,<小数位数>])

功能:将数值表达式按设定的长度和小数位数转换成字符型数据。

说明:转换后字符串的理想长度应为L,即刚好等转换后的数值所有位,包括小数点及负号在内。

〈长度》为转换后的字符串位数,若〈长度〉的设定值大于L,则转换后的字符串前补”空格”;若〈长度》

的设定值小于L而大于实际数值的整数部分位数,则优先满足整数部分而自动调整小数位数;若〈长度〉

的设定值小于L又小于实际数值的整数部分位数,则返回一串星号(*)

【例】?STR(123.4567,6,2)'结果为123.46

?STR(123.4567,9,2)'结果为"123.46”

?STR(123.4567,6,3)'结果为123.46

?STR(123.4567,1,2)'结果为*

(2)、字符型转换为数值型函数

格式:VAL(〈字符型表达式》)

功能:将数字字符串转换为数值。

说明:转换时遇到非数字字符时停止;

***若第一个字符就不是数字,则值为0.00

【例】VAL("123.45AB")'结果为123.45

VAL(“A123.45AB”)'结果为0.00

(3)、字符转换为ASCH函数

格式:ASC(〈字符型表达式〉)

功能:返回字符表达式第一个字符的ASCH码值。

【例】ASC(“abc")'结果为97

(4)、ASCII码转换为字符函数

格式:CHR(〈数值型表达式》)

功能:将ASCII码转化为相应的字符。

A=65

a=97

0=48

【例】CHR(65)'结果为A

(5)、日期型或日期时间型转换为字符型

格式:DTOC(〈日期型表达式日期时间型>[,1])

TT0C(〈日期时间表达式>[,1])

功能:DT0C将日期型或日期时间型转换为字符型

功能:TT0C将日期时间型表达式转换为字符串。

说明:若使用选项LU,则转换为年月日无分隔符的形式。

【例】?DTOC(DATE())

假设当前日期为2001/2/17,那么结果为02/17/01

?DTOC(DATE(),1)

假设当前日期为2001/2/17,那么结果为20010217

(6)、字符型转换为日期型函数

格式:CTOD(〈字符型表达式》)

CTOT(〈字符型表达式》)

功能:CTOD将字符型表达式转换为日期型。

CTOD将字符型表达式转换为日期时间型

说明:字符串表达式的内容必须是0-9之间的字符,否则出错

【例】?CTOD(“02/17/64")'结果为02/17/64

(7)大写字母转换为小写字母函数

格式:LOWER(〈字符型表达式〉)

功能:将字符型表达式中的大写字母转换为小写字母。

【例】?LOWER(“AaBbCc")'结果为aabbcc

(8)小写字母转换为大写字母函数

格式:UPPER(〈字符型表达式》)

功能:将字符型表达式中的小写字母转换为大写字母。

【例】?UPPER(“AaBbCc")'结果为AABBCC

3.3.5测试函数

1、系统对表的记录是逐个处理的,对于一个打开的表来说,在每一时刻只能处理一条记录,VFP为每

一个打开的表设置一个内部使用的记录指针,指向正在被操作的记录,该记录称为当前记录.记录指针

的作用是标识表的当前记录.

2、表的逻辑结构如图所示,最上面的记录是首记录,记为TOP,最下面的记录是尾记录,记为BOTTOM.

在第一个记录之前有一个文件起始标识,称为BeginningofFile(BOF);在最后一个记录的后面还有

一个文件结束标志,称为EndofFile(EOF).使用测试函数能够得到指针的位置,刚打开表时,记录

指针总是指向首记录.

(1)、值域测试函数

格式:BETWEEN(〈表达式T〉,〈表达式L〉,〈表达式H>)

功能:判断〈表达式T>的值是否在〈表达式L>与〈表达式H〉之间,若在,则返回真.T.,反之返回假.F>;.

若〈表达式L>和〈表达式H>中有任一个为NULL是,则返回NULL.

【例】STORENULLTOX

STORE100TOY

?BETWEEN(150,Y,Y+100),BETWEEN(90,X,Y)

结果为:.T..NULL.

(2)、记录个数测试函数

格式:RECCOUNT(〈工作区号)|〈别名>))

功能:测试指定表或当前表的记录个数。

说明:(1)标识了逻辑删除的记录也包括在内,即返回表文件中物理

上存在的记录个数。

(2)若指定表没有打开,则返回0

(3)、工作区测试函数

格式:SELECT(〈工作区号》|〈别名〉))

功能:测试指定表或当前表所在的工作区号。

【例】SELECT1

USEStudent

SELECT2

USEScore

?SELECT()'结果为2

(4)、数据类型测试函数

格式:VARTYPE(〈表达式>[,逻辑表达式])

功能:测试表达式的数据类型,返回一个大写字母即代表数据类型的字母,具体参见课本P77表3.8。

表达式若为常量,则需用定界符界定。

说明:若〈表达式〉为一个数组,则返回第一个数组的元素的类型;

当表达式的运算结果为NULL时,则据〈逻辑表达式>的值返回表达式的值,若〈逻辑表达式>为.工,则返

回表达式的原数据类型;若〈逻辑表达式为.F.或缺省,则返回X以表明〈表达式》的运算结果是NULL;

若〈表达式〉运算的结果是NULL,则返回X,表示运算结果是NULL

【例】x="AAA”

STORE10TOy

STORE.NULL.TOx

STORE$100.2TOz

?VARTYPE(X),VARTYPE(X,.F.),VARTYPE(X,.T.),

?VARTYPE(y),VARTYPE(z)

结果为:XXCNY

(5)、空值(NULL)测试函数

格式:ISNULL(〈表达式〉)

功能:判断〈表达式》的运算结果是否为NULL值,若是NULL值返

回逻辑真(.「),反之为假(.F.)

(6)、“空”值测试函数

格式:EMPTY(〈表达式〉)

功能:判断〈表达式》的结果是否为“空值”,若是则返回逻辑具(.T.),反之返回逻辑假(.F.)

NULL与“空”的区别:

NULL表示一个不确定的值,而“空”表示不同数据类型所代

(7)、条件测试函数

格式:IIF(〈逻辑表达式》,〈表达式1〉,〈表达式2>)

功能:测试〈逻辑表达式>的值,若为真(.「),函数返回〈表达式1>的值,反之返回〈表达式2>的值,

其中表达式1与表达式2的类型可以不一样

(8)、记录删除测试函数

格式:DELETED(k别名)|〈工作区号>])

功能:测试指定表或当前表的当前记录是否有删除标记"*",若有则返回真(.T.),反之返回假

(.F.)

(9)宏替换函数

格式:&<字符型变量》

功能:替换出字符型变量的内容,即&的值是变量中的字符串,如果该函数与其后的字符无明确分界,

则要用”.”作函数结束标识.

例:STORE'职工'TODB

USE&DB

XM=“姓名”

?&XM+结果为李小明你好

SKIP

?XM,结果姓名李新

值为

3.5.6程序设计

定义:是为完成某种任务的命令序列,这些命令序列按照一定的结构合理地、有机地组合在一起,

并以文件的形式存储在磁盘上,称命令文件。

程序执行时,从磁盘上调入内存,系统按照文件中排列的顺序从第一条命令逐条执行,直到结束。

2、关于程序的几点说明

⑴注释

•代码行注释:以NOTE或*开头的注释,独立占用一

温馨提示

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

评论

0/150

提交评论