vfp3.docx

上传人:b****8 文档编号:30540358 上传时间:2023-08-16 格式:DOCX 页数:34 大小:62.75KB
下载 相关 举报
vfp3.docx_第1页
第1页 / 共34页
vfp3.docx_第2页
第2页 / 共34页
vfp3.docx_第3页
第3页 / 共34页
vfp3.docx_第4页
第4页 / 共34页
vfp3.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

vfp3.docx

《vfp3.docx》由会员分享,可在线阅读,更多相关《vfp3.docx(34页珍藏版)》请在冰豆网上搜索。

vfp3.docx

vfp3

第3章 数据、表达式与函数

根据计算机系统处理资料的形式来划分,VisualFoxPro有常量、变量、表达式和函数4种形式的资料。

常量和变量是资料运算和处理的基本对象,而表达式和函数则体现了VisualFoxPro语言对资料进行运算和处理的能力及功能。

3.1 数据类型及其存储方式

每个数据都有一定的数据类型,数据类型决定了数据的存储方式和运算方式。

VisualFoxPro将数据划分为13种类型,各种数据类型介绍如下。

1.字符型(Character)

字符型数据是由字母、数字、空格、符号和标点等组成的。

字符型数据的特点是没有数量多与少的概念,不能进行数值相关的算术运算,只是一种字符信息的描述。

每个字符占用一个字节的存储空间。

2.数值型(Numeric)

数值型数据是用于表示数量的一种数据类型,由数值0~9及符号(+和-)和小数点组成。

数值型数据的特点为:

数据之间可以进行相加、相减、相乘、相除等算术运算。

在内存中,数值型数据占用8个字节的存储空间。

3.浮点型(Float)

浮点型与数值型数据的使用完全一样,只是输出结果以浮点数的形式显示。

4.货币型(Currency)

货币型数据用于代替数值型数据的货币值。

通常用8个字节的存储空间存储货币型数据,且只允许最多有4位小数。

5.日期型(Date)

日期型数据是用于存储关于年、月、日数据的一种数据类型。

每一个日期型数据的存储形式均为“yyyy/mm/dd”,其中yyyy表示年份,占用4个字节;mm表示月份,占用2个字节;dd表示日期,占用2个字节。

日期型数据的格式可以通过“选项”窗口设定。

6.日期时间型(DateTime)

日期时间型数据用于存储日期和时间值。

日期时间型数据存储格式为“yyyymmddhhmmss”,其中yyyy表示年,mm(第一个)表示月,dd表示日,hh表示小时,mm(第二个)表示分钟,ss表示秒(必须为整数)。

日期时间型可以表示一个日期值,也可以表示一个时间值,或者表示一个日期时间值。

日期时间型数据与日期型数据一样在内存中用8个字节存储。

7.双精度型(Double)

双精度型数据是指精度要求较高的数据,或真正的浮点数。

双精度型数据占用8个字节存储空间,取值范围为0.90465645841247×10-324~±0.988456743115×10307。

8.整数型(Integer)

整数型数据用于存取不包含小数部分的数值。

整数型数值不用转换成ASCII字符来存储,而数值型数据是要进行二进制转换的。

整数型占用4个字节,取值范围为-2147483647~2147483646。

9.逻辑型(Logical)

逻辑型用于存储只有两个值的数据,即存入的值为真(.T.)或假(.F.)两种状态,是一种高效的存储方法,在内存中占一个字节。

10.备注型(Memory)

备注型数据只用于表中,表示数据块的存储。

备注型字段只包含4个字节,并用这4个字节来引用备注的实际内容。

备注的实际内容只受内存可用空间的限制,并以块的方式来存储。

由于备注型字段的实际内容变化很大,不能将备注的内容存于表文件中,因此必须用一个相对独立的文件来存储这些备注内容,这个文件的扩展名为.dbt。

11.通用型(General)

通用型数据用于存储OLE对象。

每个OLE对象的具体内容可以是电子表、图像,也可以是Word文档,这些OLE对象由其他支持OLE的应用程序建立。

通用型字段在表中的长度为4个字节,而OLE对象的实际内容、类型和数据则取决于建立OLE对象的服务器,以及连接或嵌入的OLE对象。

12.字符型(二进制)

与字符型的使用方法相同,只是采用二进制存储。

13.备注型(二进制)

与备注型的使用方法相同,只是采用二进制存储。

3.2 常量和变量

3.2.1 常量

常量是固定不变的数据,它具有数值型、字符型、日期型、日期时间型、逻辑型和货币型等多种类型。

1.数值型常量

整数、小数或用科学计数法表达的数都是数值型常量。

例如,10,-100,2.81828,0.281828E1等。

2.字符型常量

字符型常量是用双引号、单引号或方括号等定界符括起来的字符串。

例如,“微机”,‘PC机’,[计算机],“3.14159”等。

VisualFoxPro字符串的最大长度为254个字符。

若字符串中含有定界符,则需用另一种定界符括起来,例如,“I’mastudent”。

3.日期型和日期时间型常量

日期型常量或日期时间型常量必须用花括号括起来。

例如,{06/30/1999},{9/15/998:

45}。

空白的日期可表示为{}或{/},空白的日期时间可表示为{/:

}。

还有一种“严格的日期格式”为:

^yyyy-mm-dd[,][hh[:

mm[:

ss]]][a|p]

格式中的符号“^”表明该日期格式是严格的,并按照YMD的格式来解释日期和日期时间。

其中的“-”号可用正斜杠“/”代替,例如,{^2001/08/30}。

必须注意,在执行命令时,VisualFoxPro默认使用严格的日期格式,如果要使用通常的日期格式,必须先执行SETSTRICTDATETO0命令,否则会引起出错。

若要设置严格的日期格式,可执行命令SETSTRICTDATETO1。

4.逻辑型常量

逻辑型常量只有真和假两种值,例如,.T.、.t.、.Y.和.y.都表示真,而.F.、.f.、.N.和.n.都表示假。

5.货币型常量

货币型常量以$符号开头,在存储与计算时采用4位小数的格式。

例如,货币型常量$100.12345,系统将会四舍五入为$100.1235。

3.2.2 变量

在命令操作和程序运行过程中,其值允许变化的量称为变量。

变量包括内存变量、字段变量和系统内存变量3种。

1.内存变量

内存变量可用来存储数据,定义内存变量时需要为它取名并赋初值,内存变量建立后存储于内存中。

1)VisualFoxPro的命名规则

在VisualFoxPro中,除字段和文件外,所有的用户命名,如内存变量、函数的取名,均遵守以下规则:

以字母(也可以是汉字)或下划线开头;由字母、数字、下划线组成,至多128个字符;不可与系统保留字同名。

所谓系统保留字,是指VisualFoxPro语言使用的字,例如,USE命令中的USE就是一个系统保留字。

2)内存变量赋值命令

命令格式1:

〈内存变量〉=〈表达式〉

命令格式2:

STORE〈表达式〉TO〈内存变量表〉

功能:

计算表达式,然后将计算结果赋给内存变量。

【例3-1】 定义内存变量S,N1,N2,N3。

用下面两条命令定义内存变量:

S="VFP"                &&字符串VFP赋给S,S为字符型变量

STORE2*4TON1,N2,N3  &&将8分别赋给各变量

说明:

①命令后的符号&&,表示该符号后跟随的是本命令行的注解,它只对命令起注释作用,与命令执行无关。

本书中用来解释命令功能。

②内存变量在赋值时定义了它的值及类型,其类型与所赋的值的类型相同。

③STORE命令的〈内存变量表〉可包括多个内存变量,但需用逗号来分隔。

该命令可将同一值赋给多个内存变量,而“=”命令仅可为一个内存变量赋值。

3)表达式值输出命令

命令格式:

?

|?

?

〈表达式表〉

功能:

计算表达式的值,并将其输出到屏幕。

说明:

①命令格式中的符号“|”表示“或”。

②?

表示从屏幕下一行的第一列起显示结果。

例如,显示例2-1中变量S和N1的值:

?

S             &&在VisualFoxPro主窗口中显示VFP

?

N1            &&换一行后显示8

③?

?

表示从当前行的当前列起显示结果。

例如,

?

S             &&显示VFP

?

?

"数据库应用"  &&紧接在上一命令显示结果VFP的后面显示数据库应用

④〈表达式表〉表示可用逗号来隔开多个表达式,命令执行时遇逗号就空一格。

例如,

?

"S=",S       &&显示S= VFP

2.数组

数组是按一定顺序排列的一组内存变量,数组中的各个变量称为数组元素。

数组必须先定义后使用。

1)数组的定义

命令格式:

DIMENSION|DECLARE〈数组名〉(〈下标1〉[,〈下标2〉])

[,〈数组名〉(〈下标1〉[,〈下标2〉])…]

功能:

定义一维或二维数组,及其下标的上界。

说明:

①VisualFoxPro系统规定,数组的下标下界为1。

例如,命令DIMENSIONx(3),a(2,3)分别定义了数组名为x的一维数组与数组名为a的二维数组。

数组x下标的上界为3,由于下界规定为1,故该数组有3个数组元素,表示为x

(1),X

(2)与x(3)。

对于二维数组,常将第1个下标称为行标,第2个下标称为列标,故数组a具有2行3列6个元素,分别表示为:

a(1,1),a(1,2),a(1,3),a(2,1),a(2,2)与a(2,3)。

②理论上,VisualFoxPro中最多可定义65000个数组,且每个数组最多可包含65000个元素。

实际上,最大数将受可用内存的制约。

2)数组的赋值

在一般高级语言中,同一数组各元素的类型必须相同。

VisualFoxPro则不然,它不仅允许同一个数组各元素取不同的数据类型,而且同一个元素的前、后类型也允许改变。

在定义数组时,系统将各数组元素的初值设置为.F.。

用赋值命令可为数组元素分别赋值,也可以整体赋相同的值。

例如,执行命令:

a=8,可为上面定义的二维数组a的6个元素都赋同样的初值8。

二维数组中,各元素在内存中按行的顺序存储,而且也可按一维数组来表示其数组元素。

例如,上述数组a中的元素a(2,2)排在第2行第2列,由于每行有3个元素,所以该元素也可用a(5)来表示。

3.字段变量

表的每一个字段都是一个字段变量。

说字段是变量,是由于对于某一字段,它的值因记录而异。

字段变量在建立表结构时定义,修改表结构时可重新定义,或增删字段变量。

如果内存变量与字段变量同名,则优先访问字段变量;要想访问内存变量,则必须在变量名前加上前缀M.或M->。

内存变量常简称为变量,而字段变量则直接以字段来称呼。

4.系统变量

VisualFoxPro提供了一批系统内存变量,它们都以下划线开头,分别用于控制外部设备(如打印机、鼠标等)及屏幕输出格式,或者处理有关计算器、日历、剪贴板等方面的信息。

系统变量举例如下。

①_DIARYDAT:

存储当前日期。

②_CLIPTEXT:

接收文本并送入剪贴板,例如,执行命令_CLIPTEXT="VFP"后,剪贴板中就存储了文本VFP。

5.内存变量的显示

命令格式:

LIST|DISPLAYMEMORY[LIKE〈通配符〉][TOPRINTER|TOFILE〈文件名〉]

功能:

显示当前已定义的内存变量名、作用范围、类型和值。

说明:

①LIKE子句表示将选出与通配符相匹配的内存变量,通配符有“?

”和“*”两种,前者代表单个字符,后者代表一个或多个字符。

若要显示例2-1中建立的内存变量,执行:

DISPMEMORYLIKE?

?

主窗口中便显示下列内容:

S                         Pub                     C                        "VFP"

N1                      Pub                     N                        8(8.00000000)

N2                      Pub                     N                        8(8.00000000)

N3                      Pub                     N                        8(8.00000000)

省略该选项,则选出全部内存变量(此时包括系统内存变量),并同时显示当前内存变量总的个数、字节数等。

②选项TOPRINTER能将屏幕显示内容输出到打印机,选项TOFILE〈文件名〉能将显示内容存入指定文件。

6.内存变量的清除

命令格式:

RELEASE[〈内存变量表〉][ALL[LIKE|EXCEPT〈通配符〉]]

功能:

从内存清除指定的内存变量。

例如,

RELEASEa,b                                &&清除内存变量a和b

RELEASEALLLIKEa*               &&清除首字母为A的所有内存变量

RELEASEALLEXCEPT?

b*      &&清除第二个字符不为B的所有内存变量

RELEASEALL                             &&清除用户定义的所有内存变量

3.3 运算符与表达式

VisualFoxPro共有5种运算符:

算术运算符、关系运算符、逻辑运算符、字符运算符和日期与日期时间运算符。

1.算术、关系、逻辑运算

现将算术、关系、逻辑这3种运算的运算符列在表3-1中,并简要说明如下。

表3-1 VisualFoxPro算术、关系、逻辑运算符

运算

优先级

运算符

意义

运算举例(注解表示显示结果)

算术

8

()

圆括号

 

7

^或**

乘方

?

3^2                              &&9

6

×

 

 

%

取模:

取两数相除的余数

?

15%4                                    &&3

5

 

 

关系

4

小于

?

63<54                          &&.F.

<=

小于等于

?

{01/01/92}<={01/01/91}&&.F.

大于

?

"ABC">"AAAA"         &&.T.

续表 

运算

优先级

运算符

意义

运算举例(注解表示显示结果)

关系

4

>=

大于等于

?

"大专">="大学"            &&.F.

相等:

右串包含于左串时为真

?

"ABC"="AB"                &&.T.

==

完全相等:

两串全同时为真

?

"ABC"=="AB"             &&.F.

<>,#或!

=

不相等

?

.T.<>.F.                    &&.T.

$

包含:

左串是右串的子串时为真

?

"BC"$"ABCD"            &&.T.

逻辑

3

NOT或!

非:

结果是右边逻辑值的反

?

NOT"BC"$"ABCD"      &&.F.

2

AND

与:

两边都真才为真

?

.T.AND"ABC">"AB" &&.T.

1

OR

或:

两边有一边为真就为真

?

.T.OR4=5                   &&.T.

①算术运算的操作数必须是数值,运算的结果也是数值。

运算顺序是:

圆括号→乘方→乘除与取模→加减,同一级别从左向右计算。

②关系运算两操作数的类型应一致,比较的结果是逻辑值。

数值型数据按数值大小进行比较,日期型数据按年、月、日的先后进行比较,字符型数据按相应位置上两个字符ASCII码值的大小进行比较。

③逻辑运算的操作数应是能得出逻辑值的表达式,运算结果也是逻辑值。

若操作数类型不符合要求,将会出现“操作符/操作数类型不一致”的出错提示。

关系运算常用来描述某种条件,而逻辑运算可用于描述复合的条件。

若需求两个条件中有一个成立便算成立,则应使用OR运算符;若要求两个条件同时成立才算成立,则应使用AND运算符;至于NOT运算符,则用于否定一个条件。

④表达式计算按优先级从高到低执行。

例如,计算表达式

.T.AND"ABC">"AB"

VisualFoxPro将先比较字符串"ABC"和"AB"的大小,然后进行AND运算,结果为真。

⑤表达式值的类型决定了表达式的类型,运算结果为数值的表达式称数值表达式,运算结果为逻辑值的表达式称逻辑表达式。

例如,表达式

.T.AND"ABC">"AB"

的值为.T.,该表达式的类型为逻辑型。

VisualFoxPro还允许使用字符表达式、日期表达式和日期时间表达式,这将在下文介绍。

2.字符、日期与日期时间运算

在表3-1中,“+”和“-”两个算术运算符也可用作字符运算符、日期与日期时间运算符。

1)字符运算符

“+”运算符:

用于连接两个字符串。

“-”运算符:

用于连接两个字符串,并将前一个字符串尾部的空格移到结果字符串的尾部。

例如,

?

"信息 "+"技术"                        &&显示:

信息 技术

?

"信息 "-"技术"                        &&显示:

信息技术

2)日期与日期时间运算符

日期或日期时间的运算,以运算符“+”表示数据相加,以运算符“-”表示数据相减。

对日期型数据进行运算是指日期相减,或者加减某个天数;对日期时间型数据进行运算是指日期时间相减,或者加减某个秒数(注意:

两个日期型或日期时间型数据不能相加)。

3.4 常用函数

函数具有特定的功能,VisualFoxPro提供了200余种函数,具有强大的功能。

1.函数的要素

函数有函数名、参数和函数值3个要素。

①函数名起标识作用。

②参数是自变量,一般是表达式,写在括号内。

③函数运算后会返回一个值,称为函数值,这就是函数的功能。

函数值会因参数值不同而不同。

例如,平方根函数,其函数名为SQRT(参见表3-2),下面计算参数值为4的函数值:

?

SQRT(4)          &&显示函数值2.00

有的函数省略参数,称为哑参,但仍有返回值,例如,函数DATE()能返回系统当前日期。

2.函数的类型

函数类型就是函数值的类型。

在表达式中嵌入函数时,需了解函数值的类型,免得发生数据类型不一致的错误。

使用TYPE函数能返回表达式的类型,也能测出函数的类型。

例如,

?

TYPE("DATE()")    &&显示D,表明函数DATE()是日期型函数

3.常用函数

表3-2~表3-6分类介绍了VisualFoxPro的常用函数,包括数值型函数,字符处理函数,日期处理函数,逻辑型函数和其他函数。

表中,N代表数值表达式,C代表字符表达式,D代表日期表达式。

表3-2 数值型函数

函   数

功   能

例子(注解表示结果)

ABS(N)

求N的绝对值

?

ABS(-4)  &&4

SQRT(N)

求N的平方根

?

SQRT(4)  &&2.00

EXP(N)

求e的N次方的值

?

EXP

(2)  &&7.39

INT(N)

返回N的整数部分

?

INT(7.5)  &&7

MAX(N1,N2)

返回N1、N2较大者

?

MAX(4,7)  &&7

MOD(N1,N2)

取模,返回N1除以N2所得的余数

?

MOD(8.7,3)  &&2.7

ROUND(N1,N2)

将N1四舍五入,保留N2位小数

?

ROUND(3.1415,3) &&3.142

RAND(N)

返回伪随机数

?

RAND() &&随机数,如0.854

说明:

①STR函数中,N2的默认值为10,N3的默认值为0。

例如,STR(3.1415)的值是"      3",该字符串之中有9个空格。

②AT函数中N3的默认值为l,即求第一次出现的位置。

③SUBSTR函数中,若N2被省略,则子串取到C的最后一个字符。

例如,SUBSTR("ABCDEF",3)的值是"CDEF"。

表3-3 字符处理函数

函   数

功   能

例子(注解表示结果)

SUBSTR(C,N1[,N2])

返回C中第N1位起的长度为N2的子串

?

SUBSTR("ABCD",2,2) &&BC

LEFT(C,N)

返回C左起N个字符的子串

?

LEFT("ABCD",2)  &&AB

RIGHT(C,N)

返回C右起N个字符的子串

?

RIGHT("ABCD",2)  &&CD

LEN(C)

返回字符串的长度

?

LEN("ABCD")  &&4

AT(C1,C2[,N])

返回C1在C2中第N次出现的位置

?

AT("BC","ABCD",1) &&2

ALLTRIM(C)

删除C前导和末尾的空格

?

ALLTRIM("ABCD") &&ABCD

SPACE(N)

返回N个空格

?

SPACE(4)     

UPPER(C)

将小写字母转换为大写字母

?

UPPER("aBc")  &&ABC

LOWER(C)

将大写字母转换为小写字母

?

LOWER("aBc")  &&abc

VAL(C)

将字符串转换成数值

?

VAL("3.14")  &&3.14

STR(N1[,N2[,N3]])

将数值N1转换为长度为N2位,具有N3位小数的字符串

?

STR(3.14,5,1)  && 3.1

CHR(N)

返回ASCII码为N的对应字符

?

CHR(65) &&A

ASC(C)

返回字符C的ASCII码值

?

ASC("A")  &&65

表3-4 日期处理函数

函   数

功   能

例子(注解表示结果)

CTOD(C)

将C转换为日期

?

CTOD("09/09/04") &&09/09/04

DTOC(D)

将D转换为字符串

?

DTOC({09/09/04}) &&09/09/04

DTOS(D)

将D转换为yyyymmdd格式的字符串

?

DTOS({09/09/04}) &&20040909

TIME()

以hh:

mm:

ss的格式返回系统当前时间

?

TIME() &&21:

12:

14

DATE()

返回系统当前日期

?

DATE() &&07/26/04

YEAR(D)

返回年份

?

YEAR(DATE()) &&2004

表3-5 逻辑型函数

函   数

功   能

例   子

BOF([〈工作区〉])

记录指针指向首记录之前时返回真值

参阅4.2.2节

EOF([〈工作区〉])

记录指针指向末记录之后时返回真值

 

FOUND([〈工作区〉])

用LOCATE,CONTINUE,SEEK,FIND查到时返回真值

 

FILE([C])

文件C存在时返回真值

 

MDOWN()

按下鼠标左键时返回真值(用于程序中)

 

表3-6 其他函数

函   数

功   能

例   子

DBF([〈工作区〉])

返回工作区中打开表的名称

 

RECNO([〈工作区〉])

返回工作区中当前记录的记录号

参阅4.2.2节

TYPE(C)

返回表达式类型,以N,C,D,L之一表示

 

3.5 实战演练

3.5.1 内存变

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1