1、第二章 VFP语言元素,了解Visual FoxPro的工作方式 熟悉Visual FoxPro的基本命令集成环境、菜单项、命令格式 了解Visual FoxPro的数据类型与文件类型、常量、变量、表达式及主要函数,学习目标,VFP的启动与退出,1、启动 开始程序Microsoft Visual FoxPro 8.0 双击快捷图标 启动VFP文件,退出,(1)单击VFP窗口标题栏右边的关闭按钮。 (2)在VFP“文件”下拉菜单中选择“退 出”。 (3)按快捷键ALT+F4. (4)在VFP的命令窗口中输入命令QUIT。,当正常启动VFP系统后,首先进入系统主界面,如图2l所示。,界面简介,1、
2、主菜单栏 P16系统菜单、动态菜单 p19 2、工具栏(显示、移动、打开、新建)只能改变形状不能改变大小。 3、主窗口 4、命令窗口,操作方式,VFP提供两种操作方式: 1交互方式 又可分为可视化操作和命令方式。 (1)菜单操作方式 系统将若干命令做成菜单接口,用户可以通过菜单的选择来操作。,(2)工具操作方式 P19 在VFP系统中提供了许多工具,分为设计器、向导、生成器等3种交互式的可视化开发工具。,(3)命令操作方式 命令操作是指在命令窗口中输入命令就可以进行操作。 回车键表示开始执行命令,2程序操作方式 程序操作是指将多条命令编写成一个程序,通过运行这个程序达到操作数据库的目的。,命令
3、语法规则,一般的命令格式 范围 FOR WHILE FIELDS Visual FoxPro 中常用短语介绍: 命令动词:一般是英文,表示要执行的功能,当一个动词的字母超过4个时,从第5个字母开始都可以省略。从程序可读性考虑,不提倡省略命令动词的写法。, FIELDS子句用来说明数据库的字段名称,一般后面跟一个字段名列表(简称字段表,它由一个或多个由逗号隔开的字段名组成)。如果不选择这个子句,则表示选择所有的字段。,读者表,如:显示读者表中姓名,性别和出生日期的情况List fields 姓名,性别,出生日期, 范围子句用来规定对表进行操作的记录的范围。通常有以下四种范围: ALL: 对表中所
4、有记录进行操作。 NEXT N: 只对包括当前记录在内的连续N条 记录进行操作。 RECORD N: 只对第N条记录进行操作。 REST: 从当前记录开始(含当前记录)到表尾的所有记录。,LIST ALL GO 2LIST NEXT 3 GO 4LIST RECORD 7 8LIST REST,FOR子句和WHILE子句,FOR的作用是:从首记录开始对满足条件的记录进行操作。不管记录是否呈现连续。 如:显示学生表中所有女同学的记录LIST FOR 性别=“女”,WHILE的作用是:从当前记录开始查找满足条件的记录,一旦遇到条件不满足的记录,就停止查找并结束该命令的执行,不管其后是否还有满足条件
5、的记录。,GO 1 LIST while 性别=“男”,若同时使用FOR子句和WHILE子句,则WHILE有较高的优先级。,命令书写规则,书写VFP命令时应遵循如下规则: 任何命令必须以命令动词开头,后面的多个子句通常与顺序无关,但必须符合命令格式的规定; 如: GO 2LIST NEXT 5 FOR 性别=“女”,用空格分隔各子句; 一条命令的最大长度为254个字符,一行写不下时,用分行符“;”(英文分号)在行尾分行,并在下行继续书写;,命令动词一般不要缩写,以保持程序的可读性; 命令中的字符大小写可以混合使用,不区分大小写。为了美观,可以将命令关键字大写,而其它内容小写;, VFP中没有规
6、定的系统保留字,但用户在选择变量名、字段名和文件名时应尽可能不使用系统中的命令动词和其它系统已经使用过的名字,以免程序在运行时发生混乱。,命令符号的约定, ( ) | ,数据和数据类型,一、数据的分类 数据是计算机程序处理的对象,也是运算产生的结果。 按数据的类型分类有:数值型数据、字符型数据、逻辑型数据等。 按数据的处理层次分类有:常量、变量、函数和表达式。,字符型(Character),用字母C表示。 由一切可打印的字符组成,包括中文字符、英文字符、数字字符和其他ASCII字符。 其长度0-254个字符,每个字符占1个字节。,数值型(Numeric),用字母N表示。 用来表示数量并可以进行
7、算术运算的数据类型。 由阿拉伯数字、正负号、小数点组成,长度是120位数字,每个数字占8个字节。,日期型(Date),用字母D表示,用来表示日期的数据类型。日期的默认 格式为: mm/dd/yy 其中MM表示月,DD表示日,YY表示年。 日期型数据的长度固定为8位。,日期时间型(Date Time),用字母T表示,是用来表示日期和时间。 默认格式为:mm/dd/yy hh:mm:ss其中mm,dd,yy的意义与日期型相同,hh,mm,ss分别表示时、分、秒。 长度也固定为8位。,5逻辑型(Logic),用字母L表示,用来描述客观事物真假或是非判断的数据类型。 只有两个取值:真(.t.或.T.)
8、和假(.f.或.F.)。 逻辑型数据长度固定为1位。,货币型(Currency),用字母Y表示, 为存储货币值而使用的一种数据类型,它默认保留4位小数, 占据8字节的存储空间。,备注型(Memo),用字母M表示,用来存放较多字符的数据类型。 只用于表中字段类型的定义。 字段长度固定为4个字节。 实际数据存放在与表文件同名的备注文件(.fpt)中,其长度依实际需要而定。,通用型(General),用字母G表示,是用来存储OLE对象的数据类型。 可以是电子表格、文挡、图形、声音等。 跟备注型数据一样,它只用于表中字段类型的定义。 通用型数据字段长度固定为4位。,双精度型(Double),用于取代数
9、值型,以便能提供更高的数值精度。 双精度型只能用于数据表中字段的定义,它采用固定存储长度的浮点数形式。 与数值型不同,双精度型数据的小数点的位置是由输入的数据值来决定的。 每个双精度型数据占8个字节。,浮点型(Float),只能用于数据表中字段的定义,包含此类型是为了提供兼容性, 浮点型在功能上与数值型等价。,整型(Integer),用于存储无小数部分的数值,只能用于数据表中字段的定义。 在数据表中,整型字段占用4个字节。 整型以二进制形式存储。,文件类型,P32,常量,常量是在程序运行过程中其值保持不变的量。 将常量分为6种类型:数值型常量、货币型常量、 字符型常量、逻辑型常量、日期型常量、
10、日期时间型常量,字符型常量,由任意ASCII字符和汉字字符组成的字符型数据。 字符型常量又称为字符串。 VFP要求将字符串中所有字符,用一对双引号“”或单引号“”或方括号“”作为定界符对括起来。如:“ I am a student.”,中华人民共和国,Visual FoxPro 6.0系统等 注意:“我们学习Visual FoxPro 6.0系统”,日期型常量,1)日期型常量是表示日期值的数据,其默认格式是: mm/dd/yyyy 2)日期型常量的定界符是一对大括号; 3)各部分的分隔符可以是斜杠、连字符、句点和空格,其中斜杠是系统默认的分隔符。 如:12/29/2010,4)影响日期格式的设
11、置命令SET MARK TO 日期分隔符 命令功能:设置显示日期型数据时使用的分隔符。 如: SET MARK TO “-”2010/03/08 显示 03-08-2010 SET MARK TO2010/03/08 显示 03/08/2010,SET DATE TO MDY | DMY | YMD 命令功能:设置日期型数据的显示输出格式。系统默认为AMERICAN美国格式。 如: SET DATE TO MDY2010/03/08 显示:03/08/2010SET DATE TO DMY2010/03/08 显示:08/03/2010,SET CENTURY ON | OFF 世纪值 命令功
12、能:设置显示日期时是否显示世纪。ON:日期数据显示10位,其中年份4位,即日 期值输出时显示年份值;OFF:(默认值),日期数据显示8位,年份2 位,即日期值输出时不显示年份值; SET CENTURY ON 2010/03/08 显示 03/08/2010 SET CENTURY OFF 2010/03/08 显示 03/08/10,Visual FoxPro系统中增加了一种表示日期和时间值的日期时间型常量, 其默认格式是:mm/dd/yyyy , hh:mm:ssa|p其中a和p分别表示AM(上午)和PM(下午)。,日期时间型常量,逻辑型常量就是表示逻辑判断结果“真”或“假”的逻辑值。 逻
13、辑常量只有真和假两种,分别用(.t.或.y.)和(.f.或.n.)表示真和假。 一般应在表示逻辑常量的字母左右加注圆点符“.”以示区别。 逻辑型常量在内存中占用一个字节。,逻辑型常量,也称常数,用来表示一个数量的大小,由数字0-9、小数点和正负符号组成。 例如,12.3,-67,3.14等。 也可以使用科学计数法形式表示, 例如:6.789*105可表示为6.789E+5。,数值型常量,货币型常量,用来表示货币值,书写格式与数值型类似,但要加上一个前置的符号$。 货币型数据在存储和计算时,采用4位小数,如果多于4位,那么系统自动四舍五入。 货币型常量不能用科学计数法表示。,变量,变量是在操作过
14、程中可以改变其取值或数据类型的数据项。 VFP有3种形式的变量: 内存变量存放单个数据的内存单元 数组变量存放多个数据的内存单元组 字段变量存放在数据表中的数据项 确定一个变量,需要确定其三个要素:变量名数据类型变量值,变量名的命名规则,每个变量都有一个名称,叫做变量名,VFP通过相应的变量名来使用变量。,变量名的命名规则是: (1) 以字母、数字及下划线组成,(中文VFP可以使用汉字作变量名。) (2) 以字母或下划线开始,(中文VFP可以汉字开始。) (3) 长度为1128个字符,每个汉字占2个字符。 (4) 不能使用VFP的保留字。,字段变量,1)字段变量即表中的字段名,是一个多值变量;
15、 2)字段变量是定义在表中的变量,随表的存取而存取,因而是永久性变量。 3)字段名就是变量名; 4)变量的数据类型可以是VFP中任意的数据类型,字段值就是变量值。,内存变量,1) 内存变量是在内存中定义的一种单个数据元素的临时性变量,独立于表。 2)内存变量的类型数值型、字符型、逻辑型、日期型、日期时间型;,3)内存变量的类型与所赋值的常量的类型相同。 如: A=89 B=“122” C=.T. D=2010/03/15,内存变量赋值既可定义一个新的内存变量,也可改变已有内存变量的值或数据类型。 1、命令格式一:STORE TO 命令功能:计算的值并赋值给多个内存变量。如: STORE 2*3
16、 TO A,B?A?B,内存变量的赋值,2、命令格式二:= 命令功能:计算的值并将值赋给指定对内存变量。 如:A=34B=89?A+B 思考:两种格式区别?,可以用两个命令在屏幕上显示输出内存变量的值。 命令格式:?| ? AT 命令功能:计算表达式表中各表达式的值,并在屏幕上指定的位置显示表达式的值。 如:A=89B=45? A,B,表达式的显示输出,?: 先回车换行,再显示表达式的值; ?:在屏幕当前位置,计算并直接显示表达式的值; :多个用逗号两两分隔的表达式,各表 达式的值输出时,以空格分隔; AT 子句:指定表达式值从指定列开始显示输出。,命令格式:DISPLAY MEMORY |
17、LIST MEMORY ;LIKE ; TO PRINTER | TO FILE 命令功能:显示指定变量的相关信息。,内存变量的显示,说明: (1) LIKE选项子句可以使用通配符来代替变量名的一部分,以显示与通配符相符合的变量。 (2)有两种通配符:“?”代表任意一个字符,“*”代表任意多个字符。,A1=89A2=“吉首大学”A3=.T.A11=2010/03/15B1=89B11=.F. LIST MEMO LIKE A* LIST MEMO LIKE ?1*,(3) LIST 和DISPLAY的区别是:LIST MEMORY是连续显示内存变量, DISPLAY MEMORY是分屏显示内存
18、变量。,(4) TO FILE 子句功能是将内存变量有关信息送至一个文本文件。TO PRINTER 则是将内存变量有关信息送至打印机打印。,例: 定义并显示内存变量:STORE “dggaf“ TO a1a2=2004-04-25c=.t.LIST MEMO LIKE a?,Visual FoxPro提供相应命令,可用文件形式将某些内存变量保存起来,形成内存变量文件,以便重复使用,扩展名是.MEM。 命令格式:SAVE TO ; ALL LIKE | ALL EXCEPT ,内存变量文件的建立,命令功能:将指定变量的信息保存到指定的内存变量文件(*.MEM)中。 ALL LIKE :只保存符合
19、通配符条件的所有变量; ALL EXCEPT :只保存不符合通配符条件的所有变量。,需要使用保存在内存变量文件中的变量时,必须将变量先恢复到内存后,方可使用。 命令格式: RESTORE FROM ; ADDITIVE,内存变量的恢复,命令功能:将指定变量文件(*.MEM)中的变量信息恢复到内存中。 ADDITIVE: 省略此项,清除内存中所有变量后,再恢复文件中变量 的信息; 加选此项,将变量文件中的变量信息追加到内存原有变量信息中后。,内存变量的清除,Visual FoxPro系统对定义内存变量的数量是有限制的,应及时清理,尽量减少内存的占用,定义其他变量。命令格式:1)CLEAR MEM
20、ORY2)RELEASE 3)RELEASE ALLLIKE | EXCEPT ,1)数组变量是结构化的变量,是一组具有相同名称、以下标相互区分的有序内存变量。 2)Visual FoxPro系统中只允许使用一维数组(相当于数列)和二维数组(相当于行列式或矩阵)。 如:A(2,3)B(6),数组变量,数组名,数组下标,3)数组中的每个数据值称为数组元素,每个数组元素在数组中的位置是固定的。 如:A(2,3)的数组元素: A(1,1),A(2,1) A(1,2), A(2,2) A(1,3), A(2,3),一个数组通常都包含多个数据元素。 如:B(6)数组中含有6个数组元素。 数组元素实质上是
21、一个内存变量,也称数组变量。 DIMESION B(6) B(1)=99 B(2)=.T.,数组元素的名称用数组名加下标构成。 如AA(1)表示数组AA的第1个元素, BB(2,3)表示数组BB中第2行第3列的元素; 下标必须用圆括号对括; 一维数组的元素只有一个下标,二维数组的元素有两个以逗号分隔的下标;,数组元素的数据类型决定于最后赋值的数据类型; DIMESION B(6) B(1)=99 B(2)=.T.,不同数组元素的数据类型可以不同; 数组元素与普通内存变量一样操作,可以赋值和引用。 DIMESION B(6) B(1)=99 B(2)=.T. STORE “123” TO B(3
22、),B(4),B(5) ? B(1),B(2),B(3), B(4),B(5),B(6),4)数组的定义 数组必须先定义后使用, 定义数组是向系统申请数组元素在内存中的存储空间。 命令格式:DIMENSION | DECLARE ;(,);,(,) 命令功能:定义指定的各个数组。,5)数组的赋值与引用 P35数组元素的赋值与引用,与普通内存变量的规则相同。,6)说明:数组元素定义后都有初值,初值为逻辑 假值,.F. DIMESION B(6) ? B(1),B(2),B(3), B(4),B(5),B(6),二维数组各元素在内存中按行当顺序存储,可以按一维数组的方式来访问。 A(2,3)的数组
23、元素: A(1,1),A(1,2),A(1,3),A(2,1),A(2,2), A(2,3)A(1) , A(2) , A(3) , A(4), A(5), A(6),系统变量,是系统内部提供的特有的变量,系统变量一般以“_”作为名字开头。,2.4、 Visual FoxPro的运算符与表达式,1)表达式是由常量、变量、函数及其他数据单独 与运算符组成的有意义的运算式子。 表达式分为:算术表达式、字符表达式、日期时间表达式、逻辑表达式、关系表达式。 常量、变量和函数可以作为表达式的特例。,2)运算符是对数据对象进行加工处理的符号,分为:算术(数值)运算符、字符运算符、日期时间运算符、逻辑运算符
24、、关系运算符。,算术表达式,算术表达式又称数值表达式, 其运算对象和运算结果均为数值型数据。,算 术 运 算 符,字符表达式是由字符运算符将字符型数据对象连接起来进行运算的式子。 字符运算的对象是字符型数据, 运算结果是字符常量或逻辑常量。,字符表达式,字符运算符,“+”精确连接,直接连接。 “-”紧凑连接,将字符串1尾部所有空格移到字符串2尾部后再连接。 ?“ABC ”+”123” ABC 123 ?“ABC ”-”123” ABC123空格,“$”包含运算,是比较两个字符串的包含关系, 其作用是比较、判断字符串1 是否是字符串2的子串, 如果串1是串2的子串,运算结果为“真”,否则为“假”
25、。,所谓子串:如果串1中所有字符均包含在串2中、且与串1中排列方式与顺序完全一致,则称串1为串2的子串。 两个连接运算的优先级别相同,但高于$的比较运算。,1)由日期运算符将一个日期型或日期时间型数据与一个数值型数据连接而成的运算式称为日期表达式。 2)日期运算符分为“+”和“-”两种。其作用分别是在日期数据上增加或减少天数,在日期时间数据上增加或减少一个秒数。,日期表达式,3)两个运算的优先级别相同。例如: ? 2004-05-10+10? 2004-05-10-2003-05-10 主屏幕显示:05/20/04 366,关系表达式,由关系运算符连接两个同类数据对象进行关系比较的运算式称为关
26、系表达式。 关系表达式的值为逻辑值, 关系表达式成立则其值为“真”,否则为“假”。,关系运算符,关系运算符的优先级别相同。 关系表达式运算时,就是比较同类两数据对象的“大小”。 数值型和货币型数据根据其值大小进行比 较; 日期或日期时间数据以日期或时间的先后顺序为序; 逻辑型数据比较:.T.F. 字符型数据的比较取决于字符的排序序列。P38,字符串精确比较,两个字符串进行比较的基本原则是从左到右逐个字符进行比较,但因系统相关设置状态不同,比较的结果与预期的不完全相同。,相等比较 (=),当SET EXACT OFF时,只要右边字符串与左边字符串的前面部分内容相匹配,既可以得到.T.; 当SET
27、 EXACT ON时,比较两个字符串到全部结束。,恒同比较(= =),用运算符=进行两串的恒同比较时,不论SET EXACT的设置如何,只有当两串长度相同,字符相同,排列一致时才成立;,大小比较,用运算符“”进行两串比较时,比较到第个不相同字符为止,否则,长度较长的串较“大”;其他比较:除上述运算符之外的其他运算符、=的比较,均可看作是两个运算符以逻辑“或”的关系构成的复合运算;,逻辑表达式,由逻辑运算将逻辑型数据对象连接而成的式子称为逻辑表达式。 逻辑表达式的运算对象与运算结果均为逻辑型数据。 逻辑运算符前后一般要加圆点“.”标记,以示区别。,逻辑运算符,对于各种逻辑运算,其运算规则可由逻辑
28、运算真值表确定,,在一个表达式中,先执行算术运算、字符运算和日期运算, 再执行关系运算, 最后执行逻辑运算。 当然可以用括号来改变其优先级。 括号括起来的应优先运算。,运算符优先级,例: 多种表达式运算示例? 93 AND 53 OR “a“$“ab“ AND .NOT.f.主屏幕显示:.t.? (100%3=1) AND (15-4=0) OR “张“=“张三“主屏幕显示:.f.,2.5 函数,1、Visual FoxPro的函数由函数名与自变量两部分组成。 2、标准函数是Visual FoxPro系统提供的系统函数,其函数名是Visual FoxPro保留字。 3、自定义函数是用户自己定义
29、的函数,函数名用户指定;,4、自变量必须用圆括号对括起来,如有多个自变量,各自变量以逗号分隔;有些函数可省略自变量,或不需自变量,但也必须保留括号;自变量数据类型由函数的定义确定,数据形式可以是常量、变量、函数或表达式等。,一、 数值函数,数值函数用于数值运算,其自变量与函数值都是数值型数据。 1取绝对值函数ABS( )和符号函数SIGN( )【格式】ABS()SIGN()【功能】计算nExp的值,并返回该值的绝对值。SIGN()返回指定数值表达式的符号。如指定数值为负, SIGN()值为-1;指定数值为正, SIGN()值为 1;指定数值为0, SIGN()值为0。,2指数函数EXP( )【
30、格式】EXP()【功能】求以e为底、nExp值为指数的幂,即返 回ex的值。,3取整函数INT( ) 【格式】INT() 【功能】计算nExp值,返回该值的整数部分。 例:?INT(-24.56),4上界函数CEILING( ) 【格式】CEILING() 【功能】计算nExp的值,返回一个大于或等于该值的最小整数。 例: ?CEILING(3.45)显示:4?CEILING(-3.45)显示:-3,5下界函数FLOOR( ) 【格式】FLOOR() 【功能】计算nExp的值,返回一个小于或 等于该值的最大整数。?floor(3.45)显示:3?floor(-3.45)显示:-4,6自然对数函
31、数LOG( )【格式】LOG()【功能】求nExp的自然对数。nExp的值必须为正数。,7常用对数函数【格式】LOG10()【功能】求nExp的常用对数。nExp的值必须为正数。,8平方根函数SQRT( )【格式】SQRT()【功能】求非负nExp的平方根。,9最大值函数MAX( )和最小值函数MIN( ) 【格式】MAX(,.)MIN(,.) 【功能】返回数值表达式中的最大值MAX( )和最小值MIN( )。,10求余数函数MOD( ) 【格式】MOD(,) 【功能】返回nExp1除以nExp2的余数, 符号与nExp2相同。如果两个表达式符号相异,则函数值 为两数相除的余数再加上除数的值。
32、,11四舍五入函数ROUND( ) P43 【格式】ROUND(,) 【功能】返回nExp1四舍五入的值, nExp2表示保留的小数位数。,12函数PI( )【格式】PI( )【功能】返回常量的近似值,13正弦函数SIN( )【格式】SIN()【功能】返回nExp的正弦值。nExp以弧度为单 位,函数值域为-1,1。,14余弦函数COS( )【格式】COS()【功能】返回nExp的余弦值。nExp以弧度为单 位,函数的值域为-1,1。,15正切函数TAN( )【格式】TAN()【功能】返回nExp的正切值。nExp以弧度为单位,其 值为/2或- /2时,系统返回一个绝对值很大的数。,16反正弦
33、函数ASIN( )【格式】ASIN()【功能】返回nExp的反正弦值。自变量值必须在-1,1 内,函数值为弧度,且值域为-/2, /2。,17反余弦函数ACOS( )【格式】ACOS()【功能】返回nExp的反余弦值。自变量的值必须在- 1,1内,函数值为弧度,值域为-/2, /2。,18反正切函数ATAN( )【格式】ATAN()【功能】返回nExp的反正切值。函数值为弧度,值域 为(-/2, /2)。,分析下例各命令的执行结果: 例1:a=3? ABS(10-a),ABS(a-10),SIGN(10-a),SIGN(a-10) 例2:x=6.9?INT(x),INT(-x),CEILING
34、(x),CEILING(-x),FLOOR(x),FLOOR(-x) 例3: x=314.356? ROUND(x,2),ROUND(x,1),ROUND(x,0),ROUND(x,-1),例4: ? MOD(10,3), MOD(10,-3), MOD(-10,3), MOD(-10,-3) 例5: MOD()函数与INT()函数使用示例x=356x1=INT(x/100)x2=INT(MOD(x,100)/10)x3=MOD(x,10)? x1,x2,x3,二、 字符函数,字符函数是处理字符型数据的函数,其自变量或函数值中至少有一个是字符型数据。函数中涉及的字符型数据项,均以cExp表示。
35、,【格式】 AT(,, ) 【功能】返回串cExp1在串cExp2中的起始位置。函数值为整数。如果串cExp2不包含串cExp1,函数返回值为零。 第三个参数数值表达式用于表明要搜索字符表达式1在字符表 达式2中第几次出现,其默认值为1,可缺省。例如,a=“This is Visual FoxPro“?AT(“fox“,a),ATC(“fox“,a),AT(“is“,a,3),AT(“th“,a)主屏幕显示:0 16 10 0,字符串位置函数,【格式】 1) LEFT(,)2) RIGHT(,)3) SUBSTR(,)【功能】1)返回从cExp串中左边第一个字符开始,截取nExp 个字符的子串
36、。2)返回从cExp串中右边第一个字符开始,截取 nExp个字符的子串。3)返回从串cExp中第n个字符开始,截取 m个字符的子串。函数值为字符型数据 例如,a=“This is Visual FoxPro“? LEFT(a,3),RIGHT(a,4),SUBSTR(a,6,2)+SUBSTR(a,9) 主屏幕显示:Thi xPro isVisual FoxPro,取子串函数,3字符串长度函数LEN( ),【格式】 LEN() 【功能】返回cExp串的字符数(长度)。函数值为数值型数据,【格式】1) LTRIM()2) RTRIM | TRIM()3) ALLTRIM() 【功能】1) 删除c
37、Exp串的前导空格字符。2) 删除cExp串尾部空格字符。3) 删除字符串前导和尾部空格后的字符串。,4删除字符串前后空格函数,5空格函数SPACE( ) 【格式】SPACE () 【功能】返回一个包含n个空格的字符串。,【格式】STUFF(,,)【功能】在字符串1中,从n位置开始连续m个字符,用字符串2替换。n为0时,实际上是添加。 例如,a=“This is Visual FoxPro“b=“xxx“ ? STUFF(a,6,2,b) ? STUFF(a,6,0,b) ? STUFF(a,6,2,“) 主屏幕显示:This xxx Visual FoxPro This xxxis Visu
38、al FoxPro This Visual FoxPro,6字符串替换函数 STUFF( ),7字符复制函数 REPLICATE( )【格式】REPLICATE (,)【功能】返回将cExp串重复nExp次的字符串。,8计算子串出现次数函数 OCCURS() 【格式】OCCURS (,)【功能】返回第一个字符串在第二个字符串中出现的次数。 例如,a=“This is Visual FoxPro“? OCCURS(“is“,a),OCCURS(“fox“,a),OCCURS(“o“,a)主屏幕显示:3 0 2,【格式】LOWER ()UPPER ()【功能】LOWER( )将cExp串中字母全部
39、变成小写字母,UPPER( )将cExp串中字母全部变成大写字母,其它字符不变。例如,? LOWER(“ABCxyz“),UPPER(“abcefg123“)主屏幕显示:abcxyz ABCEFG123,9大小写转换函数LOWER( ) 和UPPER( ),10宏替换函数 &【格式】& .【功能】替换出字符型变量cVar中字符。,11. 字符替换函数 【格式】CHRTRAN(字符表达式1,字符表达式2,字符表达式3)【功能】当第一个字符串中的一个或多个字符与第二个字符串中的某个字符相匹配时,就用第三个字符串中对应(相同位置)的字符替换这些字符。如果第三个串字符包含的字符个数少于第二个字符串包含
40、的字符个数,因而没有对应字符,那么第一个字符串中相匹配的字符将被删除。如果第三个字符串包含的字符个数多于第二个字符串包含的字符个数,多余的字符被忽略。,例如,? CHRTRAN(“abcdef“,“bdf“,“123“)主屏幕显示: a1c2e3 ?CHRTRAN(“abcdef“,“bdf“,“12“),主屏幕显示: a1c2e?CHRTRAN(“中华人民共和国“,“华和“,“1234“)主屏幕显示:中12人民共34国,日期时间函数是处理日期型或日期时间型数据的函数。其自变量为日期型表达式dExp或日期时间型表达式tExp。1系统日期函数DATE( )【格式】DATE()【功能】返回当前系统
41、日期,此日期由Windows系统设置。函数值为D型。,三、日期时间函数,2系统时间函数TIME( )【格式】TIME()【功能】返回当前系统时间,时间显示格式为hh:mm:ss。若选择了nExp ,则不管为何值,返回的系统时间还包括秒的小数部分,精确至小数点后两位。函数值为C型。,3日期函数DAY( )【格式】DAY()【功能】返回dExp式中的天数。函数值为N型,4星期函数DOW( )、CDOW( )【格式】DOW()CDOW()【功能】DOW( )函数返回dExp式中星期的数值,用17表示星期日星期六。函数值为N型。CDOW( ) 函数返回dExp式中星期的英文名称。函数值为C型。,5月份
42、函数MONTH( )、CMONTH( )【格式】MONTH()CMONTH()【功能】MONTH( )函数返回dExp式中月份数。函数值为N型。CMONTH( )函数则返回月份的英文名。函数值为C型。,6年份函数YEAR( )【格式】YEAR()【功能】函数返回dExp式中年份值。函数值为N型。,7. 求时、分、秒函数【格式】1) HOUR()2) MINUTE()3) SEC()【功能】1) HOUR()函数返回日期时间型表达式所对应的小时部分。2) MINUTE()函数返回日期时间型表达式所对应的分钟部分。3) SEC()函数返回日期时间型表达式所对应的秒钟部分。例如,x=2004-06-
43、20,05:25:45 p? HOUR(x),MINUTE(x),SEC(x)主屏幕显示:17 25 45,四、 转换函数,在数据库应用的过程中,经常要将不同数据类型的数据进行相应转换,满足实际应用的需要。Visual FoxPro系统提供了若干个转换函数,较好地解决了数据类型转换的问题。,1ASCII码函数ASC( )【格式】ASC ()【功能】返回cExp串首字符的ASCII码值。函数值为N型。2ASCII字符函数CHR( )【格式】CHR()【功能】返回以nExp值为ASCII码的ASCII字符。 函数值为C型。 例如, ? CHR(ASC(“M“)+ASC(“a“)-ASC(“A“),
44、3字符日期型转换函数CTOD( )【格式】CTOD()【功能】把“/”格式的cExp串转换成 对应日期值。函数值为D型。,4日期字符型转换函数DTOC( )【格式】DTOC(, 1)【功能】把日期dExp转换成相应的字符串。函数值 为C型。,5数值字符型转换函数STR( )【格式】STR(,)【功能】将nExp1的数值转换成字符串形式。函数 值为C型。,6字符数值型转换函数VAL( )【格式】VAL ()【功能】将cExp串中数字转换成对应数值,转换结 果取两位小数。函数值为N型。,7宏替换函数【格式】&字符型变量.【功能】替换出字符变量的内容。如果该函数与其后的字符无明确分界,则要用“.”作
45、为函数结束标记。例如,a=“5“b=“6“c56=“good“good=123456? c&a.&b,&c56主屏幕显示:good 123456,五、测试函数在数据库应用的操作过程中,用户需要了解数据对象的类型、状态等属性,Visual FoxPro提供了相关的测试函数,使用户能够准确地获取操作对象的相关属性。1数据类型函数TYPE( )【格式】TYPE()【功能】返回cExp 串表示的数据对象的数据类型,返回值是一个表示数据类型的大写字母。C:字符型,D:日期型,N:数值型,L:逻辑型,M:备注型,G:通用型,U:未定义。2文件查找函数FILE()【格式】FILE()【功能】根据cExp串中
46、指定路径查找文件,如未指定路径,则在默认目录中查找。文件存在,返回逻辑真(.T.) 值,否则为逻辑假(.F.)值。,3条件测试函数IIF( )【格式】IIF(,)【功能】逻辑表达式lExp值为真(.T.),返回表达式eExp1的值,否则返回表达式eExp2的值。eExp1和eExp2可以是任意数据类型的表达式。 例: IIF()函数使用示例 a=10 b=50? IIF(a10,a-5,IIF(b=50,b-20,b+20)主屏幕显示:30,4表结束标志测试函数EOF( )【格式】EOF( | )【功能】测试记录指针是否移到表结束处。如果记录指针指向表尾记录,函数返回真(.T.),否则为假(.
47、F.)。 注意: (1)文件尾不是表中的最后一条记录,而是最后一条记录的后面。 (2)如指定工作区没有打开表文件,函数返回值为假。(3)表文件中不包含任何记录,函数返回值为真。 例: EOF()函数使用示例 USE 图书 & 打开图书表 GO BOTTOM & 将记录指针指向最后一条记录 ? EOF() & 主屏幕显示: .f. SKIP & 记录指针下移一条 ? EOF() & 主屏幕显示: .t.USE & 关闭图书表,5表起始标识测试函数BOF ( )【格式】BOF ( | )【功能】测试记录指针是否移到表起始处。如果记录指针指向表中首记录前面,函数返回真(.T.),否则为假(.F.)。
48、 6当前记录号函数RECNO()【格式】RECNO( | )【功能】返回指定工作区中表的当前记录的记录号。对于空表返回值为1。 注意: (1)如果指定工作区没有打开表文件,返回函数值0。 (2)如果记录指针指向文件尾,函数值为表文件的记录 数+1。(3)如果记录指针指向文件首,函数值为表文件中第一 条记录的记录号。,例: RECNO()函数使用示例 USE 图书GO BOTTOM ?RECNO() & 屏幕显示:49 此表总共49条记录SKIP & 记录指针下移一条?RECNO() & 屏幕显示:50GO 1SKIP 1?RECNO() & 屏幕显示:1USE,7当前记录逻辑删除标志测试函数DELETED( )【格式】DELETED( | )【功能】测试指定工作区中表的当前记录是否被逻辑删除。如果有逻辑删除标记,函数返回真(.T.),否则为假(.F.)。8记录数函数RECCOUNT( )【格式】RECCOUNT ( | )【功能】返回指定工作区中表的记录个数。如果工作区中没有打开表则返回0。9记录大小测试函数RECSIZE( )【格式】RECSIZE( | )【功能】返回指定工作区中表的记录总长度。如果工作区中没有打开表则返回0。,