Visual FoxPro语言基础课件_第1页
Visual FoxPro语言基础课件_第2页
Visual FoxPro语言基础课件_第3页
Visual FoxPro语言基础课件_第4页
Visual FoxPro语言基础课件_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

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

文档简介

第三章VisualFoxPro语言基础

3.1数据库和表的建立

3.1.1几个常用符号的约定

本书使用了几个常用符号,这些符号的含义约定如下:

(1)<>:必选参数表示符。由这一对符号括起的部分是

用户必须要提供的参数,但不要输入这对表示符本身。

(2)[]:任选参数表示符。由这一对符号括起的部分是由

用户决定是否选择,可以选,也可以不选。括起的部分也称

作选择项或可选项,但不包括这对表示符本身。

(3)/:二选一表示符。表示用户可从本符号左右两项中

选择一项。

(4)/?:显示一对话框旧选择1

2012-10-2

3.1.2改变默认盘和当前路径命令——SET

DEFAULTTO

VFP系统在任何时候都向用户提供一个默认盘,每一个盘

上都有一个当前目录。刚引入VFP时,VFP所在盘即为默认盘,

VFP所在目录即为当前目录。用户可利用本命令来改变默认盘,

改变当前目录。

命令格式:SETDEFAULTTO卜字符表达式>]

其中〈字符表达式,可以是盘符、盘符与目录名、子目录名。

下列命令将使默认盘为D盘:

SETDEFAULTTOD[:]

2

2012-10-2

若C盘为默认盘,当前目录为根目录,则以下命令将默

认盘当前目录改为C:\SALES:

SETDEFAULTTOSALES

下列命令可把默认盘根目录改为当前目录:

SETDEFAULTTO\

下列命令可把默认盘当前目录的上级目录改为当前目录:

SETDEFAULTTO..

带选择项时,本命令使VFP系统所在目录成为当前目录:

SETDEFAULTTO

3

2012-10-2

3.1.3命令的注释——&&子句

在命令的后面,可用&&<注释内容,子句为其注释。系

统不执行&&子句,它仅供用户阅读用。&&与前面的内容之

间必须有空格分隔。

4

2012-10-2

3.1.4操作数据库

1.创建数据库命令----CREATEDATABASE

在开发数据库应用程序时,首先应该创建数据库。

命令格式:CREATEDATABASE[〈库文件名〉/?]

命令功能:创建一个数据库并打开它。所建库文件的文

件名由命令给定。若缺省路径,所建库文件将存入默认盘当

前路径中;若缺省扩展名,系统默认其扩展名为.DBC。若命

令中未包含可选项或可选项选择了“?”,则将显示一个对话

框,请求用户指定新数据库的存取路径和名称。

5

2012-10-2

若指定路径中已有该库文件名,则系统将通知用户已存在

该文件,并询问是否要覆盖它。单击“是”按钮,则重新定义

该库文件;单击“否”按钮,则保留该文件,退出CREATE

DATABASE命令,回到VFP命令窗口。

例1在C盘上建立一名为“雇员管理.DBC”的数据库。

该例的创建过程为:

①启动计算机,使系统处于VFP命令状态。

把数据盘插入A驱动器。

②设置C盘为默认盘,在命令窗口中键入命令:SET

DEFAULTTOC

④建立“雇员管理.DBC”数据库,键入命令:CREATE

DATABASE雇员管理。

6

2012-10-2

则系统将在A盘上创建该数据库“雇员管理.DBC”。

2.打开数据库命令----OPENDATABASE

在使用一个数据库之前,必须先打开它。

命令格式:OPENDATABASE[<库文件名〉/?]

命令功能:打开指定库文件,若之前有其它库文件打开,

则同时关闭掉原来已打开的库文件。

若命令中缺省了库文件名的扩展名,系统默认为.DBC。

若命令中省略了可选项或可选项选择了“?”,则将显示-

对话框,要求用户指定欲打开库文件的存取路径和名称。

7

2012-10-2

例2SETDEFAULTTOD

OPENDATABASE雇员管理

系统执行该命令后,将打开D盘上的“雇员管理.DBC”数

据库。

3.关闭数据库命令——CLOSEDATABASE

在使用完数据库之后,必须关闭它。

命令格式:CLOSEDATABASE

命令功能:关闭当前打开的数据库,同时也关闭了这个数

据库中已经打开的各种文件。

4.删除数据库命令---DELETEDATABASE

当永远不再需要某个数据库时,应当从磁盘上删除它。

8

2012-10-2

命令格式:DELETEDATABASEv库文件名〉

命令功能:从磁盘上删除指定的数据库文件以及这个数

据库所包含的所有文件。

9

2012-10-2

W3.1.5创建数据库表——CREATE

建立一个表文件包括两部分工作:建立表文件结构和输入数据。

定义表文件的文件名和每个字段的字段名、字段

类型、字段宽度的工作称为建立表文件的结构。

命令格式:CREATE]v表文件名〉/?]

命令功能:在当前打开的数据库中定义一个表文件结构,

并把该文件存入磁盘。所建表文件的文件名由命令中给定,若

缺省扩展名,系统默认其扩展名为.DBF。

注意:在创建数据库表之前,必须首先打开要创建表的

数据库文件。创建自由表可直接建立。

10

2012-10-2

例3在数据库例sgl.dbc”中创建职工情况表"xs.dbFo

首先,确定各字段结构如下:

字段名类型宽度小数位数索引NULL

i学号、字符型-8:>1

姓名字符型

10■■

性别字符型2

生日日期型8

班级字符型5

党员否逻辑型1

入学成绩整型4

照片通用型4

备注备注型4

11

2012-10-2

在命令窗口中键入以下命令:

SETDEFAULTTOD&&设置D盘为默认盘

OPENDATABASEXSGL&&打开“XSGL.DBC”

数据库

CREATEXS&&建立“职工.DBF”表文件

系统执行上述命令后,将在“XSGL.DBC”中建立表文件

“xs.DBF”,并打开表设计器。

“NULL”栏用于设置当前字段是否可以为NULL值(空

值)。

字段表页中还有一些关于字段高级属性的设置,如索弓I、

显示方式、字段标题、验证规则等,我们将在第八章中详细

介绍。____________

12

2012-10-2

图2-1表设计器窗口

13

2012-10-2

量现在,光标在“字段名”下等待用户输入第一个

"9段的字段名。按前面对职工表各字段的定义依次输

入。

设计完成后,单击“确定”按钮,这时系统将显

示如图所示的信息框来询问是否立即输入记录,选择

“是”,则转入输入数据的工作;若选择“否”,则

创建新表过程完成,回到VFP命令窗口,我们选择

“否”结束创建工作。

只要在定义字段时,定义了一个备注型字段,系

统就自动建立文件名与该表文件同名,扩展名为

・FPT的备注文件。14

2012-10-2

图2-2建立表结构

15

2012-10-2

现在输入数据记录吗?

是(Y)否(N)

16

2012-10-2

3.1.6打开表文件命令——USE

要使用一个表文件,必须先打开它。

USE命令格式:USEv表文件名〉

若缺省了表文件的扩展名,系统默认为,DBFo

功能:打开指定表文件,同时关闭掉原来已打开的表文件。

如果该表文件有备注型字段,则同时打开与表文件同名、扩展

名为.FPT的备注文件。

注意:在打开表文件之前,必须首先打开它所在的数据库文件。

例4SETDEFAULTTOD

OPENDATABASEgygl

USEXS&&打开“XS.DBF”表文件

17

2012-10-2

M.1.7记录指针及其操作命令

GO、SKIP

打开一个表文件后,系统立即给这个表文件提供一个记录

指针,简称指针。指针里存放的是一个十进制数,如5、18等,

它是某个记录的记录号,此时表明记录指针指向了这个记录,

而这个记录也被称为当前记录。若记录指针为58,则说明记录

号为58的记录为当前记录。

刚打开一个表文件时,记录指针指向首记录。目前,由于

未用索引,首记录即为记录号等于1的记录,末记录是记录号

最大的记录。

对表文件的操作是以当前记录为基准的。在执行某些命

令时,会自动改变当前记录。在这里,我们首先介绍专门用于

改变当前记录的两条命令,这就是移动指针命令。

18

2012-10-2

指针的绝对移动命令——GO、GOTO

命令格式:GO[TO][RECORD]v数值表达式〉/TOP/BOTTOM

命令字GO和GOTO的功能是相同的。若选择TOP,指针即

指向首记录;若选择BOTTOM,指针指向末记录;若选择数值

表达式,则指向记录号等于此表达式值的记录。

当GO后是一个具体数字时,可以缺省此命令字。

例5USEXS

GO5&&使5#记录成为当前记录

GOTOP&&使指针指向首记录

4&&使4#记录成为当前记录

GOTOBOTTOM&&末记录成为当前记录

19

2012-10-2

指针的相对移动命令—SKIP

命令常用格式:SKIP[±v数值表达式>]

功能:使指针从当前位置沿着记录使用顺序作相对移动,

移动的记录个数等于命令中表达式的值。命令中的号表

示向记录排列的尾部移动(“+”可缺省);“,号表示向首

部移动。当为“+1”时,可全部缺省,只留下命令字SKIP。

例6USEXS

SKIP5&&6#记录为当前记录

SKIP&&7#记录为当前记录

SKIP-2&&5#记录为当前记录

20

2012-10-2

3.1.8追加记录操作命令——APPEND

命令格式:APPEND[BLANK]

功能:在表文件的尾部加入新记录。当表文件中已有n个

记录时,新记录号为n+1。此命令执行步骤如下:

①指针内容为最大记录号加1。

②若命令中有选择项BLANK,则当前记录为空记录,

命令执行完毕,增加了1个空记录,系统回到VFP命令状态

(仍在命令窗口下);若命令中无选择项BLANK,则继续

执行步骤③。

21

2012-10-2

在屏幕上打开一个编辑窗口,在编辑窗口,竖式显示表

文件的记录结构,光标停在第一字段处,等待用户逐个字段

地输入记录内容。以“职工.DBF”文件为例,现欲对其追加

新记录,则在命令窗口中键入如下两条命令:

USEXS

APPEND

执行命令后,将显示一编辑窗口,等待用户为新记录输

入内容。

当输入的某字段数据与该字段不符时(类型不符、超过

记录范围等),系统拒绝接受,并响铃提醒用户重新输入。

22

2012-10-2

当光标在备注型字段时,若不想输入数据,按回车键把

光标下移一字段(按键也可)。若要输入数据,由于备

注型字段数据实际存储在与表文件同名、扩展名为”.FP「的

备注文件中,因此,必须先按APgDn控制键或用鼠标双击

该字段后,系统立即在屏幕上显示一个编辑备注型字段的窗

口。用户在该窗口中为该备注型字段输入内容。

备注型字段内容输入完毕后,用人W控制键结束之或直

接关闭该编辑窗口。系统把输入的数据存入备注文件,恢复

原记录编辑窗口。

本记录数据输入完后,记录指针内容自动加1,在编辑窗

口上又出现当前记录结构,等待用户继续追加下一记录内容。

在追加记录中,用户可用PgUp、PgDn控制键上、下翻动

记录。

23

2012-10-2

'全部记录追加完毕后,用八W或八END控制键

结束APPEND命令。此时,编辑窗口被撤消,系统

又回到命令窗口。(注意,必须执行关闭表文件操

作,磁盘上该表文件才包含新追加的内容)

对于字符型和备注型字段来说,输入的英文

大、小写字母是不等价的。

24

2012-10-2

3.1.9插入记录操作命令—INSERT

插入记录操作可分为两部分:首先,把记录指针移到所需

位置;然后,在此位置插入一记录。这里,只介绍插入记录命

令INSERT。

命令格式:INSERT[BEFORE][BLANK]

当无BEFORE任选项时,在当前记录后插入新记录;若

有BEFORE,则记录插在当前记录前,且指针指向插入记录。

当有BLANK任选项时,系统自动在规定位置插入一空记

录,命令执行完毕;当无BLANK时,系统在屏幕上开出编辑

窗口(形式与APPEND的窗口相同),等待用户输入记录内容。

25

2012-10-2

INSERT命令可以插入多条记录,插入完毕后,用

人W或AEND控制键结束。

例7在“XS.DBF”库文件中插入记录,插在5号记录后。

下面两种方法略有差异,但都可达到此目的。

方法1:方法2:

USEXSUSEXS

GO5GO6

INSERTINSERTBEFORE

26

2012-10-2

^3.1.10从其它表中追加记录命令

------APPENDFROM

本命令使系统自动从一指定表文件中读出一些记录,并追

加到当前打开表文件中。

命令格式:APPENDFROMv表文件名

>/?[FIELDSv字段名清单>HFORv条件>]

其中,〈表文件名〉为读出数据的表文件,也称源文件,默

认扩展名为.DBFO被追加记录的表文件是当前打开表文件,

也称目的表文件。

FORv条件>,简称条件项,将在本章2・3.1节中介绍。若

无条件项,则追加入源文件中的全部记录。若条件项中包含了

字段名,则必须被两个表文件共有,且类型也一致。

27

2012-10-2

若目的表文件中某字段的宽度小于源文件对应字段的宽

度,读入数据时,字符型字段超长部分被截去,数值型字段

只加入一串…。

FIELDSv字段名清单》项简称字段名清单,若无字段名清

单,则把两个表文件共有的字段(同名、同类型字段)全部

加入目的表文件。若选择了字段名清单,则只追加指定的字

段。

备注型字段也同时被追加。

例8现有一表文件“LS.DBF”,与“职工.DBF”同结构,

但尚无任何记录。欲输入与“职工.DBF”相同的记录,可采用

如下步骤:

28

2012-10-2

USELS

APPENDFROMXS

执行命令后,“LS.DBF”表文件与“XS.DBF”

同内容,“LS.FPT”文件也与“XS.FPT”文件同内

容。

29

2012-10-2

3.1.11关闭表文件操作命令——USE

在内存中被打开的表文件可能进行了各种修改,如用

APPEND命令追加了记录,用INSERT命令插入了记录等,

但磁盘上的这个表文件并未同时得到修改,关闭文件意味着

用新修改过的文件去替换磁盘上的原文件。因此,对打开表

文件进行了修改操作后,必须执行关闭操作。

命令格式:USE

执行了此命令后,打开的表文件将从内存中消失。

注意:USEV表文件,命令,在打开命令中指定的表文

件时,也关闭了原打开的表文件。

30

2012-10-2

03.2表文件内容的输出

3.2.1列表输出命令——LIST

利用LIST命令,可以输出表文件的结构和记录内容。

1.输出表文件结构

命令格式:LISTSTRUCTURE[TOFILEv文件名〉/TO

PRINTER][NOCONSOLE]

此命令用来输出打开表文件的结构:

[TOFILEv文件名>]表文件结构将输出到对应的磁盘文件保存

[TOPRINTER]将输出到打印机打印。有任选项

[NOCONSOLE]输出内容将不在VFP主窗口显示;否则,

将在王窗口显小O31

2012-10-2

例9输出“xs.DBF”表结构。

USEXS

LISTSTURCTURETOPRINTER

这个结果除列出了该表文件结构外,还在前部给

出了表文件名、已有记录个数、最后更改日期及备注

文件的大小。

在最后一行上给出字段总宽度。这个宽度比各字

段宽度总和还多1。这个字节是系统自动在每个记录的

最前部增加的,用来存放删除标记。

32

2012-10-2

2.输出记录内容

命令格式:LIST[OFFHv范围>][[vFIELDS>]v字段名清单>]

[FORv条件1>][WHILEv条件2>]

[TOPRINTER/TOFILEv文件名习

[NOCONSOLE]

无[OFF]任选项,则同时列出记录号;否则不列出记录号。

卜范围刁任选项缺省时,表示输出全部记录。

33

2012-10-2

Oio键入以下两条命令:

USEXS

LIST

例11键入以下两条命令:

USEXS

LIST学号,姓名,简历

备注型字段内容也实际输出。

34

2012-10-2次亦沟孝/孝

采用LIST命令输出内容时,将把输出内容全部逐

行输出。若使用打印机输出,不会发生问题;但若在

显示器上输出,当输出行数超过VFP主窗口行数时,

系统将把显示内容逐行上移,为后继内容空出区域。

当LIST命令执行完毕时,VFP主窗口上只有整个

内容的“尾巴”了,因此,若用户希望分页显示,则

需将整个输出内容按VFP主窗口尺寸分页,首先显示

第一页内容,用户看清后再显示下一页内容,可用

DISPLAY命令实现。

35

2012-10-2

3.2.2分页列表输出命令——DISPLAY

与LIST命令相对应,DISPLAY也有两种格式:

(l)DISPLAYSTRUCTURE[TOFILE<文件名>/TO

PRINTER][NOCONSOLE]

(2)DISPLAY[OFF][<范围>][FIELDSv字段名清单

习[FORv条件l>][WHILEv条件2>][TOPRINTER/TOFILE<

文件名>][NOCONSOLE]

DISPLAY命令与LIST命令的功能完全相同,在使用时仅有两

点差别:

①DISPLAY命令分页显示整个内容。用户看清一页后,

任按一键,系统就显示下一页内容,直至全部页显示完毕。

36

2012-10-2

②当命令中缺省“范围”和“条件”项时,

DISPLAY命令只输出当前记录内容o

37

2012-10-2

3.3VFP的有关语法规定

3.3.1命令的一般格式

VFP的命令很多,各有不同的格式和形式,但其中很多命令

都具有一种类似的形式,称为命令的一般形式。

VFP命令的一般格式为:

命令字[v范围刁阵表达式清单>][FORv条件l>][WHILEv条件2>]

1.命令字

所有的命令都有一个命令字,它决定了此命令的性质。

38

2012-10-2

穿7命令字是一个英文动词,它表达了该命令所要执行的操

作。我们已经介绍过的命令字有:USE、CREATE、

APPEND>LIST和DISPLAY等。

当一个命令字的字母超过4个时,可从第5个字母起省略。

例如,CREATE可省略为CREA、DISPLAY可省略为DISP等。

2.FOR〈条件〉和WHILE〈条件〉项

V条件,是一个返回值为逻辑型的表达式,如:工资V100,

姓名="王一民”。写成条件项为:FOR工资V100,WHILE姓

名="王一民“等,用FOR或WHILE开始均可。

条件项的含义为:只对那些使表达式返回值为真(.工)

的记录进行命令规定的握住一

39

2012-10-2

3.范围项

范围任选项指出了命令所作用的记录范围,其值可有如下5

种选择:

ALL范围为从首记录开始的所有记录。

NEXTn---范围为从当前记录开始的n个记录,n是一个

具体的十进制数。

RECORDn——范围仅为第n号记录。

REST——范围为从当前记录开始直到文件结束的所有记录。

缺省——若条件项同时缺省,不同命令有不同含义,或等

价于ALL,或仅作用于当前记录。条件项以FOR开始时,范围

为ALL,以WHILE开始时,范围为从当前记录开始的所有记录。

40

2012-10-2

条件项以FOR开始时,将对范围内符合条件的所有记录进

行操作;条件项以WHILE开始时,只要碰到一个不符合条件

的记录,不管剩下的范围内是否还有符合条件的记录,都停止

继续执行命令。

当一条命令中既有FOR子句,也有WHILE子句时,在

WHILE条件首次不满足前,将对满足FOR条件的所有记录进

行操作;一旦WHILE条件不满足,则停止操作。为方便理解,

本书后面讲到条件时,都以FOR子句为准,读者可自行试验以

WHILE开头的一些差别。

命令执行完毕时,指针一般指向范围内最后一记录。但当

范围为ALL时,指针值为表文件记录个数加1,即指向最后一

记录的后面。

41

2012-10-2

4.表达式清单

此项往往是表文件中字段名清单,或是包含字段名的表

达式清单。其中各项用英文状态下的”分隔。省略此项,

一般等价于表文件中全部字段。

命令字必须是一条命令的第一项,而各任选项的顺序可任

意排列。

一条命令的各部分之间必须有空格(FOR/WHILE与

“条件”之间也必须有空格),但空格个数不限。

一条命令的总长度(包括命令中的所有空格)不能超过

254个字符(一个汉字以两个字符计算)。

42

2012-10-2

”加以分隔,后跟一个回车,转到下一

行去继续输入这条命令。系统在执行时,将把它们看作一个整

体。当然,也可不管它,连续输入一条命令的全部内容,这样

也不影响一条命令的完整性,但决不可在一行快输满时,用回

车键换到下一行继续输入本条命令,这样就破坏了命令的完整

性。

下面是一条标准的命令句法:

DISPNEXT25姓名,生日FOR姓名廿王大有八

命令字范围表达式清单条件

此命令含义为:在从当前记录开始的共25个记录中,把姓

名字段值是“王大有”的所有记录分页显示出来,只显示“姓

名”和"职称”两个字43

2012-10-2

3.3.2内存变量、数组和常量

1.内存变量

在VFP语言中,除了字段变量外,还有一种变量,它存在

于内存之中,独立于数据库文件,称为内存变量。退出VFP时,

内存中的所有内存变量都将消失,不在磁盘上自动保存。

内存变量有字符型、数值型、货币型、逻辑型、日期型、

日期时间型6类。对这6类数据类型的使用与同类型字段数据类

型的使用相同。

内存变量必须先定义后使用。VFP中,有两种最基本的内

存变量定义方法,它们是:

(1)STOREv表达式〉TOv内存变量名清单,。

44

2012-10-2

(2)v内存变量名〉=v表达式>。

格式⑴的功能是把语句中表达式的值赋给〈内存变量名清

单》中的所有内存变量。

格式(2)的功能是把等号右边v表达式>的值赋给等号左边

的一个内存变量。表达式值的类型就是内存变量的类型。若内

存变量原来已经存在,执行了赋值语句后,原值即被取代。

例12STORE245TOA,B,C

执行了这个命令,内存变量A、B、C中的值均为245。

例13X=10

X=X+1

45

2012-10-2

两条命令执行后,内存变量X的值为H。

用户可直接用内存变量名对内存变量进行访问。但若内存

变量名与某字段变量名相同时,必须用如下格式访问:

M-><内存变量名,或M.<内存变量名〉

2.常量

一个常量是一个命名的数据项。VFP对常量的表示法有一

些规定。

(1)数值型常量可直接使用。

例14X=23.6

46

2012-10-2

,(2)字符型常量必须用英文状态下的单引号、双引号或方

括号括起,这些符号总称为字符括号。

例15Y="工程师”

X=[工程师]

(3)逻辑型常量必须用英文句点括起,而且只有.T.

和.F.两个取值。

例16Z=T.

(4)日期型常量及日期时间型常量用花括号括起,且一般

应严格按照如下格式表示:

A

{YYYY-MM-dd[?][hh[:mm[:ss]][a|p]]}

47

2012-10-2

例17STORE{A19934M2}TOXMAS

A

STORE{2000-01-01,10:00:00}TOXMAS2

也可用函数实现,

D=CTOD(“12/25/93”)

T=CTOT(”12/25/9910:00:00amn)

3.内存变量操作

⑴输出内存变量的值

最简单的输出内存变量的值的命令是?和??。

基本命令格式:?/??v表达式清单,[ATv数值表达式>]

48

2012-10-2

此两命令均为输出命令,输出命令中〈表达式清单〉的值。

用"?”命令时,在输出表达式值之前首先执行一次回车换行;

使用“??”,则直接输出。

使用[AT<数值表达式习任选项时,该数值表达式的值决

定输出的起始列号。

⑵显示内存变量情况命令——DISPLAY/LISTMEMORY

命令格式:DISPLAY/LISTMEMORY[LIKEv通配符刁

[TOPRINTER/TOFILEv文件名刁[NOCONSOLE]

DISPLAY分页显示,LIST则滚动显示。

49

2012-10-2

DISPLAYMEMORY和LISTMEMORY两条命令的功能

基本相同,都显示当前内存中所有内存变量的名、类型和当前

值,所有数组变量名及每一个数组的下标变量的类型和当前值,

正在使用的变量个数、共占字节数、还可建立多少变量等。两

命令的不同点在于:当显示内容超过LIKEv通配符,:选用本

子句后,命令只显示变量名与通配符相匹配的内存变量和数组。

TOPRINTER:此子句将把命令的输出传给打印机。

TOFILEv文件名〉:此子句把命令的输出传到磁盘上指定

的文件中。

NOCONSOLE:有了此子句,命令的输出将不在VFP主窗

口上显示。

(3)保存变量命令

50

2012-10-2

藜命令格式:SAVETOv内存变量文件名〉/TOMEMOv备注

型字段名〉[ALL[LIKE/EXCEPTv通配符>]]

此命令把所有符合条件的内存变量、数组的各种信息全部

存入到一个文件或一个备注字段中去。

TOv内存变量文件名〉:命令建立的文件,所有符合条件

的内存变量、数组的各种信息,如变量名、类型、值等,全部

存入该文件。文件的默认扩展名为

TOMEMOv备注型字段名,:指定存储变量信息的备注型

字段。

ALL:把内存中所有的内存变量、数组都存储起来。

ALLLIKEv通配符,:存储变量名与通配符匹配的内存变

量、数组。(不匹配的不存储。)

51

2012-10-2

ALLEXCEPTv通配符>:存储变量名与通配符不匹配的

内存变量、数组。(匹配的不存储。)

例18把内存中所有变量存入NCBL.MEM文件。

SAVETONCBL

例19把内存中变量名以A开头的变量全部存入

NCBM.MEM文件。

SAVETONCBMLIKEA*

例20把内存中变量名第三个字母不为A的变量全部存入

NCBN.MEM文件。

SAVETONCBNEXCEPT??A*

⑷从内存变量文件读回变量

52

2012-10-2

已经存入内存变量文件中的变量,可以使用RESTORE

FROM命令读回内存。命令格式为:

RESTOREFROMv内存变量文件名〉/FROMMEMOv备

注型字段名刁ADDITIVE]

〈内存变量文件,:本子句规定从该文件中读回变量,文

件的默认扩展名为.MEM。

FROMMEMOv备注型字段名〉:本子句规定从该字段中

读回变量。

ADDITIVE:无此项时,系统首先清除内存中现有的所

有内存变量和数组,然后再把命令中指定文件(或字段)的

所有内存变量和数组全部读入内存,有ADDITIVE时,不清

除内存中现有内存变量和数组,把指定文件(或字段)的所

有内存变量和数组追加入内存。

53

2012-10-2

仅当新增加的内存变量与内存中原有的内存变量同名时,

才将内存中原有的同名内存变量覆盖掉。命令执行完后,内

存中的变量总数不能超过限定。因此,在追加过程中,一旦

总数达到限定,以下的变量就不再读入了。

例21把内存变量文件NCBL.MEM中的变量读入内存,

不保留内存中原有变量。

RESTOREFROMNCBL

例22把内存变量文件NCBM.MEM中的变量读入内存,

保留内存中原有的变量。

RESTOREFROMNCBMADDITIVE

⑸清除变量命令

①清除部分或彳RELEASE。54

2012-10-2犬蹄专3挈

契此命令可分为4种格式。

格式1:RELEASEv变量名表〉

此格式的RELEASE命令将从内存中清除掉v变量名表》中

所列的全部内存变量和数组。

格式2:RELEASEALL

采用此格式,RELEASE命令将从内存中清除所有内存变

量和数组。

格式3:RELEASEALLLIKEv通配符》

此格式把内存中所有变量名与通配符相匹配的内存变量和

数组都清除掉。(不匹配的保留。)

格式4:RELEASEALLEXCEPTv通酉己符〉

55

2012-10-2

”?”代表任何单个字符,星号“*”代表任何一个字符串。

例23清除内存中全部内存变量和数组。

RELEASEALL

例24清除变量名中第二个字符为A,第三个字符为C的所有

内存变量和数组。

RELEASEALLLIKE?AC*

例25清除变量名的第三个字符不为B的所有内存变量和数组。

RELEASEALLEXCEPT??B*

56

2012-10-2

②清除全部变量命令——CLEARMEMORYo

该命令的功能与RELEASEALL命令完全相同,清除掉内

存中全部内存变量和数组。

4.数组

数组是一种特殊的内存变量。在VFP中,用户可以使用数

组,但首先应定义数组。

1)定义数组命令——DIMENSION

命令格式:DIMENSION<数组名1>(v数值表达式1>[,

v数值表达式2>])[,<数组名2>(v数值表达式1>[,v数值表

达式2>])...]

本命令可以定义若干个一维、二维数组。

例26DIMENSIONX(4),Y(2,3)

57

2012-10-2

穿*7执行该命令后,将建立两个数组X和Y。数组X由1列4行

组成,共4个单元;数组Y由2行3列组成,共6个单元。

此命令执行后,所建数组的所有单元都赋了一个逻辑型的

初值.F.,但以后可以给各单元赋不同类型的值。

2)使用数组——下标变量

尽管一个数组是一个变量(数组变量),但它的每一个

单元都可像一个一般变量那样被使用。数组单元是以下标来

区分的,也称为下标变量。下标的起始值为1。

例如,在上面的例子中,数组X有4个下标:X(l),X(2),

X(3),X(4);数组Y有6个下标:Y(l,2),Y(l,3),

Y(2,l),Y(2,2),Y(2,3)O

58

2012-10-2

'J27依次执行以下命令序列:

DIMENSIONX(2,3)

STOREnBOYnTOX(l,2)

STORE“GIRL”TOX(2,3)

X(l,l尸300

nn

STORECTOD(12/31/88)TOX(l?3)

X(2,1>.T.

DISPLAYMEMORYLIKEX

执行结果为:

59

2012-10-2

XPubA

(1,1)N300

(1,2)CnBOYn

(1,3)D12/31/88

(2,1)L.T.

(2,2)L.F.

(2,3)C“GIRL”

总结:(1)一个数组只算作一个内存变量,但每个单元都

可像一个内存变量一样使用,因此,称为下标变量。

60

2012-10-2

数组必须先定义,后使用。定义时,各下标变量都是逻

辑型.F.,但以后可存入其它类型的值。

(3)每个字符型下标变量需占内存数为该字符变量的字符个

数加7,其它类型的下标变量不增加额外的内存空间。

(4)二维下标变量可用单下标方式访问。如,二维数组

X(2,3)中,各下标变量的存储顺序为(1,1),(1,2),(1,3),(2,1),

(2,2),(2,3)。因此,下标变量X(2,1)可用X(4)调用。为清晰起见,

用单下标访问二维数组时,单下标称为序号。

(5)定义数组时,也可用方括号。方括号与圆括号完全等价。

例如,DIMENSIONAA[2,4]与DIMENSIONAA(2,4)是等价的。

61

2012-10-2

(6)可以用DIMENSION命令重新定义一个已经存在的数

组,以改变它的维数和大小。重新定义后,只要下标变量个

数增加了,则原数组的各下标变量值将依次拷贝到新数组的

下标变量中,多出来的下标变量值为.F.;相反,若下标变

量个数减少了,被减少的下标变量及其内容将被删掉。

62

2012-10-2

3.3.3表达式

任何一个字段变量、内存变量、常量或函数都是表达式,

用操作符把表达式正确地连接起来的式子也是表达式。表达式

值的类型称为表达式的类型。表达式的类型与所含变量的类型

有关,但还与所进行的操作有关。变量的类型不同,所能进行

的操作也不同。

VFP提供数值型、关系型、逻辑型和字符型等4类运算。

1.数值型运算

这类运算共有以下7种操作:

①加法:+(单目运算时为“正”号)

⑤乘法:*

63

2012-10-2

②减法:-(单目运算时为“负”号)

③乘法*

④除法:/

⑤指数:**或八

⑥括号:()

⑦取模(余数):%

格式:〈数值表达式1>%V数值表达式2>

其中,v数值表达式1>为被除数,v数值表达式2>为除数。

此操作结果为两数相除的余数。被除数的小数位数决定了结果

中的小数位数。除数值为正,结果为正;除数值为负,结果值

2°J密。除数不能为零。64

数值型运算符的运算顺序为:①括号;②单目运算;③

指数运算;④乘除取模运算;⑤加减运算。

2.关系型运算

关系型运算有以下6种操作:

小于:v

不等于:<>(也可用#或!=)

大于:>

大于等于:>=

等于:=

字符串精确等于:==

小于等于:<=__________

65

2012-10-2

W关系型运算只能在数值型数据之间、字符型数据之间、

日期型数据之间或日期时间型数据之间进行:数值型数据按

其值的大小比较;字符型数据按其ASCH码值的大小比较;

汉字按其拼音(一级字库)或部首(二级字库)比较;对于

日期型或日期时间型数据,日期(时间)在前的为小,日期

(时间)在后的为大。关系运算的结果是逻辑值:“真”

(・T.)或“假”(.F.)o

3.逻辑型运算

逻辑型运算共有以下4种操作,结果是逻辑值:

①逻辑与:.AND.

②逻辑或:.OR.

③逻辑非:.NOT.

④括号:()

66

2012-10-2

令A、B是两个逻辑型数据,则前三种逻辑运算符的功能

见表2-1所示。

逻辑型运算的运算结果是逻辑型。其运算顺序为:

①括号;②非运算;③与运算;④或运算。

67

2012-10-2

"OKIOZ

*

5工

***

HHHH

•**

HH工H

•***

HF■FH

B.RO.AB.DNA.A<

4.字符型运算

字符型运算包括以下两类操作:

(1)字符串连接运算:+、-

运算是把两个字符串串接起来,形成一个新的字符

串。

“-”运算也是把两个字符串串接起来,形成一个新的字符串。

但在”(减)运算时,前一字符串若有尾部空格,则把尾

部空格移到新字符串的尾部。例如:

八最后"结果"&&得:”最后结果”

“最后"J结果”&&得:”最后结果”

69

2012-10-2

(2)字符串比较运算:$

这个运算用于两个字符串表达式的比较,结果是逻辑型

值。若“$”后面的字符串包含有“$”前边的字符串,结果为

・T.;否则为.F.o例如:

"ABCD"$"NABCDM''&&结果为.T.

"XYZF''$"XY=ZF''&&结果为.F.

对于所有这4类运算,也有一定的优先级别。优先级别由

高到低依次为:数值型和字符串型、关系型、逻辑型。例如:

.NOT.5+2>10&&运算结果为.T.

70

2012-10-2

10=3.OR..NOT.5+2>10&&运算结果为・T.

10=3.OR.5+2>10.AND.8<>5&&运算结果为.F.

71

2012-10-2

3.3.4基本函数

VFP提供了许多函数,本节只介绍一些基本函数,其它见

本教材附录B。

1.算术运算函数

1)ABS——绝对值函数

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

ABS函数给出〈数值表达式>值的绝对值

2)FV——零存整取函数

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

式3>)

72

2012-10-2

例28若每月投资500元,年利率为7.5%,共4年(48个

月),则到期共可得

?FV(500,0.075/12.48)&&27887.93元

3)INT——取整函数

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

INT函数返回〈数值表达式〉的整数部分。

例29?INT(12.5)&&得12

?INT(-12.5)&&得-12

4)MAX——最大值函数

格式:MAX(〈表达式清单〉)

73

2012-10-2

(〈表达式清单〉)由相同类型的数值型、货币型、日期型、

日期时间型、字符型表达式组成。当它是数值型或货币型时,

函数返回最大的一个表达式值;当它是日期型时,返回最后

面的日期;当它是日期时间型时,返回最后面的日期和时间;

当它是字符型时,返回ASCII码值最大的那个表达式。

例30?MAX(5,8,7)&&得8

?MAX({^1994-12-12},「1993-12-15})

&&得12/12/94

?MAX(”ABCD”Jabcd”)&&ABCD

AA

?MAX({1994-12-10,01:00:00}5{1993-12-20,10:10:10))

温馨提示

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

评论

0/150

提交评论