VFP三章数据元素.docx

上传人:b****5 文档编号:7508220 上传时间:2023-01-24 格式:DOCX 页数:14 大小:21.51KB
下载 相关 举报
VFP三章数据元素.docx_第1页
第1页 / 共14页
VFP三章数据元素.docx_第2页
第2页 / 共14页
VFP三章数据元素.docx_第3页
第3页 / 共14页
VFP三章数据元素.docx_第4页
第4页 / 共14页
VFP三章数据元素.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

VFP三章数据元素.docx

《VFP三章数据元素.docx》由会员分享,可在线阅读,更多相关《VFP三章数据元素.docx(14页珍藏版)》请在冰豆网上搜索。

VFP三章数据元素.docx

VFP三章数据元素

第三章VFP的数据元素

要点:

常量、字段变量、内存变量、函数的概念概念及其使用,表达式及其运算

----构成VFP计算机语言(表文件与程序命令)的基本要素是:

常量、变量、函数、表达式

1.常量

定义为数据处理过程中不变的量,在VFP的表和程序中使用。

(1)数值型(N):

数字、小数点、正负号

(2)字符型(C):

中英文字符、各种符号、数字

(3)逻辑型(L):

T和Y表示真(TRUE),F和N表示假(FALSE)

(4)日期型(D):

默认美国格式(mm/dd/yy)

2.变量

——程序运行过程中其值可变的量。

取名规则为用汉字或字母开头,后面跟汉字、字母、数字、下划线。

变量有:

(1)字段变量

—表文件的字段名,VFP提供13种,常用的有:

数值型、字符型、逻辑型、日期型、备注型、通用型。

(2)内存变量

—临时存放程序运行的中间结果和最终结果。

常用有:

C型、N型、D型、L型、S型(屏幕型)。

①内存变量的赋值

格式1:

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

格式2:

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

说明:

格式1用一个值给一个变量赋值,格式2用一个值给一个或多个变量赋值。

例1:

各种类型内存变量的赋值。

命令窗口执行:

N1=123(数值型直接引用)

XM=“李红”(字符型加定界符:

引号,单引号,方扩号)

HF=.T.(逻辑型用两点)

D1=CTOD(“08/21/79”)(日期型加CTOD函数对字符转换)或:

D1={^1978-08-21}

注意:

以上是程序中常量的引用方式,表中常量直接使用。

例2:

一条命令对多个变量赋值。

STORE60.00TOX1,X2,X3

注:

两种变量的区别,字段变量与表文件有关,变量一经定义,类型不变。

内存变量与表文件无关,一变量定义后可重定义,类型可变,如:

A1=“张三”,A1=123。

2内存变量的保存与恢复

—退出VFP后所定义的内存变量丢失,若下一次启动VFP可用,须保存。

(1)内存变量的保存

格式:

SAVETO〈内存变量文件〉[ALLLIKE/EXCEPT<内存变量名表>]

说明:

文件扩展名.MEM,ALLLIKE-要保存的,EXCEPT-不保存的,缺省-全部保存。

(2)内存变量的恢复

格式:

RESTOREFROM〈内存变量文件〉[ADDITIVE]

说明:

[ADDITIVE]缺省—从文件中恢复的变量把当前新定义的内存变量覆盖,该子项若不缺省,就不会覆盖。

③内存变量的显示

格式:

dispMEMO

说明:

显示内存中变量的名称、值、作用域。

④内存变量的清除

格式:

RELAESEALL

(3)数组内存变量

格式:

DIMENSION<数组名>(<数值型表达式1>[,<数值型表达式2>])[,….]

说明:

1)数组变量必需先定义,后引用(赋值)。

2)“数值型表达式”为变量的下标,一维数组为单下标,二维数组为双下标,下标值为数值型。

数组含变量元素如下:

dimensionx(4)—x

(1)、x

(2)、x(3)、x(4)

dimensiony(3,2)—y(1,1)、y(1,2)、y(2,1)、y(2,2)、y(3,1)、y(3,2)

3)一条DIMENSION可定义多个数组。

4)同一数组的变量元素可以是不同类型的变量。

如:

dimenx(3)

x

(1)=20

x

(2)=“北京”

x(3)=ctod(“03/15/2002”)

dispmemo

(4)系统变量

----VFP系统自己定义的变量,以“_”下划线开头。

如打印报表的页码“_pageno”

3.表达式及其运算

(1)表达式的定义及类型

●定义:

字段变量、内存变量、常量、函数是表达式,用运算符把它们连接起来也是表达式。

●类型:

表达式的常用类型有4种,C型、N型、L型、D型,表达式各项类型应一致,若不相同,可用函数进行转换。

如:

数学=80

“我的数学:

”+数学(错。

类型不匹配)

“我的数学:

”+STR(数学)(对。

把数字型转换成字符型)

显示:

我的数学:

80

注:

“我的数学:

”,数学(对。

是两个表达式)

(2)表达式的显示

?

〈表达式〉—在当前行的下一行显示表达式的值

?

?

〈表达式〉—在当前行显示表达式的值

例:

N1=90

“我的数学:

”,

N1

结果:

我的数学:

90

“我的数学:

N1

结果:

我的数学:

90

(3)表达式的运算

—不同类型的表达式使用不同的运算符号也具有不同运算意义。

①算术运算(数值型表达式)

加“+”、减“—”、乘“*”、除“/”、乘方“**或^”、括号“()”,五种。

顺序:

括号—函数—指数—乘除—加减

②字符运算(字符型表达式)

●“+”字符串连接运算

“FOX”+“BASE”

FOXBASE

●“—”字符串连接运算(把前面字符串的尾空格移到连接后的后面)

●“$”字符串比较运算(后面包含前面为.T.,否则为.F.)

例:

?

”abc”$”abcdef”

?

”ABC”$”abcdef”

③关系运算(逻辑型表达式,条件表达式)

大于:

>、小于:

<、等于:

=、大于等于>=、小于等于:

<=、不等于:

<>或#或!

=、全等于:

==(字符串精确比较)

例:

listfor姓名=“王”

listfor姓名==“王”

④逻辑运算(逻辑型表达式)

.OR.—表达式一项为真,要操作

.AND.—表达式中两项为真,要操作

.NOT.或!

—对原逻辑值取反操作

说明:

两个以上的条件连接,顺序:

.NOT.-.AND.-.OR.

例:

显示数学及格的男同学记录。

Listfor数学>=60.and.性别=”女”

Listfor数学>=60.or.性别=”女”

⑤日期运算(日期型表达式)

日期减日期=天数

日期加减数字=日期

例:

listfor出生日期>=CTOD(‘01/01/62’)&&显示62年1月1日以后出生的人。

4.函数

—函数是VFP命令的重要组成部分,函数越多语言的功能越强。

VFP提供几百个,常用:

(注意:

函数的返回值与类型)

1)算术运算函数(返回值:

N型)

①ABS-求绝对值函数

格式:

ABS(〈数字表达式〉)

例:

X=-12

?

ABS(X)

12

②SQRT-平方根函数

格式:

SQRT(〈数字表达式〉)

例:

?

SQRT(10)

3.16

③INT-取整函数

格式:

INT(〈数字表达式〉)

说明:

不四舍五入

例:

?

(28.735)

28

④ROUND—四舍五入函数

格式:

ROUND(〈数字表达式〉,i)

说明:

i为正,其值为小数保留的位数。

i为负,其值为整数去掉的位数。

例:

?

ROUND(25.71543,2)

25.72000

?

ROUND(25.71543,-1)

30.00000

?

ROUND(25.71543,0)

26

⑤MOD-求余函数(模函数)

格式:

MOD(〈数字表达式1〉,〈数字表达式2〉)

说明:

当两表达式同号,余数符号为表达式2的符号。

当两表达式异号时,函数值为表达式1除以表达式2的余数(符号为表达式1的)加上表达式2的值。

例:

?

MOD(10,3)

1

?

MOD()(-10,-3)

-1

?

MOD(10,-3)

-2

?

MOD(-10,3)

2

⑥MAX/MIN-函数(略)

⑦RAND随机函数—产生大于0小于1的随机数。

RAND()

2)字符运算函数(返回值:

C型)

①&—宏代换函数

格式:

&<字符表达式>[.]

说明:

(1)字符表达式只用于赋值的字符变量

(2)不能用括号

(3)“.”表示变量结束

例:

NAME=”李小红”

A1=“你好!

&NAME”

?

A1

你好!

李小红

“你是&NAME吗?

“你是&NAME.吗?

A=”123”

?

&A+123

123123或246

X1=“stud.dbf”

Use&X1

注:

文件名、字段名用变量名表示要用宏代换。

②UPPER/LOWER-变大/小写函数

格式:

UPPER/LOWER(〈字符串表达式〉)

例:

UPPE(“Thisisaboy”)

THISISABOY

③SPACE-生成空格函数

格式:

SPACE(〈数字表达式〉)

例:

“杭州”+SPACE(8)+“西湖”

杭州西湖

④SUBSTR—子串选择函数

格式:

SUBSTR(〈字符串〉,〈子串起始位置〉,〈子串长度〉)

例:

SUBS(“中国民航”,5,4)

民航

⑤AT-子串寻找函数

格式:

AT(〈字符串1〉,〈字符串2〉)

说明:

找到返回值为“字符串1”在“字符串2”的位置,找不到返回值为0.

例:

(‘is’,’Thisisagirl’)

3

LISTFORAT(‘王’,姓名)=1

LISTFOR‘王’$姓名

⑥ALLTRIM-移去字符串首尾部空格函数

格式:

ALLTRIM(〈字符串表达式〉)

例:

LISTFOR姓名=“李红”(建表时李红后加空格,找不到)

LISTFORALLTRIM(姓名)=“李红”

⑦LEN-字符串长度函数

格式:

LEN(〈字符串表达式〉)

例:

LEN(“四川师范大学”)

12

⑧LEFT/RIGHT-求左/右子串函数

格式:

LEFT/RIGHT(〈字符串表达式〉,<长度>)

例:

LEFT(“四川师范大学”,4)

四川

3)日期与时间函数

①DATE-系统日期函数

格式:

DATE()

例:

DATE()

03/15/2002

②2)TIME-系统时间函数

格式:

TIME()

例:

?

TIME()

15:

25:

30

思考题:

从13:

10:

00上机的现在TIME(),每小时上机1.5元,共交上机费多少?

③YEAR-年分函数

格式:

YEAR(〈日期表达式〉)

说明:

返回值4为数字。

例:

?

YEAR(DATE())

2001

LISTFORYEAR(DATE())-YEAR(出生日期)>=60

④MONTH/CMONTH-月份名函数

格式:

MONTH/CMONTH(〈日期表达式〉)

例:

MONTH(CTOD(“01/25/2001”))

1

CMONTH(CTOD(“01/25/2001”))

January

⑤DOW/CDOW-星期函数

格式:

DOW/CDOW(〈日期表达式〉)

说明:

“星期日、一、二……六”的DOW()是“1、2….7”

?

CDOW(DATE())

Friday

?

DOW(DATE())

6

思考题:

“2005年3月15日是星期几”

提示:

xq=”日一二三四五六”

⑥DAY-日函数

格式:

DAY(〈日期表达式〉)

DAY(DATE())

15

4)数据类型转换函数

①ASC-求ASC码函数

格式:

ASC(〈字符串表达式〉)

说明:

将字符串的第一个字符转换成ASC代码。

例:

ASC(”Were”)

87

②CHR-求字符函数

格式:

CHR(〈数字表达式〉)

例:

CHR(87)

W

③STR-数字型转换成字符型函数

格式:

STR(〈数字表达式〉,[<长度>],[小数])

说明:

1、长度包括小数、小数点位数、整数。

2、长度、小数可缺省。

(整数保留8位,无小数)

例:

?

STR(3.1416,6,4)

3.1426

?

STR(3.1416)

3

④VAL-字符串转换成数字函数

格式:

VAL(〈字符串表达式〉)

说明:

1、遇非数字字符,函数值为“0”,停止转换。

2、对含小数的字符,四舍五入保留2位。

例:

?

VAL(“A18”)

0

?

VAL(“18A18”)

18.00

Y=VAL(“143.1592”)

143.16

?

STR(Y,8,4)

143.1592

⑤CTOD-字符型转换成日期型函数

格式:

CTOD(〈字符串〉)

说明:

“字符串”须是“mm/dd/yy”格式

例:

Y=CTOD(‘10/25/86’)

10/25/86

?

Y+10

11/04/86

⑥DTOC-日期型转换成字符型函数

格式:

DTOC(〈日期型表达式〉)

例:

?

DTOC(DATE())

03/15/2001

5)测试函数

——检察系统的某些实时状态,记录指针的位置,光标的位置等。

①RECNO—当前记录函数

格式:

RECNO()

例:

USESTUD

go5

?

RECNO()

5

②BOF-文件起始函数

格式:

BOF()

例:

USESTUD

GOTOP

?

RECNO()

1

?

BOF()

.F.

SKIP–1

?

RECNO()

1

?

BOF()

.T.

③EOF—文件结束函数

格式:

EOF()

例:

USESTUD(10条记录)

GOBOTTOM

?

RECNO()

10

?

EOF()

.F.

SKIP

?

RECNO()

11

?

EOF()

.T.

④TYPE-文件类型检测函数

格式:

TYPE(〈字符表达式〉)

说明:

字符表达式为变量要加引号

例:

a=123

?

type(a)错

?

type(“a”)

N

?

type(“123”)

N

?

type(“abc”)

U(未定义)

abc=”xyz”

?

type(“abc”)

C

⑤DELETED-测试删除标记函数

格式:

DELETED()

例:

USESTUD

GO2

?

DELETED()

.F.

DELETED(删除当前记录)

?

DELETED()

.T.

⑥FOUND-查询函数

格式:

FOUND()

例:

USESTUD

LOCAFOR姓名=”李红”

FOUND()(找到:

.T.,未找到.F.)

⑦SELECT-测定工作区函数

格式:

SELECT()

例:

?

SELECT()

1

5)其他函数

①ROW/COL-屏幕行/列坐标函数

格式:

ROW()/COL()

说明:

给出当前光标在屏幕上的行/列坐标(25行80列)

例:

?

ROW(),COL()

5,45

②条件函数IIF()

格式:

IIF(<逻辑表达式>,<表达式1>,<表达式2>)

说明:

<逻辑表达式>为真,返回值为<表达式1>,<逻辑表达式>为假,返回值为<表达式2>。

例:

a=123

b=456

?

iif(a>b,a,b)

上机内容:

1、在命令窗口下完成所有函数练习。

2、LIST显示年满18岁的同学(只有出生日期字段)。

3、完成以上的思考题。

习题

一、选择题

1.VFP中字段名称是()。

A.常量B.变量C.运算符D.函数

2.DIMENSIONXY(3,3)定义内存变量数组,XY(5)表示的数组元素是()。

A.XY(2,3)B.XY(3,2)C.XY(2,2)D.没有

3.查询表中数学大于等于60分小于80分的男同学和及格女同学的条件表达式是()。

A.性别=”男”.AND.(数学>=60.AND.数学<80).OR.性别=”女”.AND.数学>=60

B.性别=”男”.AND.数学>=60.AND.数学<80.AND.性别=”女”.AND.数学>=60

C.性别=”男”.AND.(数学>=60.AND.<80).OR.性别=”女”.AND.数学>=60

D.性别=”男”.AND.(数学>=60.AND.数学<80).OR.性别=”女”.OR.数学>=60

4.内存中有内存变量A1、A2、A3、A4、A5,要保存A1、A2、A3到文件N1.MEM中,正确的操作命令是()。

A.SAVETON1ALLB.SAVETON1ALLLIKEA1、A2、A3

C.SAVETON1D.SAVETON1EXCEPTA1、A2、A3

5.M1=123,?

”&M1”+”123”的屏幕显示是()。

A.123123B.246C.类型不匹配D.无显示

6.?

LEN(ALLTRIM("物理"+space(4)-"99级"))执行后,屏幕显示的是()。

A.12B.6C.13D.8

7.自由表中有10条记录,LIST命令后()。

A.BOF()和EOF()都为.T.B.BOF()为.T.,EOF()为.F.

C.BOF()和EOF()都为.F.D.BOF()为.F.,EOF()为.T.

8.A=”23”,?

TYPE(A)的显示结果是()。

A.NB.CC.UD.找不到变量

二、填空题

1.表中含有逻辑字段“是否党员”,对该值为.F.的记录要操作命令的条件表达式是____。

2.VFP中的程序命令和对象都可以用快捷键____复制,____粘贴。

3.VFP的常量类型有种,它们是____。

4.?

ROUND(326.1543,-1)的显示结果是____。

5.?

VAL(”18B15”)的显示结果是____。

6.当前自由表含出生日期字段,要查询1978年8月25日出生人员的记录,其命令的条件表达式是____。

 

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

当前位置:首页 > 法律文书 > 调解书

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

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