第三章 Visual Foxpro 的语言基础

66
第第第 Visual Foxpro 第第第第

description

第三章 Visual Foxpro 的语言基础. 教学目的 : 1 .掌握数据类型、变量、常量、表达式等基本概念。 2 .学会变量的建立和输出。 3 .掌握常用的几个函数 :Int , Sqrt , Mod , Max , Min , Left , Right , Substr , Len , Ltrim , Trim , Alltrim , Val , Str , Date , Time , Year , Ctod , Dtoc , Bof , Eof , Recno , RecCount , & 。 教学重点: 数据类型、变量、常量的基本概念 教学难点: - PowerPoint PPT Presentation

Transcript of 第三章 Visual Foxpro 的语言基础

Page 1: 第三章  Visual Foxpro 的语言基础

第三章 Visual Foxpro 的语言基础

Page 2: 第三章  Visual Foxpro 的语言基础

教学目的 :1 .掌握数据类型、变量、常量、表达式等基本概念。2 .学会变量的建立和输出。3 .掌握常用的几个函数 :Int , Sqrt , Mod , Max , Min , Left , Right , Substr , Len , Ltrim , Trim , Alltrim , Val , Str , Date , Time , Year , Ctod , Dtoc , Bof , Eof , Recno , RecCount , & 。教学重点:数据类型、变量、常量的基本概念教学难点: 几种表达式的概念、区别

Page 3: 第三章  Visual Foxpro 的语言基础

要处理的数据是海量的,为了更好的管理这些数据,将数据按照其特点进行了分类,分成了多种不同的数据。

2 . 1 数据类型

数据类型是简单数据的基本属性,是一个重要的概念。数据类型一旦被定义,就确定了其存储方式和使用方式。  Visual FoxPro 系统提供了十三种数据类型。

Page 4: 第三章  Visual Foxpro 的语言基础

学号 姓名 系名 性别 年龄 语文 总成绩 月花费 奖励情况

相片

95001 李钢 计算机应用

男 19 95.5

522.14 $500. 0000

memo Gen

95002 罗飞 生物工程 男 20 67 533.45 $600. 0000

Memo Gen

95003 张明 行政管理 女 20 78.5

566.37 $560. 0000

Memo Gen

95004 王雷 行政管理 男 21 69 576.55 $600. 0000

memo gen

Page 5: 第三章  Visual Foxpro 的语言基础

1 、字符型 字符型数据由字母(汉字)、数字、空格等任意 ASCII 码字符组成。 字符数据的长度为 0 ~ 254 字节,每个 ASCII 码占一个字节,每个汉字占两个字节。

例如:姓名为字符型字段,存放的“李钢” ……就是字符型数据 ,长度为 4 个字节 < 字母(汉字) > 学号为字符型字段,存放的“ 95001” …… 就是字符型数据,长度为 5 个字节 < 数字 >

Page 6: 第三章  Visual Foxpro 的语言基础

2 、数值型 它由数字 0 ~ 9 、符号( + 或 - , + 号可省略)和小数点( . )组成。数值型数据的长度为 1 ~ 20 字节(数据中的每个数字、小数点和正负号都各占一个字节)。 例如:年龄为数值型字段,存放的 20 、 19 就是数值型数据 ,长度为 2 语文为数值型字段,存放的 95.5 就是数值型数据 ,长度为 43 、 浮点型 与数值型数据完全等价,数据精度要比数值型数据高,数据范围比数值型要广(用科学记数法)。 例如:总成绩为数值型字段,存放的 576.55 为浮点型数据,长度为 6 234567000 表示成浮点数是 2.34567E8

Page 7: 第三章  Visual Foxpro 的语言基础

4 、整型 不包含小数点部分(整数) 只用于字段类型的定义,占用 4 个字节。

5 、双精度型 更高精度的数值型数据 只用于数据表中的字段类型的定义,占用 8 个字节。

6 、日期型 表示日期的数据,长度固定为 8 个字节 包括年、月、日三个部分,由于各部分的排列顺序及分隔符不同,日期型数据的表现形式也很多。 例如:出生日期为日期型字段, 02/13/1979

Page 8: 第三章  Visual Foxpro 的语言基础

7 、日期时间型 是描述日期和时间的数据,长度固定为 8 个字节 除了包括年、月、日外,还包括时、分、秒以及上午、下午等 默认格式为“ mm/dd/yyyy hh:mm:ss[A/P]” 8 、逻辑型 描述客观事物真假的数据 只有真和假两种值,长度固定为 1 个字节 例如:党员否字段就是逻辑型字段 .F. .T. ( .Y. .N.)

Page 9: 第三章  Visual Foxpro 的语言基础

9 、备注型 用于存放较长 ( 大于 254 字节)的字符型数据 长度仅受磁盘空间的限制,它只用于数据表中的字段类型的定义,长度固定为 4 个字节 实际数据一般是大于 4 个字符的,他们实际上是被存放在与数据表文件同名的备注文件 (FPT) 中, 4 个字节存放的是指向该备注文件的指针。 例如:备注说明字段就是备注型字段

10 、通用型 用于存储 OLE 对象的数据。通用型数据中的 OLE 对象可以是电子表格、文档、图片等。只用于数据表中的字段类型的定义。 通用型数据长度固定为 4 个字节,实际数据存放到了磁盘空间内,保存在与数据表文件同名的备注文件 (FPT) 中。 例如:相片字段就是通用型字段

Page 10: 第三章  Visual Foxpro 的语言基础

11 、 货币型 是一种特殊形式,在数据的第一个数字前冠一个货币符号( $ ),小数位超过 4 个字符的数据,系统将会按四舍五入原则自动截取 占用 8 个字节

例如:月花费为货币型字段, $500.0000 为货币型数据 若输入 500.483880 系统将自动保存为 $500.4839

Page 11: 第三章  Visual Foxpro 的语言基础

3 . 2 常量与变量一、常量(数据) 常量:一旦存放到计算机中,它的值就不再发生变化,不管

对它进行什么操作,值都不发生变化。 常量的类型:数值型、字符型、逻辑型、日期型和日期时间

1 、数值型常量 由数字( 0-9 )、小数点和正负号组成。

例如:以下是合法的数值型常量 -123.56 768 +32 567.67 -123e+12 -3645e-89 表示: -123*1012 和 -3645*10–89

Page 12: 第三章  Visual Foxpro 的语言基础

2 、字符型常量 用双引号“”、单引号‘’或方括号 [ ] 等定界符括起来的字符串(汉字和 ASCII 码) 例如:“武汉大学” [Foxpro] ‘123.456’

3 、逻辑型常量 逻辑型常量只有真和假两种值。要用定界符( . ) 例如: .T. , .t. , .Y. 和 .y. 都表示真; .F. , .f. , .N. 和 .n. 都表示假。

Page 13: 第三章  Visual Foxpro 的语言基础

4 、日期常量

常用的系统输入格式: {^yyyy/mm/dd} 常用的系统输出格式: mm/dd/yy ( 显示格式 )其中, mm 代表月, dd 代表日, yy 或 yyyy 代表年。

例如:以下是合法的日期型常量 04/12/98 (显示格式) {^2002/03/01}

Page 14: 第三章  Visual Foxpro 的语言基础

6 、日期时间型常量 日期时间常量常用的系统输入格式: {^yyyy/mm/dd hh:mm:ss} 日期时间常量常用的系统输出格式:mm/dd/yy hh:mm:ss 其中: mm 代表月, dd 代表日, yy 或 yyyy 代表年, hh 代表小时,后两个 mm 代表分钟, ss 代表秒。、

例如:以下是合法的日期时间型常量 ?{^1997/06/23 09:16:36}

Page 15: 第三章  Visual Foxpro 的语言基础

二、变量 在命令操作和程序运行过程中其值允许变化的量称为变量,变量包括系统变量、内存(数组)变量、和字段变量 3 种。

1 、系统变量 系统自动定义生成的变量,变量名由系统定义并且是以” -“ 开头,有特殊用途。 display memory &&显示所有系统变量

Page 16: 第三章  Visual Foxpro 的语言基础

2 、内存变量

内存变量可用来存储数据,定义内存变量时需为它命名并赋初值,内存变量建立后存储于内存中。 由于内存变量是存放在内存当中的,所以除非将内存变量以文件的形式保存,否则,当退出 visual foxpro 系统后,内存变量的值也会与系统一起从内存中消除。 内存变量的类型有数值型、浮点型、字符型、逻辑型、日期型和日期时间型。 每个内存变量有一个唯一的名字。

Page 17: 第三章  Visual Foxpro 的语言基础

(1) 内存变量的命名规则 内存变量名最长不超过 254 个字节长度,可以字母(汉字)、下划线开头,由字母(汉字)、数字及下划线组成。 内存变量名的命名尽量要有意义,以便识别和具有可读性。 哪些是正确的变量名:ABC LIST 12K #1234 _ASD K&12 A_123

Page 18: 第三章  Visual Foxpro 的语言基础

(2 ) 内存变量赋值命令 ① 可直接用 = 赋值 内存变量 =< 表达式 > 例如: m=4 n=5 a=m-n ② 可采用 STORE 间接赋值 STORE < 表达式 > TO 内存变量 例如: STORE 1.2 TO a , c STORE “ 武汉大学” TO b STORE {^1995/05/30} TO d

Page 19: 第三章  Visual Foxpro 的语言基础

说明: 内存变量在赋值时定义了它的值及类型,其类型与所赋的值的类型相同。 STORE 命令的内存变量表可包括多个内存变量,但必须用逗号来分隔。该命令可将同一值赋给多个内存变量。 而“=”命令仅可为一个内存变量赋值。

( 3 )内存变量的显示 命令格式:? | ??< 表达式 > 功能:计算表达式的值,并将其显示在屏幕上。 说明: 命令格式中的符号 | 表示或。

Page 20: 第三章  Visual Foxpro 的语言基础

?表示从屏幕下一行的第一列起显示结果,例如: STORE 1.2 TO a,c STORE “ 武汉大学” TO b ? a && VFP 主窗口里显示 1.2 ? b && 换一行后显示武汉大学

?? 表示从当前行的当前列起显示结果。例如: ? a && 显示 1.2 ??“ 武汉大学” && 紧接在上一命令显示结果1.2 的后面显示武汉大学

??? :将表达式的值输出到打印机进行打印

Page 21: 第三章  Visual Foxpro 的语言基础

注: < 表达式表 > 表示可用逗号来隔开多个表达式,命令执行时遇逗号就空一格。

写出执行以下命令后屏幕上输出的结果:

A=12B=5?"a=",a??"b=",b?"a+b=",a+b

Page 22: 第三章  Visual Foxpro 的语言基础

( 4 )内存变量的全面信息显示 Display Memo [Like< 通配符 >] [To Printer][To File< 文件名>]

参数说明:◆ 该命令可以显示所有内存变量的名称、作用域、类型、值等 信息。◆ 如果选择 [Like< 通配符 >] 选项,则仅显示有关内存变量的信 息。◆ 如果选择 [To Printer] 选项,表示送打印机对于打印。◆ 如果选择 [To File< 文件名 >] 选项,表示把内存变量的有关信 息保存到一个文本文件。

例 3-12 内存变量的信息显示示例。 Disp Memo && 显示所有的内存变量的信息 Disp Memo Like A* && 显示以 A 开头所有的内存变量的信息

Page 23: 第三章  Visual Foxpro 的语言基础

(4) 内存变量的删除 内存变量会占用一定的内存空间。在程序运行的过程中,如果某些内存变量使用后不再需要,为了节省内存空间,应进行删除。

Release < 内存变量名表 /All> [Like< 通配符 >]Clear Memory (该命令与 Release All 命令相同)

例:前面我们已经建立了 A1,A2,A3,B1 变量,现在来进行内存变量的释放。 Release A1,A2,A3 Dispay Memory &&A1,A2,A3 变量被释放,只有 B1 变量存在

Page 24: 第三章  Visual Foxpro 的语言基础

3 、字段变量 一个数据库由若干相关的数据表组成,一个数据表又是由若干个具有相同属性的记录组成,而每一个记录又是由若干个字段组成的。字段变量(字段名变量):用户在定义表结构时所定义的变量。 是一种多值变量,它随着数据表记录指针的移动而不同。 例如:

记录号 学号 姓名 性别 出生日期 入学成绩 1 981101 赵文化 男 2-28-80 500

2 981102 徐逸华 男 6-7-81 630

3 981103 郭茜茜 女 11-17-82 650

4 981201 钱 途 男 5-1-80 380

5 981202 高 涵 男 11-06-80 630

6 981203 李晓鸣 女 11-17-82 400

Page 25: 第三章  Visual Foxpro 的语言基础

3 . 3 运算符和表达式

运算符:表示数据之间运算方式的符号 VFP 运算符包括算术运算符、逻辑运算符、关系运算符和字符运算符

表达式:数据之间运算关系的表达形式,由常量、变量、函数及运算符组成, 单个数据是表达式的特例

表达式按参与运算的数据类型,可划分为算术表达式、逻辑表达式、关系表达式、日期表达式、字符表达式和五种。注:表达式各个部分的数据类形必须一致

Page 26: 第三章  Visual Foxpro 的语言基础

一、算术表达式 算术运算符:包括 : (); ^ 或 ** ; * / ; % ; +- ; 算术运算符及运算规则(按优先权列出)

算术表达式:对象必须是数值型数据(常量、内存变量等),运算结果仍然是数值型。

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

Page 27: 第三章  Visual Foxpro 的语言基础

例: 算术表达式示例。 10+20/4+SQRT(16) && 正确的表达式, SQRT ()为开方函数

A1=”24” 2+6/3+VAL(A1)\5+25%5 && 正确的表达式, VAL() 为字符串转换为数值函数

5*(3-SQRT(4)+ABS(15-60)) && 正确的表达式

A=”123” B=123 2*A+3*B-5 && 错误的表达式

Page 28: 第三章  Visual Foxpro 的语言基础

二、字符表达式 字符运算符:(对字符型数据进行各种操作的运算符) + 完全连接运算 - 将前串尾空格移至后串的尾部再连接 $  测试前串是否包含在后串中字符表达式:包含字符型数据(常量、内存变量、数组、字段),字符运算符。

+ ① 完全连接格式为:“字符串 1”+“ 字符串 2”+... 例如: ?" 中国 "+" 辽宁 "+" 大连 "&& 结果为: 中国 辽宁 大连 ?“ 234”+A1 && 错误的表达式

Page 29: 第三章  Visual Foxpro 的语言基础

- ② 不完全连接格式:“字符串 1”-“ 字符串 2”- 。。。“字符串 N” 例如: ?" 中国 "-" 辽宁 "," 大连“ && 结果为:中国辽宁 大连 $ ③ 包含运算格式:“〈字符串 1 〉” $ “ 〈字符串2 〉” 如果 < 字符串 2> 包含 < 字符串 1> ,则其运算结果为“ .T.” ,否则为“ .F.” 例如: ?” 计算机” $” 计算机概论” && 结果为 .T. ? “or” $ “girl” && 结果为? ? "good"$"FoxPro for windows is Good" && 结果为 .F.

Page 30: 第三章  Visual Foxpro 的语言基础

三、日期表达式 日期运算符: + : 日期与数值相加,结果为该日期之后几天的日期。 日期加日期,非法 - : 日期减数值时,其结果为该日期之前的某天的日期 日期减日期,其结果为两日期之间相差的天数。 数值减日期是不合法的。

日期表达式:包含日期型、数值型的常量、变量、函数、及日期型运算符,其运算结果为日期型数据或数值型数据

Page 31: 第三章  Visual Foxpro 的语言基础

例如: ?DATE()+15

?{^1998/10/10}+5 && 结果为 10/15/98

?{^1998/10/10}-20 && 结果为 09/20/98

?{^1998/10/15}-{^1998/10/10} && 结果为? ?20-{^1998/10/10} && 结果为? ?DATE()+{^1998/10/15} && 结果为?

Page 32: 第三章  Visual Foxpro 的语言基础

四、日期时间表达式 日期时间运算符: + :在已给的日期上再加上秒数 - : 在已给的日期上前去秒数 或 计算已给的两个日期相差的秒数 日期时间表达式:由日期运算符和日期时间型常量、变量和返回日期时间型数据的函数组成。

例如: ?{^1998/10/10 9:15:20}+200 && 结果为 10/10/98 9:18:40 ?{^1998/10/10 9:18:40}-{^1998/10/10 9:15:20} && 结果为 200 ?{^1998/10/10 9:15:20}-20 && 结果为 ?

Page 33: 第三章  Visual Foxpro 的语言基础

五、关系表达式 关系运算符: <, >, = , <> ( # 、 != ) , <=,>=,= = (完全相等) 用于比较大小 , 产生逻辑值。 它们的运算优先级是相同的,由先后次序和括号来确定先运算那一步。

关系运算符 含义< 小于> 大于= 不完全等于<>、 #、 != 不等于<= 小于等于>= 大于等于= = 完全相等,只能用于字符型数据

Page 34: 第三章  Visual Foxpro 的语言基础

= :在系统默认的情况下,只要 = 右边的字符串与左边字 符串的左端的部分相同,则系统判断为相同。== :要求两个字符串的长度相同且各对应的字符都相同 时,系统才判断为相同。

关系表达式:由字符表达式、日期表达式、或者算术表达式及关系运算符组成,其运算结果为逻辑值

运算规则: 非汉字字符串按 ASCII 码值大小进行比较。 汉字字符串按区位码大小进行比较。 日期型数据,前小后大。 逻辑数据 .T. 大于 .F.

Page 35: 第三章  Visual Foxpro 的语言基础

关系运算最基本也是最重要的是:关系运算符两边的数据类型必须一致,只有同一类型的数据才能相比较。

例如: ?5+3*2>3*1.5+1 && 结果为 .T. ? DATE()>{^1999/12/30} && 结果为 .T. ? 2<>2 && 结果为 .F. ?"a"<"AB" && 结果为 .F. ?" 计算机概论 "=" 计算机 " ?" 计算机概论 "$" 计算机“ ?" 计算机概论 "==" 计算机 "

Page 36: 第三章  Visual Foxpro 的语言基础

六、逻辑表达式 逻辑运算符: .not. 取反运算 .and. 与运算 仅当两个分量的值均为真时,其运算结果才为真。 .or . 或运算 当两个分量至少有一个为真时,其运算结果就为真。 运算优先顺序: not 最高, or 最低。 逻辑运算的真值表见 P36 表 3-5

逻辑表达式: I. 由逻辑运算符和逻辑型常量、变量、返回逻辑型数据的函数和关系表达式组成,其运算结果是逻辑值真“ .T.”“.Y.” 或假“ .F.”“.N.” 。 II. 逻辑运算符的优先级按非 (NOT) 、与( AND )、或( OR )的次序执行。

Page 37: 第三章  Visual Foxpro 的语言基础

例如: ?.not.‘d’<’a’ && 结果为 .T. A=5 B=10 C=”ABCD” ? A>10 AND B>5 && 结果为 .F. ? NOT A=5 && 结果为 .F. ? A>10 OR B>5 && 结果为 .T. ? .T. And C=”AB” && 结果为 .T. ? A>C OR B>5 && 错误的表达式

Page 38: 第三章  Visual Foxpro 的语言基础

七: 各种表达式之间的运算优先级

不同类型表达式的运算优先级别为: 圆括号 > 函数 > 算术运算符 > 字符运算符 > 关系运算符 > 逻辑运算符。 习题: 设 a=[123] , B=[234] ,表达式的值为假 (.F.) 是 。A ) .Not.A=B.Or."B" $ [Abc]B) .Not.A$[Abc].And.A<>BC ) .Not.A<>B D ) .Not.A>=B

Page 39: 第三章  Visual Foxpro 的语言基础

3 . 4 函数

VFP 定义的标准函数十分丰富,共有 200 余个。灵活运用这些函数,不仅可以简化许多运算,而且能够加强 VFP 的许多功能。 按函数功能可将函数划为:数值型函数、字符型函数、日期和时间函数、数据类型转换函数、字符处理函数、测试函数及宏替换函数。

< 函数名 >( 参数)

Page 40: 第三章  Visual Foxpro 的语言基础

一、数值型函数 1 、 Int(< 数值表达式 >) 返回数值表达式的整数部分,不四舍五入。 常用于奇、偶数的判断。

例:取整函数示例。 ? Int(5/2) && 结果为 2 A=24 b=1 ? Int(A/2)=A/2 && 结果为 ? ? Int((A+B)/2)=(A+B)/2 && 结果为 ?

Page 41: 第三章  Visual Foxpro 的语言基础

2 .取模函数

Mod(< 数值表达式 1>,< 数值表达式 2>)

例:

?MOD(21,4)A=6B=3? A+B%2 && 结果为 7? Mod(A,2)=0 && 结果为 .T.? A+B%2=0 && 结果为 .F.

Page 42: 第三章  Visual Foxpro 的语言基础

3 .伪随机数 Rand(< 数值表达式 >) 产生一个 0.1 到 1 之间的伪随机数。

例:产生一个小于 100 的伪随机数示例。 ?Int(Rand()*100)

MAX ()、 MIN ()、 SQRT ()、 ABS ()、EXP ()、 ROUND ()、 LOG ()

Page 43: 第三章  Visual Foxpro 的语言基础

二、字符型函数1 .字符串截取函数 Substr(< 字符表达式 >,< 数值表达式 1>[,< 数值表达式 2>])

例 : 字符串截取函数示例。 ?Subs(" 东华理工学院 ",5,4) &&结果为理工 ?Subs(“2008 年北京奥运会” ,7) &&结果为北京奥运会 A=”VISUAL FOXPRO” ? Substr(A, 8,3) &&结果为:?

Page 44: 第三章  Visual Foxpro 的语言基础

2 .产生空格函数 Space(< 数值表达式 >) 按 < 数值表达式 > 的值,产生空格字符串赋给内存变量。

例:空格函数示例。 k=Space(3) ?Len(K) && 求 K 变量字符串的长度,结果为 3 ?‘'Visual"+k+"Foxpro'’ && 结果为 Visual Foxpro

Page 45: 第三章  Visual Foxpro 的语言基础

3 .左截子串函数 Left(< 字符表达式 >,< 数值表达式 >) 从字符表达式左边第一个字符开始截取 < 数值表达式 > 个字符,生成一个新的字符串。

例 左截子串函数、右截子串( Right )函数示例。 ? Left(“ABCDE",2) && 结果为 AB ?Right(“ABCDE",2) && 结果为 DE A=”FOXPRO 2.6 FOR WINDOWS” ? Left(A,10) && 结果为: FOXPRO 2.6

Page 46: 第三章  Visual Foxpro 的语言基础

4 .子串查找函数 At(< 字符表达式 1>,< 字符表达式 2>[, 数值表达式 ]) 查找 < 字符表达式 l> 在 < 字符表达式 2> 中第 <数值表达式 > 次出现的起始位置。例:子串查找函数示例。 ?At(‘D’,’ADCDB',2) && 结果为 4

5 .求字符串长度函数 Len(< 字符表达式 >) 求字符表达式的长度。例: 求字符串长度函数示例。 ?Len(“Foxpro") && 结果为 6 ?Len(“ 东华理工大学” ) && 结果 ?

Page 47: 第三章  Visual Foxpro 的语言基础

6 .删除字符表达式前后的空格函数 AllTrim(< 字符串表达式 >) 返回删除 < 字符表达式 > 前置空格及尾部的空格的字符串。

例:删除字符表达式前后的空格函数示例。 A=” ABCDEF “ ? Len(A) &&结果为 11 ? Alltrim(A) &&结果为 ABCDEF B=Alltrim(A) ?Len(B) &&结果为 6其它函数:Ltrim() 、 trim() 、 replicate()

Page 48: 第三章  Visual Foxpro 的语言基础

三、日期和时间函数 1 .系统日期函数 Date() 返回系统当前日期。 例:系统日期函数示例。 ?Date() &&返回系统当日日期

2 .系统时间函数 Time () 以时:分:秒的形式返回系统当前的时间。。 例:系统时间函数示例。 ?Time() &&结果为 14:45:55

Page 49: 第三章  Visual Foxpro 的语言基础

3 . Year 函数 Year(< 日期表达式 >) 返回 < 日期表达式 > 中的年份,它是一个四位数的数值型数据。 例: Year 函数示例。 A={^1985/05/26} ? Year(date())-Year(A) && 结果为 ?

Cdow() 、 Dow () 、 Month() 、 Cmonth() 、 day()

Page 50: 第三章  Visual Foxpro 的语言基础

四、数据类型转换函数

1 .字符型的数据转换数值 函数 VAL()

Val< 字符表达式 >

将以纯数字表示的 < 字符表达式 > 或以数字开头的 < 字符表达式 > 中的开头数字字符串转换为数值型数据,精度为小数二位 , 会四舍五入。 如果不是以纯数字表示的或不是以数字开头的字符串,则转换为 0.00 。

Page 51: 第三章  Visual Foxpro 的语言基础

例:字符型的数据转换数值函数 VAL() 示例。

? Val(“123.245”) &&结果为 123.25 ? Val(“12abc34”) &&结果为 12.00 ? Val(“ Ab123” ) &&结果为 0.00 A=”1” B=”2” ? Val(A) &&结果为 1.00 ? Val(A+B) &&结果为 ?

Page 52: 第三章  Visual Foxpro 的语言基础

2 .数值型数据转换为字符串函数 STR()

Str(< 数值表达式 >,[< 长度 >],[< 小数点位数 >])

将 < 数值表达式 > 的数值按指定的 < 长度 > 和 <小数点位数 > 转换为字符串。 应注意: < 长度 > 至少要满足整数位的要求。否则,转换不成功,其结果为 *.* 。如果不给定长度,则默认为 10 位。不给定小数点位数,则默认为 0 位,会四舍五入。

Page 53: 第三章  Visual Foxpro 的语言基础

例: 数值型数据转换为字符串函数 STR() 示例。 A=123.456 ? Str(A,9,4) && 结果为: 123.4560 ? Str(A,5) && 结果为: 123 ? Str(A,2) && 结果为 *.* (长度太小,转换不成功) AB=123456.65 AB1=Str(AB) ?AB1 && 结果为 123457 ?Len(AB1) && 结果为 10

Page 54: 第三章  Visual Foxpro 的语言基础

3 . < 字符表达式 >转换为日期表达式函数 CTOD()

Ctod(< 字符表达式 >)

将 < 字符表达式 >转换为日期表达式。

例: ? Ctod("^2004-8-26") &&结果 .{08/26/04}

Page 55: 第三章  Visual Foxpro 的语言基础

4 . < 日期表达式 > 转换为字符表达式函数 Dtoc()

Dtoc(< 日期表达式 >,-1)

将 < 日期表达式 > 转换为字符表达式。如果选择参数 -1 ,则会删除年、月、日之间的连接符。

例: ? Dtoc({^2004/08/26}) && 结果为 . 08/26 /04 ? Dtoc({^2004-08-26},-1) && 结果为 .20040826

Chr(< 数值表达式 >) 、 Asc(< 字符表达式 >)

Page 56: 第三章  Visual Foxpro 的语言基础

五、字符处理函数

1 . Upper 函数

Upper(< 字符表达式 >) 将字符串中所有小写字母转换成大写字母。

例:小写字母转换成大写字母 Upper 函数示例。 ? Upper(“gooD”) &&结果为 GOOD

Page 57: 第三章  Visual Foxpro 的语言基础

3 . Lower 函数

Lower(< 字符串表达式 >)

将字符串中所有大写字母转换成小写字母。

例:大写字母转换成小写字母 Lower 函数示例。 ? Lower(“HeLLO”) && 结果为 hello

Page 58: 第三章  Visual Foxpro 的语言基础

六、 测试函数 1 .测试表达式的数据类型函数

Type(< 表达式 >)

测定表达式的数据类型,结果为 C , N , D ,L , M , G , U (表示参数错)。 注意:一定要用单引号或双引号将常量、变量、字段名或表达式定界。

Page 59: 第三章  Visual Foxpro 的语言基础

例: Type 测试函数示例。

?Type('"Abcd"') && 结果为 c&& 结果为c ? Type(‘268’) && 结果为 n ? Type(‘{^2000/08/26}’) && 结果为 d ? Type(‘Abc’) && 结果为 u ,因为 abc 变量事先未赋值。 Abc=1248 ? Type (’ Abc’ ) && 结果为 n

Page 60: 第三章  Visual Foxpro 的语言基础

七、宏代换函数 & &< 字符型内存变量 >[.< 表达式 >]

将 < 字符型内存变量 > 中的数字字符串置换出来,进行宏代换。 注意:宏代换只能是对 < 字符型内存变量 > 进行置换,而不是其它类型的内存变量。数字字符串置换出来后为数值型数据。 如果选择了可选子句 [.< 表达式 >] ,小数点是功能符(只有第一个小数点是功能符,其余的小数点仍作字符处理),会将小数点后的 < 表达式 > 的值添加到置换出来的数据的尾部。但 < 表达式 > 的数据类型必须与置换出来的数据的类型相同。

Page 61: 第三章  Visual Foxpro 的语言基础

例:宏代换函数 & 示例。

A=”18” ?&A.5 && 结果为 185 ?&a.5.2 && 结果为 185.2 ? 2*&A.5 && 结果为 370 ?2*&a.5.2 && 结果为 370.4 AB=123.45 ? &AB && 系统提示数据类型错误

Page 62: 第三章  Visual Foxpro 的语言基础

八、数据表测试函数

1 . Reccount() 函数

测定当前数据表中记录的总个数。

例: Reccount() 函数示例。 Use F:\ 学生档案表 ? Reccount() && 显示 f:\ 学生档案表的总记录数

Page 63: 第三章  Visual Foxpro 的语言基础

2 . Recno() 函数 测定当前数据表记录指针所在的记录号。

例: Recno() 函数示例。 Use F:\ 学生成绩表 ? Recno() && 指针所在的记录号为 1 Goto 6 ?Recno() && 指针所在的记录号为 6

Page 64: 第三章  Visual Foxpro 的语言基础

3 . Found() 函数

测定 Locate 或 Seek 、 Find 命令在数据表中定位是否成功的函数,如定位成功 Found() 函数返回 .T. 。否则, Found() 函数返回 .F. 。

例: Found() 函数示例。 Use F:\ 学生档案表 Locate For 姓名 =” 李光明” ? Found()

Page 65: 第三章  Visual Foxpro 的语言基础

九、记录指针管理函数1 . Top 函数将记录指针定位在当前数据表的第一条记录的位置上。2 . Bottom 函数将记录指针定位在当前数据表的最后一条记录位置上。

例:执行下列命令,观察运行结果理解 top 函数和 bottom 函数。 Use F:\ 学生档案表 ?Recno() Goto Bottom ?Recno() Goto Top ?Recon()

Page 66: 第三章  Visual Foxpro 的语言基础

3 . Bof() 函数 Bof() 是文件头函数。当记录指针指向 0 号记录

时, Bof ()为 .T. ,否则为 .F. 。 注意:打开数据表时,记录指针是指向 1 号记

录,这时文件头函数 bof ()为 .F. ,要 skip –1 后,记录指针才指向 0 号记录,文件头函数 bof ()才为 .T. 。

4 . Eof() 函数 Eof() 是文件尾函数。 当记录指针指向 bottom+1 或者 reccount()+1

时, Eof() 为 .T. ,否则,为 .F. 。