1、第5章 Visual FoxPro操作基础,本章要点,掌握数据的类型 掌握数据的存储方法 掌握函数使用方法掌握表达式计算方法,第一节 数据类型,数据是反映现实世界中客观事物属性的记录,它包括两个方面:数据内容与数据形式。数据内容就是数据的值,数据形式就是数据的存储形式和操作使用方式,也称为数据类型。VFP6系统为使用户建立和操作数据库更加方便,将系统中所有操作、处理的数据,分为几种不同数据类型:字符型、数值型、日期型、日期时间型、逻辑型、备注型、通用型、货币型。,5.1.1 字符型,字符型(Character)数据是描述不具有计算能力的文字数据类型,是常用的数据类型之一。 字符型数据由汉字和A
2、SCII字符集中可打印字符(英文字符、数字字符、空格及其他专用字 符)组成,一个字符型数据最大长度是254个字符。 例如:“高等教育出版社” 数据库技术及应用123456789,5.1.2 数值型,数值型数据是描述数量的数据类型。是最常用的数据类型之一,在Visual FoxPro系统中被细分为以下5种类型。数值型(Numeric)(用字母N表示)数值型数据由数字、小数点、正负号和字母E组成。数值型数据的取值范围是: -0.9999999999E+190.9999999999E+20包括正负号、小数点和字母E在内,其长度(数据位数)最大20位。通常用于表示实数。如23,-103.45,1.3E
3、-5(即1.310-5)等;,2. 浮点型(Float)(用字母F表示) 浮点型数据是数值型数据的一种。它与数值型数据完全等价,只是在存储形式上采用浮点格式,主要是为了得到较高的计算精度。3. 货币型(Money)货币型数据是数值型数据的一种特殊形式。在数据的第一个数字前冠一个货币符号()。注:货币数据小数位的最大长度是4个字符,小数位超过4个字符的数据系统将会按四舍五入原则自动截取。,4. 双精度型(Double) 双精度型数据是更高精度的数值型数据。它只用于数据表中的字段类型的定义,并采用固定长度浮点格式存储,占用8个字符 。其取值范围是:+/-4.94065645841247E-324
4、+/-8.9884656743115E307。 5. 整型(Integer)(用字母I表示)整型数据是不包含小数部分的数值型数据。整型数据只用来表示整数,以二进制形式存储,占用4个字符。其取值范围是:-2147483621474836。,5.1.3 日期型(用字母D表示),日期型数据是表示日期的数据。日期的默认格式是:mm/dd/yyyy,其中mm表示月份,dd表示日期,yyyy表示年度,固定长度8位。 如09/16/2002表示2002年9月16日这一日期数据。日期型数据取值范围是:01/01/000112/31/9999,5.1.4 日期时间型(用字母T表示),日期时间型数据是表示日期和时
5、间的数据。 日期时间的默认格式是:mm/dd/yyyy hh:mm:ss, 其中mm、dd、yyyy的意义与日期型相同,而hh表示小时,mm表示分钟,ss表示秒数。 日期时间型数据也是采用固定长度8位, 取值范围是:日期为01/01/000112/31/9999,时间为00:00:0023:59:59。如:10/01/2002 10:30:30表示2002年10月1日10时30分30秒这一日期时间数据。,5.1.5 逻辑型(用字母L表示),逻辑型(Logic)数据是描述客观事物真假的数据类型,表示逻辑判断的结果。 逻辑型数据只有真(.t.或.y.)和假(.f.或.n.)两种,固定长度1位。 为
6、区别其他数据类型,一般需在表示逻辑值的字母t、y、f、n的前后加圆点符“.”。例如:逻辑真:.t .或 .T.、.y. 或 .Y.逻辑假:.f. 或 .F.、.n. 或 .N.,5.1.6 备注型(用字母M表示),备注型(Memo)数据是表示、存放较多字符的数据类型。可以把它看成是字符型数据的特殊形式。备注型数据没有数据长度限制,仅受限于磁盘空间。它只用于表中字段类型的定义,字段长度固定为4个字符,实际数据存放在与表文件同名的备注文件(.FPT)中,长度根据数据的内容而定。,5.1.7 通用型(用字母G表示),通用型(General)数据是存储OLE(对象链接嵌入)对象的数据类型。通用型数据中
7、的OLE对象可以是电子表格、文档、图形图片等。它只用于表中字段类型的定义。通用型数据字段长度固定为4位,实际数据长度仅受限于磁盘空间。OLE对象的实际内容、类型和数据量则取决于链接或嵌入OLE对象的操作方式。如果采用链接OLE对象的方式,则表中只包含对OLE对象的引用说明,以及对创建该OLE对象的应用程序的引用说明;如果采用嵌入OLE对象方式,则表中除包含对创建该OLE对象的应用程序的引用说明,还包含OLE对象中的实际数据。,数据类型的应用范围以上数据类型均可应用于表中字段数据类型的定义,但其中双精度型、浮点型、通用型、整型、备注型只能应用于字段,其余则可以用于变量、数组和字段。,第二节 数据
8、存储,在Visual FoxPro系统中,数据可用常量、变量、数组表示,数据还可以存入字段、记录和对象中,由它们存储、容纳各种类型的数据。因此,常把这些供数据存储的常量、变量、数组、字段、记录和对象等称为数据存储容器。用户正是利用不同的数据存储容器,在Visual FoxPro系统中表示、存储、操作、处理各种类型的数据,实现数据处理的应用。,5.2.1 常量,常量是一个命名的数据项,是在命令或程序中直接引用的实际值,其特征是在所有的操作中其值不变。常量类型有数值型、浮点型、字符型、逻辑型、日期型和日期时间型6种。1 数值型常量 由数字、小数点和正负号组成,表示整数或实数值。如;100,-21,
9、15.31,-21092.5041等分别是数值型常量中的整数和实数。,2 浮点型常量,以浮点格式表示的数值常量。通常用来表示那些绝对值很大或很小、而有效位数不太长的一些数值,对应于日常应用中的科学记数法。如中国的人口数13亿,以实数形式表示是1,300,000,000,以科学记数法的乘幂形式表示是1.3109。显然用科学记数法形式表示比较简短、方便、适用,对应在Visual FoxPro中采用浮点型常量表示为1.3E+9,其中,1.3称为尾数,表示有效数字,9称为阶码,表示幂指数。阶码只能是整数,尾数可以是整数,也可以是小数;尾数与阶码均可正可负。,3 字符型常量 由任意ASCII字符、汉字和
10、汉字字符组成的字符型数据,字符型常量又称为字符串。为与其他类型常量、变量和标识符相区别,Visual FoxPro要求将字符串中所有字符,用一对双引号“”或单引号或方括号 作为定界符对括起来。如:“ I am a student.”中华人民共和国Visual FoxPro 6.0系统都是字符串。,4 逻辑型常量 逻辑型常量就是表示逻辑判断结果“真”或“假”的逻辑值。逻辑常量只有真和假两种值,分别用(.t.或.y.)和(.f.或.n.)表示真和假。一般应在表示逻辑常量的字母左右加注圆点符“.”以示区别。 5 日期常量 日期型常量是表示日期值的数据,其默认格式是mm/dd/yyyy。 如10/01
11、/02和10/01/2002均表示2002年10月1日这一日期常量值。,6 日期时间型常量Visual FoxPro系统中增加了一种表示日期和时间值的日期时间型常量,其默认格式是:mm/dd/yyyy , hh:mm:ssa|p其中a和p分别表示AM(上午)和PM(下午)日期值和日期时间值的输入格式与输出格式并不完全相同,特别是输出格式受系统环境设置的影响,用户可根据应用需要进行相应调整、设置。,(1)日期格式中的世纪值通常日期格式中用2位数表示年份,但涉及到世纪问题就不便区分。Visual FoxPro提供设置命令对此进行相应设置。命令格式:SET CENTURY ON | OFF | TO
12、 nCentury命令功能:ON:日期数据显示10位,其中年份4 位,即日期值输出时显示年份值;OFF:(默认值)。日期数据显示8位,年份2位,即日期值输出时不显示年份值;TO nCentury:指定日期数据所对应的世纪值。nCentury是一个199的整数,代表世纪数。,(2)设置日期显示格式用户可以调整、设置日期值和时间值的显示输出格式。既可以用命令方式设置,也可以用菜单方式设置。命令格式:SET DATE TO AMERICAN | ANSI | BRITISH | FRENCH | GERMAN | ITLIAN | JAPAN | USA | MDY | DMY | YMD | SH
13、ORT | LONG命令功能:设置日期型和日期时间型数据的显示输出格式。系统默认为AMERICAN美国格式。如果日期格式设置为SHORT或LONG格式,Visual FoxPro系统将按Windows系统设置的短日期格式或长日期格式显示输出日期数据,而且SET CENTURY命令的设置被忽略。,各种日期格式设置所对应的日期显示输出格式,见表5-1所示。表5-1 系统日期格式,(3)设置日期2000年兼容性通常日期型和日期时间型数据的结果,与SET DATE命令和SET CENTURY命令设置状态及当前系统时间有关。由于系统时间与相应设置不同,同一数据的结果可能有不同的解释。如日期值10/11/
14、12可以解释为1912 年 10 月 11 日、2012 年 10 月 11 日、1912 年 11 月 10 日、1910 年 11 月 12 日或者 2010 年 11 月 12 日等。这显然会导致系统混乱,而且还可能造成2000年兼容性错误,影响系统正常、有效的操作运行。,Visual FoxPro系统增加了一种所谓严格的日期格式。不论哪种设置,按严格日期格式表示的日期型和日期时间型数据,都具有相同的值和表示形式。严格的日期格式是:yyyy-mm-dd,hh:mm:ssa|p 符号表明该格式是严格的日期格式,并按照 YMD 的格式解释日期型和日期时间型数据,它是严格日期格式的标志,不可缺
15、少。有效的日期型和日期时间型数据分隔符为:连字符“-”、正斜杠“/”、句点“.”和空格。如2002-10-01、2002-10-01 10:30:30a,分别以严格的日期格式表示2002年10月1日及该日上午10时30分30秒这两个日期数据。,Visual FoxPro系统默认采用严格的日期格式,并以此检测所有日期型和日期时间型数据的格式是否规范、合法。为与早期版本兼容,用户通过命令或菜单设置改变这一格式。命令设置的命令格式:SET STRICTDATE TO 0 | 1 | 2命令功能:0:关闭严格的日期格式检测,即设置日期格式按传统的严格的格式;1:设置严格的日期格式检测(默认值),要求所
16、有日期型和日期时间型数据均按严格的格式;2:设置与1相同,但如果程序代码中出现CTOD()和CTOT()函数时,会出现编译错误。这个设置最适合调试时使用,用来检测2000年兼容性错误;省略:恢复系统默认值,等价于1的设置。,变量是在操作过程中可以改变其取值或数据类型的数据项。在Visual FoxPro系统中变量分为字段变量、内存变量、数组变量和系统变量4类。此外,作为面向对象的程序语言,Visual FoxPro在进行面向对象的程序设计中引入了对象的概念,对象实质上也是一类变量。确定一个变量,需要确定其三个要素:变量名、数据类型和变量值。,系统变量系统变量是Visual FoxPro系统特有
17、的内存变量,它由Visual FoxPro系统定义、维护。系统变量有很多,其变量名均以下划线“_”开始,因此在定义内存变量和数组变量名时,不要以下划线开始,以免与系统变量名冲突。系统变量设置、保存了很多系统的状态、特性,了解、熟悉并且充分地运用系统变量,会给数据库系统的操作、管理带来很多方便,特别是开发应用程序时更为突出,学习时可对此有所关注。,5.2.2 内存变量,内存变量是一般意义下的简单变量。每一个内存变量都必须有一个固定的名称,以标识该内存单元的存储位置。用户可以通过变量标识符使用内存单元存取数据。内存变量是内存中的临时单元,可以用来在程序的执行过程中保留中间结果与最后结果,或用来保留
18、对数据库进行某种分析处理后得到的结果。注:除非用内存变量文件来保存内存变量值,否则,当退出Visual FoxPro系统后内存变量的值也会与系统一起从内存中清除。,内存变量名的长度在Visual FoxPro系统中可以达到254个字符,是由字母、数字和下划线组成的。如果内存变量与数据表中的字段变量同名时,用户在引用内存变量时,要在其名字前加一个m.或(m-),用以强调这一变量是内存变量。,内存变量是在内存中定义的、一种单个数据元素的临时性变量。(1)内存变量的数据类型内存变量的数据类型包括:数值型、字符型、逻辑型、日期型和日期时间型;(2)内存变量的建立建立内存变量就是给内存变量赋值。内存变量
19、赋值既可定义一个新的内存变量,也可改变已定义内存变量的值或数据类型。命令格式:STORE TO 命令功能:计算的值并赋值给各个内存变量。命令格式:= 命令功能:计算的值并赋值给指定内存变量。,(3)内存变量的显示输出可以用两个命令在屏幕上显示输出内存变量的值。命令格式:?| ? AT 命令功能:计算表达式表中各表达式的值,并在屏幕上指定位置显示输出各式的值。?:先回车换行,再计算并输出表达式的值;?:在屏幕上当前位置,计算并直接输出表达式的值;:多个逗号两两分隔的表达式,各表达式的值输出时,以空格分隔;AT 子句指定表达式值从指定列开始显示输出。AT的定位只对它前面的一个表达式有效,多个表达式
20、必须用多个AT子句分别定位输出,而且可反序定位。,5.2.3 数组变量,数组是一组有序内存变量的集合。或者说,数组是由同一个名字组织起来的通过下标加以区分的简单内存变量的集合。其中每一个下标不同的内存变量都是这个数组的一个元素,它是由一个以行和列形式表示的数组元素的矩阵。将所有的数组元素用一个变量名命名,使其构成一个集合体,在数组中,每一个数组元素在内存中独占一个内存单元,视同一个简单内存变量。为了区分不同的数组元素,每一个数组元素都是通过数组名和下标来访问的,如A1,2、B5。数组是内存变量的一种特殊形式,使用时也要注意其作用域的范围。,数组变量是结构化的变量,是一组具有相同名称、以下标相互
21、区分的有序内存变量。一个数组通常都包含多个数据元素。Visual FoxPro系统中只允许使用一维数组(相当于数列)和二维数组(相当于行列式或矩阵)。,(1)数组元素 数组中各有序变量(数据元素)组成数组的成员,称为数组元素。数组元素实质上是一个内存变量,也称数组变量,它们具有相同变量名即数组名,彼此以下标区分; 数组元素的名称(变量名)用数组加下标构成。如AA(1),BB(2,3)分别表示一维数组AA的第1个元素,二维数组BB中第2行第3列的元素; 下标必须用圆括号对括;一维数组的元素只有一个下标,二维数组的元素有两个以逗号分隔的下标; 下标必须是非负数值,可以是常量、变量、函数或表达式,下
22、标值会自动取整。如AA(1.5),AA(nA1),AA(2+10/3)等; 数组元素的数据类型决定于最后赋值的数据类型;不同数组元素的数据类型可以不同; 数组元素与普通内存变量一样操作,可以赋值和引用。,(2)数组的定义数组必须先定义后使用,定义数组是向系统申请数组元素在内存中的存储空间。命令格式:DIMENSION | DECLARE (,),(,)命令功能:定义指定的各个数组。(3)数组的赋值与引用数组元素的赋值与引用,与普通内存变量的规则相同。,例如:定义一个含有12个元素的二维数组。 其数组的名称为cc。Dimension cc(3,4)cc数组一旦定义完成,用户就可以使用cc (1,
23、1)、cc (1,2)、cc (1,3)、cc (1,4)、cc (2,1)、 cc (2,2)、cc (2,3)、cc (2,4)、cc (3,1)、cc (3,2)、cc (3,3)、cc (3,4) 12个内存变量单元存取数据。,5.2.4 字段变量,字段变量是数据库管理系统中的一个重要概念。它与记录一纵一横构成了数据表的基本结构。一个数据库由若干相关的数据表组成,一个数据表由若干个具有相同属性的记录组成,而每一个记录又是由若干个字段组成的。字段变量就是指数据表中已定义的任意一个字段。可以这样理解: 在一个数据表中,同一个字段名下有若干个数据项,而数据项的值取决于该数据项所在记录行的变化
24、,所以称它为字段变量,也有人把字段变量称为字段名变量。,字段变量的数据类型与该字段定义的类型一致,字段变量的类型有数值型、浮点型、货币型、整型、双精度型、字符型、逻辑型、日期型、日期时间型、备注型和通用型等。 使用字段变量首先要建立数据表,建立数据表时首先定义的就是字段变量属性(名字、类型和长度)。 字段变量的定义及字段变量数据的输入、输出需要在表设计器中进行。,5.2.5 记录,记录是数据表中一组数据项的集合。在同一个数据表中可以有若干个记录,每一个记录具有相同的字段个数。在数据表中记录的顺序不影响对记录的操作。在Visual FoxPro系统中,许多操作都是通过记录操作来完成的。,5.2.
25、6 对象,对象是数据存储器的一种。对象是类的实体,对象也是类的变量,它是任何具有属性和方法的信息的集合。对象的建立可以通过设计器和CreateObject ( ) 函数实现。在Visual FoxPro系统中,引用对象是可视化编程的重要手段。,5.2.7 内存变量的作用域,内存变量的作用域是指变量在程序中的作用范围。全局型变量 局部型变量 本地型变量在Visual FoxPro系统中,能否正确使用内存变量,弄懂内存变量的作用域是重要的一环,一旦内存变量的作用域被定义,使用时就要特别注意它的作用范围。尤其是在进行应用系统开发时,各对象间的数据传递就是依靠内存变量来完成的,内存变量的作用范围定义不
26、当,对象间的数据传递就将导致失败。,5.2 数据存储,5.2.7 内存变量的作用域,1.全局型内存变量的定义用Public命令定义的内存变量,可视为全局型内存变量。命令格式:Public 或: Public array ( , ), ( , ) 命令功能: 定义内存变量或数组变量为全局型变量。,5.2 数据存储,5.2.7 内存变量的作用域,2.局部型变量的定义用Private命令定义的内存变量,可视为局部型内存变量。 命令格式: Private 或: Private All Like | Except 或: Private array ( , ), ( , ) 命令功能: 定义内存变量或数组
27、变量为局部型变量。,5.2 数据存储,5.2.7 内存变量的作用域,3.本地型变量的定义 用Local 命令定义的内存变量,可视为本地型内存变量。 命令格式: Local 或: Local array ( , ), ( , ) 命令功能: 定义内存变量或数组变量为本地型变量。,5.2.8 内存变量的操作,内存变量的定义,可以通过定义内存变量的作用域,或者直接给内存变量赋值来进行,内存变量一旦定义完成,便可以对其进行如下操作。1.输入命令(给内存变量赋值命令)(1) Store命令 格式:Store To 功能: 计算的值,并将的值赋给内存变量表中每一个变量。中可以是一个变量,也可以是多个变量,
28、若是多个变量,各变量间用逗号隔开。 ,5.2.8 内存变量的操作,(2) =命令格式:= 功能: 计算的值,并将的值赋给内存变量。 2. 输出命令 格式: ? /? 功能: 依次计算中表达式的值,并将诸表达式表的值在屏幕上输出。 其中: 使用 ? 命令,显示结果在下一行输出;使用 ?命令,显示结果在当前行输出;不选择,使用 ? 命令,输出一个空行。,5.2 数据存储,5.2.8 有关内存变量的操作,3.数据表与内存变量间数据的传递命令(1)Scatter命令 命令格式: Scatter Fields | Fields Like | Fields Except Memo To Blank 命令功
29、能:将当前数据表中,当前记录的全部或部分数据传送到指定的数组中。 (2)Gather命令 命令格式: Gather From Fields Memo 或: Gather From Fields | Fields Like Fields Except Memo 命令功能: 用数组中的数据置换当前数据表中数据。,第三节 函数,Visual FoxPro系统中,函数是一段程序代码,用来进行一些特定的运算或操作,支持和完善命令的功能,帮助用户完成各种操作与管理。Visual FoxPro系统有数百种不同函数,按函数提供方式,可分为系统(标准)函数和用户自定义函函数,按函数运算、处理对象和结果的数据类型
30、,可分为数值型函数、字符型函数、逻辑型函数、日期时间型函数、数据转换函数等,按函数的功能和特点,可分为数据处理函数、数据库操作函数、文件管理函数、键盘和鼠标处理函数、输出函数、窗口界面操作函数、程序设计函数、数据库环境函数、网络操作函数、系统信息函数动态数据操作函数等。,Visual FoxPro的函数由函数名与自变量两部分组成。标准函数是Visual FoxPro系统提供的系统函数,其函数名是Visual FoxPro保留字,自定义函数是用户自已定义的函数,函数名用户指定;自变量必须用圆括号对括起来,如有多个自变量,各自变量以逗号分隔;有些函数可省略自变量,或不需自变量,但也必须保留括号;自
31、变量数据类型由函数的定义确定,数据形式可以是常量、变量、函数或表达式等。 函数是一类数据项,除个别(如宏替换)函数外,函数都不能像命令一样单独使用,只能作为命令的一部分进行操作运算。,5.3.1 数值函数,数值函数:数值函数的自变量是数值型常量、数值型变量、数值型函数和算术表达式,其函数值是数值 型常量。,5.3.1 数值函数,常用的数值函数格式及功能,数值函数用于数值运算,其自变量与函数都是数值型数据。1取绝对值函数ABS( )【格式】ABS()【功能】计算nExp的值,并返回该值的绝对值。2指数函数EXP( )【格式】EXP()【功能】求以e为底、nExp值为指数的幂,即返回ex的值。3取
32、整函数INT( )【格式】INT()【功能】计算nExp的值,返回该值的整数部分。,4上界函数CEILING( )【格式】CEILING()【功能】计算nExp的值,返回一个大于或等于该值的最小整数。5下界函数FLOOR( )【格式】FLOOR()【功能】计算nExp的值,返回一个小于或等于该值的最大整数。6自然对数函数LOG( )【格式】LOG()【功能】求nExp的自然对数。nExp的值必须为正数。7常用对数函数【格式】LOG10()【功能】求nExp的常用对数。nExp的值必须为正数。,8平方根函数SQRT( )【格式】SQRT()【功能】求非负nExp的平方根。9最大值函数MAX( )
33、和最小值函数MIN( )【格式】MAX(,.)MIN(,.)【功能】返回数值表达式中的最大值MAX( )和最小值MIN( )。10求余数函数MOD( )【格式】MOD(,)【功能】返回nExp1除以nExp2的余数。余数的小数位数与nExp1相同,符号与nExp2相同。,11四舍五入函数ROUND( )【格式】ROUND(,)【功能】返回nExp1四舍五入的值, nExp2表示保留的小数位数。 12函数PI( )【格式】PI( )【功能】返回常量的近似值 13正弦函数SIN( )【格式】SIN()【功能】返回nExp的正弦值。nExp以弧度为单位,函数值域为-1,1。 14余弦函数COS( )
34、【格式】COS()【功能】返回nExp的余弦值。nExp以弧度为单位,函数的值域为-1,1。,15正切函数TAN( )【格式】TAN()【功能】返回nExp的正切值。nExp以弧度为单位,其值为/2或- /2时,系统返回一个绝对值很大的数。16反正弦函数ASIN( )【格式】ASIN()【功能】返回nExp的反正弦值。自变量值必须在-1,1内,函数值为弧度,且值域为-/2, /2。17反余弦函数ACOS( )【格式】ACOS()【功能】返回nExp的反余弦值。自变量的值必须在-1,1内,函数值为弧度,值域为-/2, /2。18反正切函数ATAN( )【格式】ATAN()【功能】返回nExp的反
35、正切值。函数值为弧度,值域为(-/2, /2)。,5.3.2 字符处理函数,字符处理函数:字符处理函数的自变量是字符型常量、字符型变量、字符型函数和字符表达式,其函数值是字符型常量。,5.3.2 字符处理函数,常用的字符处理函数格式及功能,5.3.2 字符处理函数,常用的字符处理函数格式及功能,字符函数是处理字符型数据的函数,其自变量或函数值中至少有一个是字符型数据。函数中涉及的字符型数据项,均以cExp表示。1子串位置函数【格式】AT(,)【功能】返回串cExp1在串cExp2中的起始位置。函数值为整数。如果串cExp2不包含串cExp1,函数返回值为零。,2取左子串函数LEFT( )【格式
36、】LEFT(,)【功能】返回从cExp串中第一个字符开始,截取nExp个字符的子串。 3取右子串函数RIGHT( )【格式】RIGHT(,)【功能】返回从cExp串中右边第一个字符开始,截取nExp个字符的子串。 4取子串函数SUBSTR( )【格式】SUBSTR (, , )【功能】返回从串cExp中第nExp1个字符开始,截取nExp2个字符的子串。,5字符串长度函数LEN( )【格式】LEN()【功能】返回cExp串的字符数(长度)。函数值为N型。 6删除字符串前导空格函数LTRIM( )【格式】LTRIM()【功能】删除cExp串的前导空格字符。 7删除字符串尾部空格函数RTRIM(
37、) | TRIM( )【格式】RTRIM | TRIM()【功能】删除cExp串尾部空格字符。 8空格函数SPACE( )【格式】SPACE ()【功能】返回一个包含nExp个空格的字符串。,9字符串替换函数STUFF( )【格式】STUFF(,)【功能】从nExp1指定位置开始,用cExp2串替换 cExp1串中nExp2个字符。 10字符复制函数 REPLICATE( )【格式】REPLICATE (,)【功能】返回将cExp串重复nExp次的字符串。 11字符串匹配函数函数 LIKE( )【格式】LIKE (,)【功能】比较cExp1与cExp2对应位置上的字符,若所有对应字符都相匹配返
38、回.T.(cExp1可含通配符),12大小写转换函数LOWER( ) 和UPPER( )【格式】LOWER ()UPPER ()【功能】LOWER( )将cExp串中字母全部变成小写字母,UPPER( )将cExp串中字母全部变成大写字母,其它字符不变。 13宏替换函数 &【格式】& .【功能】替换出字符型变量cVar中字符。,5.3.3 日期时间函数,日期时间函数是: 处理日期型或日期时间型数据的函数。其自变量为日期型表达式dExp或日期时间型表达式tExp。,5.3.3 日期时间函数,常用的日期和时间函数格式及功能,1系统日期函数DATE( )【格式】DATE()【功能】返回当前系统日期,
39、此日期由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月份函数MONTH( )、CM
40、ONTH( )【格式】MONTH()CMONTH()【功能】MONTH( )函数返回dExp式中月份数。函数值为N型。CMONTH( )函数则返回月份的英文名。函数值为C型。 6年份函数YEAR( )【格式】YEAR()【功能】函数返回dExp式中年份值。函数值为N型。,5.3.4 数据转换函数,转换函数: 数据转换函数是在不同的数据类型间进行数据类型转换。,5.3.4 转换函数,常用的转换函数函数格式及功能,在数据库应用的过程中,经常要将不同数据类型的数据进行相应转换,满足实际应用的需要。Visual FoxPro系统提供了若干个转换函数,较好地解决了数据类型转换的问题。1ASCII码函数A
41、SC( )【格式】ASC ()【功能】返回cExp串首字符的ASCII码值。函数值为N型。2ASCII字符函数CHR( )【格式】CHR()【功能】返回以nExp值为ASCII码的ASCII字符。函数值为C型。,3字符日期型转换函数CTOD( )【格式】CTOD()【功能】把“/”格式的cExp串转换成对应日期值。函数值为D型。4日期字符型转换函数DTOC( )【格式】DTOC(, 1)【功能】把日期dExp转换成相应的字符串。函数值为C型。5数值字符型转换函数STR( )【格式】STR(,)【功能】将nExp1的数值转换成字符串形式。函数值为C型。6字符数值型转换函数VAL( )【格式】VA
42、L ()【功能】将cExp串中数字转换成对应数值,转换结果取两位小数。函数值为N型。,5.3.5 测试函数,测试函数是用来返回某种测试结果的函数,其结果一般是逻辑值。,5.3.5 测试函数,常用的测试函数格式及功能,在数据库应用的操作过程中,用户需要了解数据对象的类型、状态等属性,Visual FoxPro提供了相关的测试函数,使用户能够准确地获取操作对象的相关属性。 1数据类型函数TYPE( )【格式】TYPE()【功能】返回cExp 串表示的数据对象的数据类型,返回值是一个表示数据类型的大写字母。C:字符型,D:日期型,N:数值型,L:逻辑型,M:备注型 G:通用型,U:未定义。 2文件查
43、找函数FILE()【格式】FILE()【功能】根据cExp串中指定路径查找文件,如未指定路径,则在默认目录中查找。文件存在,返回逻辑真(.T.) 值,否则为逻辑假(.F.)值。,3条件测试函数IIF( )【格式】IIF(,)【功能】逻辑表达式lExp值为真(.T.),返回表达式eExp1的值,否则返回表达式eExp2的值。eExp1和eExp2可以是任意数据类型的表达式。 4表结束标志测试函数EOF( )【格式】EOF( | )【功能】测试记录指针是否移到表结束处。如果记录指针指向表中尾记录之后,函数返回真(.T.),否则为假(.F.)。 5表起始标识测试函数BOF ( )【格式】BOF (
44、| )【功能】测试记录指针是否移到表起始处。如果记录指针指向表中首记录前面,函数返回真(.T.),否则为假(.F.)。,6当前记录号函数RECNO()【格式】RECNO( | )【功能】返回指定工作区中表的当前记录的记录号。对于空表返回值为1。若指定工作区中没有打开表,返回值为0. 7当前记录逻辑删除标志测试函数DELETED( )【格式】DELETED( | )【功能】测试指定工作区中表的当前记录是否被逻辑删除。如果当前记有逻辑删除标记,函数返回真(.T.),否则为假(.F.)。 8记录数函数RECCOUNT( )【格式】RECCOUNT ( | )【功能】返回指定工作区中表的记录个数(物理
45、上存在,不管记录是否打上删除标记)。如果工作区中没有打开表则返回0。,9记录大小测试函数RECSIZE( )【格式】RECSIZE( | )【功能】返回指定工作区中表的记录总长度。如果工作区中没有打开表则返回0。 10屏幕列坐标和行坐标函数 COL( )、ROW( )【格式】COL ( )ROW()【功能】COL ( )返回光标的列坐标值,ROW ( )返回光标的行坐标值。 11打印机列坐标和行坐标函数PCOL( ),PROW( )【格式】PCOL( )PROW()【功能】返回打印机打印头所处位置的列坐标和行坐标。,5.3.6 其它函数,5.3 函数,5.3.6 其它函数,常用的其它函数如下表
46、:,对话框函数 格式:MESSAGEBOX(, , ) 功能:显示一个用户自定义对话框并返回用户选择结果。 例:执行命令mm=messagebox(“MESSAGEBOX()”+CHR(13)+“功能:显示一个用户自定义对话框。“,3+64+256,“MessageBox()函数示例“)后屏幕将显示一个对话框如下:,函数根据所按下的按钮返回一个数值: 确定-1、取消-2、放弃-3、重试-4、忽略-5、是-6、否-7,第四节 表达式,在Visual FoxPro系统中,表达式是由常量、变量、函数及其他数据容器单独或与运算符组成的有意义的运算式子。运算符是对数据对象进行加工处理的符号,根据其处理数
47、据对象的数据类型,运算符分为算术(数值)运算符、字符运算符、日期时间运算符、逻辑运算符和关系运算符五类,相应的,表达式也分为算术表达式、字符表达式、日期时间表达式、逻辑表达式和关系表达式五类。常量、变量和函数可以作为表达式的特例。今后涉及到表达式的描述,除特别指明,均可包含这些特殊的形式。,在一个表达式中可能包含多个由不同运算符连接起来的、具有不同数据类型的数据对象,但任何运算符两侧的数据对象必须具有相同数据类型,否则运算将会出错;由于表达式中有多种运算,不同的运算顺序可能得出不同结果,甚至出现运算错误,因此当表达式中包含多种运算时,必须按一定顺序施行相应运算,才能保证运算的合理性和结果的正确
48、性、惟一性。用户也可以通过给表达式加圆括号的方式,改变其默认运算顺序。同一类运算符也有一定的运算优先顺序,这在各类表达式中分别介绍。如果是多个同一级别的运算符,则按在表达式中出现的先后顺序进行运算。,运算符的优先级,算术运算符 字符串运算符,最高级,一元运算符 “+”和“-”(正负号),*或(乘方),*、/、和%(乘、除和余数),+和-(加和减),+和-(精确连接和非精确连接),+和-(加和减),日期运算符,关系运算符,、=、=、#、!=、$、=,各运算符优先级相同,次高级,逻辑运算符,.NOT.或!(逻辑非),.AND.(逻辑与),.OR.(逻辑或),最低级,5.4.1 算术表达式,算术表达式可由算术运算符和数值型常量、数值型内存变量、数值型数组、数值类型的字段、返回数值型数据的函数组成。算术表达式的运算结果是数值型常数。在进行算术表达式计算时,要遵循以下优先顺序:先括号,在同一括号内,先乘方(*),再乘除(*,/),再模运算(%),后加减(+,-)。,