f633cab1c3a5a125a28344cec5484949.ppt
- Количество слайдов: 49
第三章 Visual Fox. Pro 基 础
本章要点 Visual Fox. Pro命令的格式与书写规则 文件类型 数据存储 表达式 函数
Visual Fox. Pro命令的格式与书写规则 Visual Fox. Pro功能异常强大, 拥有近 500条命令。且其 命令比一般程序设计语言中的语句更加精练、功能更强。 掌握一些常用命令,可以使操作更方便、快捷、高效。本 节介绍Visual Fox. Pro命令的一般格式及其书写规则。 1.Visual Fox. Pro的命令格式 一条命令通常由命令动词和若于个短语组成。命令动 词表明该命令执行什么操作,短语用于说明命令的操作对 象、操作条件等,短语有时又称为子句。Visual Fox. Pro命 令的典型格式为: <命令动词>[<表达式表>][<范围>] [FOR <条件>][WHILE <条件>] [TO FILE <文件名> | TO PRINTER | TO <内存变量>]
(1) 命令格式中各符号的含义 <>:必选项 [ ]:可选项,视具体使用要求由用户选择 | :在由它所分隔的各项中选择其一. . . : 表示此部分可以类似方法重复多次 【例】 LIST 学号, 姓名, 性别 FOR YEAR(出生日期)=1986 TO PRINTER (2)命令格式中各部分功能 ① 命令动词 例如"LIST","USE","COUNT"等。 ② 表达式表,由一个或多个逗号分隔。如:姓名 +STR(总分)也是一个表达式。 ③ 范围 它指定命令可以操作的记录集合。范围可有 下列四种选择: ALL、NEXT <n>、RECORD <n> 、REST
④ FOR <条件> 它规定只对满足条件的记录进行操 作,如果使用FOR子句Visual Fox. Pro将记录指针重新指向 表文件顶,并且用FOR条件与每条记录进行比较。上例中 的"FOR YEAR(出生日期)=1986"子句,表示只选择"出生 日期"为 1986年的学生记录进行操作。 ⑤ WHILE <条件> 在表文件中,从当前记录开始, 按记录顺序从上向下处理,一旦遇到不满足条件的记录, 就停止搜索并结束该命令的执行, 在FOR子句和WHILE 子句中,<条件>必须返回逻辑值。 ⑥ TO FILE <文件名>|TO PRINTER|TO <内存变量> 它控制操作结果的输出,TO FILE <文件名>命令允许 结果向文件输出;TO PRINTER命令允许操作结果向打印 机输出;TO <内存变量>命令允许操作结果向内存变量输 出。
2.Visual Fox. Pro命令的书写规则 在Visual Fox. Pro中,命令的书写(或输入)规则相当灵活、 方便,主要有以下几点: (1)命令动词必须写在命令的最前面,而各短语的前后顺序可 以任意排列。例如,下面两条命令的执行结果完全一样: LIST 学号, 姓名, 性别 FOR YEAR(出生日期)=1986 LIST FOR YEAR(出生日期)=1986 学号, 姓名, 性别 (2)命令动词与短语之间、短语的各部分之 间(如短语"NEXT 3"的NEXT与3之间,短语"FOR 性别="女"的 FOR与性别="女"之间)必须用空格分隔开。 (3)命令动词、各短语中的保留字及函数名在不至于引起混淆 的情况下可以简写为前4个字符,而且英文字母大小写等效。例 如,DISPLAY可以写成DISP或disp,但LOCAL与LOCATE则应 注意。显然,大量使用简写必然会降低可读性,建议适量使用 简写为佳。 (4)一条命令的长度可达 8192个字符。当一行写不下时,可在 适当位置输入续行符"; "并按回车键换行,继续输入该命令。
文件扩展名与文件类型 本表列出了 Visual Fox. Pro 使用的文件扩展名及其关 联的文件类型。 扩展名 文件类型 . app. hlp. htm. chm. dbc. dct. dcx. dbf. fpt. dep. dll 生成的应用程序或 Active Document Win. Help HTML 编译的 HTML Help 数据库备注 数据库索引 表 表备注 由“安装向导”创建相关文件 Windows 动态链接库
. prg. fxp. exe. err. fky. frx. frt. h. cdx. idx. mnt. mpr. mpx 程序 编译后的程序 可执行程序 编译错误 宏 报表 报表备注 Visual Fox. Pro或C/C++程序需要包含的头文件 复合索引 索引,压缩索引 菜单 菜单备注 生成的菜单程序 编译后的菜单程序
. ocx. pjt. qpr. qpx. sct. tbk. txt. vcx. vue. win. log. mem Active. X 控件 项目 项目备注 生成的查询程序 编译后的查询程序 表单 表单备注 备注备份 文本 可视类库备注 可视类库 Fox. Pro 2. x 视图 窗口文件 代码范围日志 内存变量保存
数据类型 数据是反映客观事物属性的记录。通常分为数值型 和字符型两种基本类型。数据类型一旦被定义,就确定 了其存储方式和使用方式。 Visual Fox. Pro系统为了使用 户建立和使用数据库更加方便,将数据细化分为以下几 种类型。 1. 字符型数据描述不具有计算能力的文字数据类型, 是最常用的数据类型之一。 字符型数据(Character)是由汉字和ASCII字符集中 可打印字符(英文字符、数字字符、空格及其他专用字符 )组成,长度范围是 0~ 254个字符。
2. 数值型数据通常分为以下四种类型: (1)数值型 数值型数据(Numeric)是由数字(0~ 9)、小数点 和正负号组成。最大长度为 20位(包括+、-和小数点)。 (2)浮点型 浮点型数据(Float)是数值型数据的一种,与数值型数 据完全等价。浮点型数据只是在存储形式上采取浮点格式。 (3)双精度型数据(dou. Ble)是更高精度的数值型数据。它 只用于数据表中的字段类型的定义,并采用固定长度浮点 格式存储。 (4)整型 整型数据(Integer)是不包含小数点部分的数值型数 据。它只用于数据表中的字段类型的定义。整型数据以二 进制形式存储。
3. 货币型数据(currenc. Y)用 于表示货币型的量。 4. 日期型数据(Date)是用于表示日期的数据,用默认 格式{mm/dd/yyyy}来表示。其中mm代表月,dd代表日, yyyy代表年,长度固定为 8位。 5. 日期时间型数据(date Time)是描述日期和时间的 数据。 其默认格式为{mm/dd/yyyy hh: mm: ss}。 其中yyyy代表年, 前两个mm代表月,dd代表日,hh代 表小时, 后两个mm代表分钟,ss代表秒,长度固定为 8位。
6. 逻辑型数据(Logic)是描述客观事物真假的数据, 用于表示逻辑判断结果。 逻辑型数据只有真(. T. )和假(. F. )两种值,长度 固定为 1位。 7. 备注型数据(Memo)用于存放较长的字符型数据类 型。可以把它看成是字符型数据的特殊形式。 备注型数据没有数据长度限制,仅受限于现有的磁盘 空间。它只用于数据表中的字段类型的定义,其字段长度 固定为 10位,而实际数据被存放在与数据表文件同名的备 注文件中,长度根据数据的内容而定。
8. 通用型数据(General)是用于存储OLE对象的数据。通 用型数据中的OLE对象可以是电子表格、文档、图片等。它 只用于数据表中的字段类型的定义。 OLE对象的实际内容、类型和数据量则取决于连接或嵌 入OLE对象的操作方式。如果采用连接OLE对象方式,则数 据表中只包含对OLE对象的引用说明,以及对创建该OLE对 象的应用程序的引用说明;如果采用嵌入OLE对象方式,则 数据表中除包含对创建该OLE对象的应用程序的引用说明, 还包含OLE对象中的实际数据。 通用型数据长度固定为 4位,实际数据长度仅受限于现 有的磁盘空间。
数据存储 在Visual Fox. Pro系统环境下,数据输入、输出是通 过数据的存储设备完成的。通常我们都是将数据存入到 常量、变量、数组中,而在Visual Fox. Pro系统环境下, 数据还可以存入到字段、记录和对象中。我们把这些供 数据存储的常量、变量、数组、字段、记录和对象称为 数据存储容器。 1. 常量 常量是一个命名的数据项,是在命令或程序中直接 引用的实际值,其特征是在所有的操作中其值不变。常 量有以下六种。 (1)数值型常量(浮点型常量:是数值型常量的浮 点格式) 由数字(0~ 9)、小数点和正负号组成。例如12、 3. 45、-1. 678、2 E-5、3. 4 E 3等。
(2) 货币型常量以符号"$"开头,小数部分若超过4位,则 四舍五入取 4位小数。例如,$518, $22. 18等。 (3)字符型常量 由汉字和ASCII字符集中可打印字符组成的字符串,使 用时必须用定界符括起来。例如,"计算机", '123', [数据 ], ['IBM'"PC"]。 注意:不包含任何字符的字符串("")叫空串,它与 包含空格的字符串(" ")不同。 (4)逻辑型常量 由表示逻辑判断结果“真”或“假”符号组成。逻辑 真的常量表示形式有:. T. 、. t. 、. Y. 和. y. ;逻辑假 的常量表示形式有:. F. 、. f. 、. N. 和. n. ,但系统将 一律接收为. T. 或. F. 。前后两个句点作为逻辑型常量的定 界符是必不可少的,否则会被误认为变量名。逻辑型数据 只占用一个字节。
(5)日期常量 用于表示日期,日期型常量的格式有两种: 1)传统的日期格式 系统默认的日期型数据为美国日期格式(mm/dd/yy, 月/ 日/年),传统日期格式中的月、日各为 2位数字,而年份可 以是 2位数字,也可以是 4位数字。 这种格式的日期型常量要受到命令语句SET DATE 和 SET CENTURY 设置的影响,也就是说,在不同的设置状态 下,计算机会对同一个日期型常量做出不同的解释。 2)严格的日期格式 {^yyyy-mm-dd},用这种格式书写的日期常量能表达一 个确切的日期,它不受SET DATE等语句设置的影响。 (6)时间日期型常量 用于表示时间日期,其规定格式以{^yyyy/mm/dd hh: mm: ss}表 示 , 如 {^2002 -08 -2, 11: 30 P}, {^2001 -101, 3}。
常量可以在Visual Fox. Pro的命令窗口中通过以下命令 创建或释放: #DEFINE 常量名 常量值 &&常量的创建 #UNDEF 常量名 &&常量的释放 常量名是指以字母或下划线开始,后面可以跟任意个 字母或数字的字符串。如X 1、CONST_1等(注意:在 Visual Fox. Pro的常量名中字母的大小写具有同样含义)。 常量值是指常量名所代表的数值。 例如:#DEFINE PI 3. 14159 一但通过"#DEFINE 常量名 常量值"命令定义了一个常 量名后,则在以后的应用中可以用此常量名代表常量出现, 但不能对符号常量重新赋值,直到遇见"#UNDEF 常量名" 命令释放定义或程序结束为止。
2. 变量 在命令操作或程序执行过程中,其值可以改变的量 称为变量。Visual Fox. Pro的变量分为字段变量和内存变 量两大类。由于表中的各条记录对同一个字段名可能取 值不同。因此,表中的字段名就是变量,称为字段变量。 内存变量是内存中的一个存储区域,变量值就是存放在 这个存储区域里的数据,变量的类型取决于变量值的类 型。在Visual Fox. Pro中,变量的类型可以改变,也就是 说,可以把不同类型的数据赋给同一个变量。 (1)内存变量又分为用户定义的内存变量(通常简称内 存变量)和系统内存变量(通常简称系统变量), 此外, 还可以使用数组,它是按一定顺序排列的内存变量。 内存变量与字段变量不同,它独立于数据库文件而 存在,用来保存在命令或程序执行中临时用到的输入、 输出或中间数据,由用户根据需要定义或删除。
每一个变量都有一个名字,称为变量名,可以通过变 量名访问变量。内存变量命名规则有3条:. 以字母、汉字或下划线开头;. 由字母、汉字、下划线或数字组成;. 长度不超过128个字符。 例如,X 1、姓名、XM、Name、name_23 、_my 2002等都 是合法的内存变量名。 内存变量的数据类型包括字符型(C)、数值型(N)、货 币型(Y)、逻辑型(L)、日期型(D)、日期时间型(T)和S(屏 幕型)7种,其类型与所赋值的类型一致。 ① 简单内存变量是内存中的临时单元,当退出Visual Fox. Pro系 统后,内存变量也会与系统一起消失,除非使用内存变量 文件来保存内存变量值。在Visual Fox. Pro中,简单内存变 量的赋值和输出,可以使用STORE、"="或"?"命令进行。
② 数组 数组是一组有序内存变量的集合。或者说,数组是由 同一个名字组织起来的简单内存变量的集合,其中每一个 内存变量都是这个数组的一个元素,它是由一个以行和列 形式表示的数组元素的矩阵。 所谓的数组元素是用一个变量名命名的一个集合体, 而且每一个数组元素在内存中独占一个内存单元。为了区 分不同的数组元素,每一个数组元素都是通过数组名和下 标来访问的。与简单内存变量不同,数组在使用之前一般 要用DIMENSION或DECLARE命令创建,规定数组是一维 数组还是二维数组,数组名和数组大小。数组大小由下标 值的上、下限决定,下限规定为 1。创建数组的命令格式为: X(1)、X(2)、X(3) DIMENSION | DECLARE <数组名>(<下标上限 1>[, <下 Y(1, 1) 、Y(1, 2)、Y(1, 3)、 标上限 2>])[, ……] Y(2, 1)、 Y(2, 2)、Y(2, 3) 数组创建后,系统自动给每个数组元素赋以逻辑假. F. 。 例如:DIMENSION X(3), Y(2, 3)命令定义了一个一维数组X 与二维数组Y,它们分别有3个元素与6个元素。
在使用数组和数组元素时,应注意如下问题: · 在一切使用简单内存变量的地方,均可以使用数组元素。 · 在赋值和输入语句中使用数组名时,表示将同一个值同 时赋给该数组的全部数组元素。 · 在同一个运行环境下,数组名不能与简单变量名同名。 · 在赋值语句中的表达式位置不能出现数组名。 · 可以用一维数组的形式访问二维数组。 ③ 系统变量是Visual Fox. Pro提供的内存变量,系统变量 名都以下划线开头,用于控制鼠标器、打印机等外部设备 和屏幕输出格式,或者处理有关计算器、日历、剪贴板等 方面的信息。例如: ACTIVATE WINDOW CALCULATOR _CALCVALUE=56. 8 _CLIPTEXT="面向 21世纪教材" 该命令是将字符串"面向 21世纪教材"存人剪贴板中。
(2)字段变量 Visual Fox. Pro中的字段变量的变量名就是表的字段名; 字段变量的数据类型,就是表中该字段定义时所规定的数 据类型;字段变量的宽度,就是定义表结构时对该字段宽 度的定义,有关字段的定义以及有关表结构的建立将在以 后介绍 。 字段变量的操作方法与内存变量的操作方达基本相同、 只是字段变量的值来源于表,而内存变量的值则是通过赋 值操作赋给的。 (3)变量的优先级 在Visual Fox. Pro的变量层次中,当内存变量名与字段 变量名同名时,系统优先引用字段变量。如果要引用内在 变量,可以在内存变量名前加前缀"M. " (或M->)以示区别。
(4)内存变量及其操作 Visual Fox. Pro的内存变量与其它高级语言中的变量有 所不同,它不需事先说明类型,数据类型是根据当前所存 储的数据的类型决定的。因此,必须首先给所使用的内存 变量赋一个值,这个变量才可以使用,否则系统返回提示 "变量未找到!" ①内存变量的赋值 【格式 1】 <内存变量名>=<表达式> 【功能】 将<表达式>的值赋予由<内存变量名>所指定的 内存变量 【格式 2】 STORE <表达式> TO <内存变量名表> 【功能】 将<表达式>的值赋予由<内存变量名表>所指定 的一个或若干个内存变量
【注意】. 等号一次只能给一个内存变量赋值。STORE命令可以 同时给若干个变量赋予相同的值,各内存变量名之间必须 用逗号分开。. 在Visual Fox. Pro中,一个变量在使用之前并不需要特 别的声明或定义。当用STORE命令给变量赋值时,如果该 变量并不存在,那么系统会自动建立它。. 可以通过对内存变量重新赋值来改变其内容和类型。 例:name="张三" name=3 STORE name +1 TO x, y, z ②内存变量的输出 【格式】? |? ? <表达式表> 【功能】 在当前行的光标所在处的下一行或当前行显示< 表达式表>各表达式的值。
③内存变量的显示 【格式】 LIST | DISPLAY MEMORY [LIKE <通配符>][TO PRINTER|TO FILE <文件名>] 【功能】. 显示或打印输出内存变量 作区的信息,包括己定义 的内存变量名称、类型、内容、个数、已占内存总字节数, 及剩余的可用内存变量空间。其中LIKE短语指出包括或不 包括与通配符相匹配的内存变量。在通配符中可以使用"? " 和"*"。这里"? "代表任意一个,"*"表示任意多个,使用方 法同MS-DOS中的用法一致。. LIST为连续滚动显示;DISPLAY为分屏显示。. 选用TO PRINT短语时,将结果在显示的同时送往打 印机输出。TO FILE <文件名>将结果存入扩展名为. TXT的 文件中。
④内存变量的保存与恢复 【格式】SAVE TO <文件名> ALL[LIKE|EXCEPT<通配符 >] 【功能】 将选定的内存变量存储到<文件名>所指定的内存 变量文件中,系统默认的文件扩展名为. MEM 【格式】RESTORE FROM <文件名> [ADDITIVE] 【功能】 将<文件名>所指定的内存变量文件中保存的内存 变量恢复到内存。选用ADDITIVE短语则保留现行内存变 量,再把文件中的变量添加进来。否则,覆盖原有的内存 变量。 ⑤内存变量的清除 【格式 1】 CLEAR MEMORY 【功能】 清除当前内存中全部已定义的内存变量。
【格式 2】 CLEAR ALL 【功能】 为恢复系统初态命令。释放所有内存变量,关闭 所有各类文件,包括数据库文件、索引文件、过程文件, 并选择 1号 作区。 【格式 3】 RELEASE <内存变量名表> 【功能】 清除指定的内存变量。 【格式 1】 RELEASE ALL [LIKE <通配符>| EXCEPT <通 配符>] 【功能】 选用ALL LIKE短语则只清除与通配符相匹配的 内存变量。选用ALL EXCEPT短语则清除除了与通配符相 匹配之外的内存变量。
【例】 X=1 Y="IBM-PC" Z=$760. 8 X 1=. T. X 2={^2002 -08 -06} ? X, X 1, Y, Z LIST ALL LIKE X? SAVE TO MYMEM RELEASE ALL LIKE X? DISPLAY MEMO RESTORE FROM MYMEM
表达式 表达式是由数据、数据存储容器和运算符组成的运算 式。在用Visual Fox. Pro编写的程序里,表达式几乎无处 不在。大多数命令中都包含表达式语法成分,表达式使这 些命令的功能更加灵活、强大。表达式的形式包括: (1)单一的运算对象(如常量、变量或函数); (2)由运算符将运算对象连接起来形成的式子。 无论是简单的还是复杂的合法表达式,按照规定的运 算规则均能计算出一个结果,即表达式的值。根据表达式 值的类型,表达式可分为数值表达式、字符表达式、日期 时间表达式、关系表达式和逻辑表达式 5种。 1. 算术表达式可由算术运算符和数值型常量、数值型内 存变量、数值型数组、数值类型的字段、返回数值型数据 的函数组成。算术表达式的运算结果是数值型常数。算术 运算符及其运算示例如下:
算术运算符优先级及示例一览表 优先级 1 2 3 4 5 结果 运算符 说明 () 括号 示例 2*(1+2 ) 6 **或^ *、/ % +、- 2**3 3*6/2 8%3 3+8 -2 8 9 2 9 乘方 乘、除 求余 加、减 2. 字符表达式可由字符运算符和字符型常量、字符型内 存变量、字符型数组、字符型类型的字段和返回字符型数 据的函数组成。字符表达式运算的结果是字符常数或逻辑 型常数。字符运算符及示例如下:
字符运算符及示例一览表 运算符 + - 说 明 示 例 结果 前后两个字符串首尾 "信息 "+"科学" "信息 科学" 连接形成一个新的字 符串 将前面字符串的尾部 "信息 "-"科学" "信息科学 " 空格移到后面的字符 串尾部,再连接 3. 时间日期表达式可由日期运算符和时间日期型常量、 时间日期型内存变量和数组、返回时间日期型数据的函数 组成。时间日期表达式运算的结果是时间日期型常数。
时间日期运算符及示例一览表 运算符 说明 + - 示 例 {^1998/03/05}+2 相加 {^1998/03/05 9: 15: 20}+2 结果 {03/07/98} {03/05/98 09: 15: 22 AM} {^1998/03/05}-{^2002/08/04} 相减 {^1998/03/05 09: 17}{^2002/08/04 08: 19: 20} -1613 -139359740 4. 关系表达式可由关系运算符和字符表达式、算术表达 式、时间日期表达式组成。其运算结果为逻辑型常量。关 系运算是运算符两边同类型元素的比较,关系成立结果为 (T);反之,结果为(F)。
关系运算符及示例一览表 运算符 说明 示例 3*2<10, "信息"<"科学" 结果 < 小于 > = 大于 等于 3>2 {^2002 -08 -01}={^200208 -04} . T. . F. <>或#或 != <= 不等于 4<>6 . T. 小于或等于 大于或等于 字符串精确比较 子串包含测试 3*2<=6 15>=8+2 "AB " =="AB" "is"$"This" . T. . F. . T. >= == $ . T. . F.
当比较两个字符串时,系统对两个字符串自左向右逐个 进行较,一旦发现两个对应字符不同,就根据这两个字符的 排序序列决定这两个字符串的大小。运算符==和$仅适用于字 符型数据,其他运算符适用于任何类型的数据,但前后两个 运算对象的数据类型要一致。具体情况是: 数值型和货币型数据比较--按数值的大小比较,包括负号。 日期或日期时间型数据比较--越早的越小,反之越大。 逻辑型数据比较--. T. 大于. F. 子串包含测试--如果前者是后者的一个子字符串,结果为 逻辑真(. T. ),否则为逻辑假(. F. )。 在用双等号运算符==比较两个字符串时,只有当两个字 符串完全相同(包括空格以及位置)时,运算结果才会是逻辑真. T. ,否则为逻辑假. F. 。在用单等号运算符=比较两个字符串时, 运算结果与SET EXACT ON|OFF(默认)设置有关。当处于 ON状态时,先在较短字符串的尾部加上若干个空格,使两个 字符串的长度相等,然后再进行比较。
5. 逻辑表达式由逻辑运算符将逻辑型数据连接起来而形 成,其运算结果仍然是逻辑型数据。逻辑运算符的优先级 与运算规则如下表所示(也可以省略两端的点,写成NOT、 AND、OR): 优先级 1 运算符 说明 () 括号 2 . NOT. 逻辑非 3 . AND. 逻辑与 4 . OR. 逻辑或 例如,查询 资高于1800的讲师或副教授的条件可写成: 资>1800. AND. (职称=“讲师”. OR. 职称=“副教授")
运算符优先级 前面介绍了各种表达式以及它们所使用的运算符。在 每一类运算符中,各个运算符有一定的运算优先级。而不 同的运算符也可能出现在同一个表达式中,这时它们的运 算优先级顺序为:算术运算符、字符串运算符和日期时间 运算符→关系运算符→逻辑运算符。 圆括号作为运算符可以嵌套,也可以改变其他运算符 的运算次序。圆括号中的内容在与其他运算对象进行种类 运算前,其结果首先要被计算出来。有时候,在表达式的 适当地方插入圆括号,并不是为了改变其他运算符的运算 次序,而是为了提高代码地可读性。
函数 函数是用程序来实现的一种数据运算或转换。每一个 函数都有选定的数据运算或转换功能,它往往需要若干个 自变量,即运算对象,但只能有一个结果,称为函数值或 返回值。 函数的一般形式为:函数名([参数 1][,参数 2]…) 函数调用可以出现在表达式里,表达式将函数的返回 值作为自己运算的对象。函数调用也可以作为一条命令使 用,但此时系统忽略函数的返回值。若函数在调用时没有 参数,则称该函数称为无参函数。如LEN(X)、PI()等。 一般将函数分为数值函数、字符处理函数、日期类函 数、数据类型转换函数、测试函数 5类,下面分类介绍常用 函数的格式、功能以及典型函数的用法。 数值函数是指函数值为数值的一类函数,它们的自变 量和返回值往往都是数值型数据。常用的数值函数有:
名 称 格 式 取绝对值函数 ABS(<数值表达式>) SIGN(<数值表达式>) 求符号函数 类型 功 能 N 求数值表达式的绝对值 N 求数值表达式的符号 取整函数 INT(<数值表达式>) N 求数值表达式值的整数部分 平方根函数 SQRT(<数值表达式>) N 指数函数 EXP(<数值表达式>) N 求数值表达式的平方根 求以e为底数值为指数的值 对数函数 LOG(<数值表达式>) N 求最大值函数 MAX(<数值表达式 1>, …, <数值表达式n>) N 求数值表达式的自然对数 求N数中的最大值 求最小值函数 MIN(<数值表达式 1> , …, , <数值表达式n>) N 求N数中的最小值 舍入函数 ROUND(<数值表达式 1>, <数值表达式 2>) N 取模函数 MOD(<数值表达式>, < 数值表达式>) N 对数值 1进行四舍五入, 数值 2 指定保留的小数位数 求数值表达式 1除以数值表 达式 2的余数 圆周率函数 PI() N 随机函数 RAND() N 返回圆周率值 返回(0, 1)之间的数
字符函数是指自变量一般是字符型数据的函数,通常一个汉 字按2个半角西文字符处理。常用字符函数有: 名 称 类型 宏替换 格 式 &<字符型内存变量>[. ] C 替换字符型内存变量的内容 删左空格 LTRIM(<C型表达式>) C 删除字符串左边的所有空格 删右空格 RTRIM(<C型表达式>) C 删除字符串右边的所有空格 删左右空格 ALLTRIM(<C型表达式 >) C AT(<字符型表达式 1>, < 字符型表达式 2>) N 删除字符串左边和右边的所 有空格 搜寻字符串 1在字符串 2中出 现的位置 C 左截子串 LEFT(<字符型表达式>, < 数值表达式>) 从字符串首字符开始向右截 取字符, 截取字符个数由数 值表达式确定 C 右截子串 RIGHT(<字符型表达式 >, <数值表达式>) 从字符串末字符开始向左截 取字符, 截取字符个数由数 值表达式确定 子串搜索 功 能
名 称 子串选取 格 式 SUBSTR(<字符型表达 式>, <起始位置>[, <长度 >]) 类型 功 能 C 在字符型表达式表示的字 符串中, 从左到右, 自起始位 置起选取指定长度子串 生成空格 SPACE(<数值表达式>) C 字符重复 REPLICATE(<C型表达 式>, <N型表达式>) C 字符串长度 LEN(<字符型表达式>) STUFF (<字符型表达式 子串替换 1>, <起始位置>, <长度 >, <字符型表达式 2>) N C 产生长度由数值表达式确 定的一串空格 重复字符型表达式内容, 重 复次数由数值表达式确定 求字符串的长度 用<字符型表达式 2>的值替 换在<字符型表达式 1>表示 的字符串中从左到右自<起 始位置>起选取指定<长度> 的子串
常用日期和时间函数 名 称 格 式 类型 功 能 系统时间 TIME() 系统日期 DATE() C 返回当前的系统时间 D 返回当前的系统日期 日期时间 DATETIME() YEAR(<D或T型表达式>) 年函数 T 返回当前的系统日期和时间 N 从表达式中求出年份数值 月函数 MONTH(<D或T型表达式>) N 从表达式中求出月份数值 文字月 CMONTH(<D或T型表达式 >) C 从表达式中求出月份名 日函数 DAY(<D或T型表达式>) N 从表达式中求出日份数值 N 从表达式中求出星期数值 C 从表达式中求出星期名 星期函数 DOW(<D或T型表达式>) 文字星期 CDOW(<D或T型表达式>) 时函数 HOUR(< T型表达式>) N 从表达式中求出小时数值 分函数 MINUTE(< T型表达式>) N 从表达式中求出分数值 秒函数 SEC(< T型表达式>) N 从表达式中求出秒数值
数据类型转换函数的功能是将某一种类型的数据转换成 另一种类型的数据。常用数据类型转换函数有: 名 称 与 格 式 ASC(<字符型表达式>) 类型 N 功 能 将字符串首字符转换成对应ASCII码值 CHR(<数值表达式>) C 将ASCII码值转换成对应字符 STR(<数值表达式>[, <长 度>][, <小数值>]) C 将数值型数据转换成字符型数据, 长度 和小数值分别指出结果字符串的长度 和小数位数 VAL(<字符型表达式>) N 将字符型数据转换成数值型数据 CTOD(<字符型表达式>) D 将字符型数据转换成日期型数据 DTOC(<日期或日期时间 型表达式>[, 1]) C 将日期或日期时间型数据转换成字符 型数据,若选参数 1, 则输出格式为年月 日:yyyymmdd
测试函数 在数据处理过程中,有时用户需要了解操作对象的状 态。例如,要使用的文件是否存在、数据库的当前记录号、 是否到达了文件尾、检索是否成功、某 作区中记录指针 所指的当前记录是否有删除标记、数据类型等。尤其是在 运行应用程序时,常常需要根据测试结果来决定下一步或 程序走向。常用测试函数的有: 名称 数 据 类 型 测 试 格 式 VARTYPE(<表达 式>) 按键测试 INKEY([<表达式 类型 C字符或备注型 G通用型 N数值型 D日期型 Y货币型 T日期时间型 L逻辑型XNull值 O对象型 U未定义 N数值型 功 能 返回<表达式>的数据 类型 返回按键的ASC码值
名 称 格 式 类型 功 能 "空"值测试 EMPTY(<表达式>) L 测试<表达式为>的值是否为" 空"值 文件测试 FILE(<文件名>) L 判定指定文件是否存在 表尾测试 EOF([<区号>|别名 ]) L 判断记录指针是否指向文件尾 表首测试 BOF([<区号>|别名 ]) L 判断记录指针是否指向文件头 记录号测试 RECNO([<区号>| 别名]) N 返回记录指针所指向记录的记 录号 记录个数测试 RECCOUNT([<区 号>|别名]) N 返回数据库文件的记录个数 记录删除测试 DELETED([<别名 >|<区号>]) L 测试记录指针所指向的记录是 否有删除标记 查找测试 FOUND() L 测试满足条件的记录是否找到 UPPER(字符表达 C 小写转大写
显示信息函数 格式:MESSAGEBOX(提示文本[, 对话框类型[, 对话框标题]]) 功能:显示用户定义的对话框,对话框类型一般为:按钮数 值+图标形状值+默认值构成。对话框的类型及含义见下表。 值 图标 形状 默认 返回 含义 确定 确定 取消 终止 重试 忽略 是 否 取消 值 16 32 48 64 含义 ? ! i 值 按钮数 0 0 256 512 含义 默认 第 1个 值 1 含义 确定 1 2 3 4 是 否 5 重试 取消 默认 默认 第 2个 第 3个 2 取消 3 终止 4 重试 5 忽略 6 是 7 否
【例】定制一个要求用户确认是否退出的对话框 ? MESSAGEBOX(“确认退出吗?”, 4+32+0, “提示信息 ”) 显示结果: IIF 函数 格式:IIF(<条件>, <表达式 1>, <表达式 2>) 功能:当条件表达式为. T. 时返回<表达式 1>的值,否则返 回<表达式 2>的值
思考题 1. Visual Fox. Pro 6. 0有几种数据类型? 2. Visual Fox. Pro 6. 0有几种数据存储容器? 3. 内存变量、数组变量、字段变量有何区别? 4. Visual Fox. Pro 6. 0有几种类型的函数? 5. Visual Fox. Pro 6. 0有多少种类型的表达式, 它们的计 算规则是什么?
实验题目 1. 设计并输出多个各种类型的常量,并输入给内存 变量或数组。 2. 利用内存变量的输入/输出命令计算各种表达式 的值。
f633cab1c3a5a125a28344cec5484949.ppt