930 likes | 1.13k Views
Visual FoxPro 应用基础与面向对 象程序设计教程. 潘世永 数学与计算机学院 Email: psycg5753@gmail.com. 第二章 表的基本操作. Visual FoxPro 中的数据类型. VFP6 将系统中所有操作、处理的数据,分为几种不同数据类型: 字符型、数值型、日期型、日期时间型、逻辑型、备注型、通用型、货币型、二进制字符型和二进制备注型。
E N D
VisualFoxPro 应用基础与面向对 象程序设计教程 潘世永 数学与计算机学院 Email: psycg5753@gmail.com
第二章 表的基本操作 Visual FoxPro中的数据类型 VFP6将系统中所有操作、处理的数据,分为几种不同数据类型: 字符型、数值型、日期型、日期时间型、逻辑型、备注型、通用型、货币型、二进制字符型和二进制备注型。 字符型 字符型(Character)数据是不具有计算能力的文字数据类型,用字母C表示。字符型数据包括中文字符、英文字符、数字字符和其他ASCII字符,其长度(即字符个数)范围是0~254个字符。
数值型 数值型数据是表示数量、可以进行数值运算的数据类型。数值型数据由数字、小数点、正负号和表示乘幂的字母E组成,数值精度达16位。在Visual FoxPro系统中,按存储、表示形式与取值范围不同,数值型数据又分为四种不同类型: 1.数值型数值型(Numeric)数据由数字、小数点、正负号和字母E组成,用字母N表示。数值型数据的取值范围是:-0.9999999999E+19~0.9999999999E+20,包括正负号、小数点和字母E在内,其长度(数据位数)最大20位。通常用于表示实数。如23,-103.45,1.3E-5(即1.3×10-5)等;
2.浮点型 浮点型(Float)数据是数值型数据的一种,用字母F表示。它与数值型数据完全等价,只是在存储形式上采用浮点格式,主要是为了得到较高的计算精度。 3.双精度型 双精度型(Double)数据是具有更高精度的一种数值型数据,用字母B表示。它采用固定长度浮点格式存储,占用8个字节,其取值范围是:+/-4.94065645841247E-324 ~ +/-8.9884656743115E307。 4.整型 整型(Integer)数据是不包含小数部分的数值型数据,用字母I表示。整型数据只用来表示整数,以二进制形式存储,占用4个字节。其取值范围是:-21474836~21474836。
日期型 日期型(Date)数据是表示日期的数据,用字母D表示。VFP6支持2000年型的日期数值。格式为:月/日/年。如:04/28/97 ,固定占用8个字节。其中的年份如果输入97,则系统默认为1997,因为日期的默认格式是{mm/dd/yyyy},其中mm表示月份,dd表示日期,yyyy表示年度。如果输入小于48的数(如45)则系统默认为2045,因此,最好输入完整的年份。 日期时间型 日期时间型(Date Times)数据是表示日期和时间的数据,用字母T表示。日期时间型常量,其默认格式是: {mm/dd/[yy]yy [,] hh:mm:ss[a|p]} 其中a和p分别表示AM(上午)和PM(下午),mm、dd、yyyy的意义与日期型相同,而hh表示小时,mm表示分钟,ss表示秒数。日期时间型数据固定占用8个字节。
逻辑型 逻辑型(Logic)数据是描述客观事物真假的数据类型,表示逻辑判断的结果,用字母L表示。逻辑型数据只有真(.t.或.y.)和假(.f.或.n.)两种,固定占用1个字节。 备注型 备注型(Memo)数据是表示、存放较多字符的数据类型。可以把它看成是字符型数据的特殊形式,用字母M表示。 备注型数据没有数据长度限制,仅受限于磁盘空间。它只用于表中字段类型的定义,字段宽度固定为4字节,实际数据存放在与表文件同名的备注文件(.FPT)中,长度根据数据的内容而定。
通用型 通用型(General)数据是存储OLE(对象链接嵌入)对象的数据类型,用字母G表示。通用型数据中的OLE对象可以是电子表格、文档、图形图片等。它只用于表中字段类型的定义。通用型数据字段宽度固定为4字节,实际数据长度仅受限于磁盘空间。 通用型数据包含链接或嵌入OLE对象两种操作方式。 货币型 货币型(Currency)数据是为存储美元金额而使用的一种称为货币(Currency)的数据类型。默认保留4位小数,字段宽度固定为8字节。货币型数据用字母Y表示。 二进制字符型和二进制备注型 本课程中不涉及这两种类型,不做介绍。
Visual FoxPro的常量与变量 常量常量是在命令或程序中可直接引用、具有具体值的命名数据项,其特征是在整个操作过程中它的值和表现形式保持不变。Visual FoxPro按常量取值的数据类型,将常量分为6种类型:数值型常量、浮点型常量、字符型常量、逻辑型常量、日期型常量、日期时间型常量。 1.数值型常量 由数字、小数点和正负号组成,表示整数或实数值。如;100,-21,15.31,-21092.5041等。
2.浮点型常量 以浮点格式表示的数值常量。通常用来表示那些绝对值很大或很小、而有效位数不太长的一些数值,对应于日常应用中的科学记数法。如:1.3×109表示为1.3E+9,其中,1.3称为尾数,表示有效数字,9称为阶码,表示幂指数。阶码只能是整数,尾数可以是整数,也可以是小数;尾数与阶码均可正可负。 3.字符型常量 由任意ASCII字符、汉字和汉字字符组成的字符型数据,字符型常量又称为字符串。Visual FoxPro要求将字符串中所有字符,用一对双引号或单引号或方括号作为定界符对括起来。如:“I am a student”,‘中华人民共和国’,[Visual FoxPro 6.0系统]都是字符串。
4.逻辑型常量逻辑型常量就是表示逻辑判断结果“真”或“假”的逻辑值。逻辑常量只有真和假两种值,分别用(.t.或.y.)和(.f.或.n.)表示真和假。4.逻辑型常量逻辑型常量就是表示逻辑判断结果“真”或“假”的逻辑值。逻辑常量只有真和假两种值,分别用(.t.或.y.)和(.f.或.n.)表示真和假。 5.日期型常量 日期型常量是表示日期值的数据,如{10/01/02} 表示2002年10月1日这一日期常量值。 6.日期时间型常量 日期时间型常量是表示日期时间值的数据,如{10/01/02 8:30} 表示2002年10月1日8点半这一日期时间常量值。
日期值和日期时间值的格式受系统环境设置的影响,用户可根据应用需要进行相应调整、设置。 (1)日期格式中的世纪值命令格式:SET CENTURY ON | OFF功能:ON:日期数据显示10位,其中年份4 位,即日期值输出时显示年份值。OFF:(默认值)。日期数据显示8位,年份2位,即日期值输出时不显示年份值。(2)设置日期显示格式用户可以调整、设置日期值和日期时间值的显示输出格式。命令格式:SET DATE TO AMERICAN | ANSI | BRITISH | FRENCH | GERMAN | ITLIAN | JAPAN | 命令功能:设置日期型和日期时间型数据的显示输出格式。系统默认为AMERICAN美国格式,日期格式为mm/dd/yy。
Visual FoxPro系统增加了一种严格的日期格式是:{^yyyy-mm-dd[,][hh[:mm[:ss]][a|p]]} ^ 符号表明该格式是严格的日期格式,并按照 YMD 的格式解释日期型和日期时间型数据,它是严格日期格式的标志,不可缺少。有效的日期型和日期时间型数据分隔符为:连字符“-”、正斜杠“/”、句点“.”和空格。 Visual FoxPro系统默认采用严格的日期格式,命令格式:SET STRICTDATE TO 0|1命令功能:0:关闭严格的日期格式,即设置为传统的格式。1:设置严格的日期格式,要求所有日期型和日期时间型数据均按严格的格式。
变量变量是在操作过程中可以改变其取值或数据类型的数据项。在Visual FoxPro系统中变量分为字段变量、内存变量、数组变量和系统变量4类。确定一个变量,需要确定其三个要素:变量名、数据类型和变量值。 1.命名约定(1) 用字母,下划线和数字命名。一般建议不采用汉字命名; (2) 命名以字母或下划线开头;除自由表中字段名、索引的TAG标识名最多只能10个字符外,其他的命名可使用1~128个字符; (3) 避免使用 Visual FoxPro的保留字; (4) 文件名的命名应遵循操作系统的约定。
2.字段变量表由若干记录构成,每个记录都包含若干个数量相同的字段,同一字段在不同记录中分别对应不同的字段值,因此,字段也是变量。与其他变量不同的是,字段变量是定义在表中的变量,随表的存取而存取,因而是永久性变量。2.字段变量表由若干记录构成,每个记录都包含若干个数量相同的字段,同一字段在不同记录中分别对应不同的字段值,因此,字段也是变量。与其他变量不同的是,字段变量是定义在表中的变量,随表的存取而存取,因而是永久性变量。 3.内存变量 内存变量是在内存中定义的、一种单个数据元素的临时性变量。 (1)内存变量的数据类型 内存变量的数据类型包括:数值型、字符型、逻辑型、日期型和日期时间型; (2)内存变量的建立 建立内存变量就是给内存变量赋值。
命令格式:STORE <表达式> TO <内存变量表>命令功能:计算<表达式>的值并赋值给各个内存变量。 例如:STORE 0 TO AA,BB,CC 将数值0赋给变量AA,BB,CCSTORE “李四”TO NAME 将字符串“李四”赋给NAME命令格式:<内存变量> = <表达式>命令功能:计算<表达式>的值并赋值给指定内存变量。 例如:A=.T. 将逻辑真值赋给变量A
(3)内存变量的显示输出命令格式:?| ??<表达式表> 命令功能:计算表达式表中各表达式的值,并在屏幕上指定位置显示输出各式的值。 ?:先回车换行,再计算并输出表达式的值; ??:在屏幕上当前位置,计算并直接输出表达式的值;<表达式表>:多个用逗号两两分隔的表达式,各表达式的值输出时,以空格分隔。
命令格式: LIST MEMORY [LIKE<内存变量名框架>] [TO PRINTER[PROMPT]|TO FILE<文件名>] [NOCONSOLE] 命令功能:显示当前在内存中定义的自定义内存变量和系统内存变量。说明: LIKE<内存变量名框架>:可以通过它有选择地显示内存变量和数组信息。 TO PRINTER[PROMPT]:将显示结果在打印机上输出。 TO FILE<文件名>:将显示结果输出到指定的文件中,该文件为文本文件。NOCONSOLE:不在屏幕上显示。
命令格式: DISPLAY MEMORY [LIKE <内存变量框架名>] [TO PRINTER[PROMPT]|TO FILE<文件名>] [NOCONSOLE] 说明:LIST MEMORY与DISPLAY MEMORY的区别 LIST MEMORY显示内存变量时不暂停,在屏幕上只保留最后一屏内存变量。 DISPLAY MEMORY在显示内存变量时,若内存变量数超过一屏,则在每显示一屏后暂停,按任意键后继续显示。
(4)保存内存变量命令格式:SAVE TO <内存变量文件名> [ALL LIKE/ EXCEPT <内存变量名框架>] 功能:它将内存中的部分或全部内存变量以文件的形式存入磁盘,文件名由<内存变量文件名>指定,文件扩展名的缺省值为 .MEM。 说明:ALL LIKE<内存变量名框架>]:将符合<内存变量名框架>的那些变量存入指定的文件。 ALL EXCEPT <内存变量名框架>]:将不符合<内存变量名框架>的那些变量存入指定的文件。
例如:SAVE TO VAR1 将除系统内存变量以外所有内存变量保存到VAR1.MEM文件中。即:AA、BB、CC、NAME、A 。 SAVE TO VAR2 ALL LIKE ?A* 将第一个字符是任意字符,第二个字符是A的所有内存变量保存到VAR2.MEM文件中。即AA、NAME 。 SAVE TO VAR3 ALL EXCEPT ?A* 将自定义内存变量中第二个字符不是A的所有内存变量保存到VAR2.MEM文件中。即BB、CC、A。
(5)删除内存变量命令格式:RELEASE <内存变量名表>功能:删除指定的内存变量。当<内存变量名表>为多个变量时,变量名之间用“,”隔开。 命令格式:RELEASE ALL [LIKE|EXCEPT <内存变量名框架>]功能:删除指定的内存变量。省略所有选择项时,则删除所有的内存变量。命令格式:CLEAR MEMORY功能:删除当前内存中的所有内存变量。它和RELEASE ALL的效果完全相同。例如:RELEASE BB,CC LIST MEMORY LIKE * RELEASE ALL LIKE ?A* LIST MEMORY LIKE * RELEASE ALL LIST MEMORY LIKE *
(6)恢复内存变量 如果需要使用已保存的内存变量时,可用下述命令恢复 :命令格式:RESTORE FROM <内存变量文件名> 功能:它将<内存变量文件名>指定的内存变量文件中所保存的内存变量从磁盘读回内存重新使用。 参数描述: RESTORE:命令动词,表示执行恢复操作。 FROM <内存变量文件名> :指定恢复内存变量的来源。 [ADDITIVE] :保留当前内存中的内存变量,将指定文件中的内存变量添加到当前内存变量之后。 若省略ADDITIVE选择项,则内存中已有的内存变量全部释放,将指定文件中的内存变量调入内存。
例如:RESTORE FROM VAR1LIST MEMORY LIKE * RESTORE FROM VAR2LIST MEMORY LIKE *RESTORE FROM VAR3 ADDITIVE LIST MEMORY LIKE * 当内存变量名与字段变量名相同时,字段名优先于内存变量名,使用时可以在内存变量名前加上“M->”或“M.”以示区别。
4.数组变量 数组变量是一组具有相同名称、以下标相互区分的有序内存变量。一个数组通常都包含多个数据元素。Visual FoxPro系统中只允许使用一维数组和二维数组。 (1)数组元素 数组中各有序变量(数据元素)组成数组的成员,称为数组元素。 数组元素的名称用数组加下标构成。如AA(1),BB(2,3)分别表示一维数组AA的第1个元素,二维数组BB中第2行第3列的元素。
(2)数组的定义 数组必须先定义后使用,定义数组是向系统申请数组元素在内存中的存储空间。命令格式:DIMENSION | DECLARE <数组名1>(<数值表达式1>[,<数值表达式2>])[,<数组名2>(<数值表达式3>[,<数值表达式4>])…]说明:(1)<数组名1>:指定数组的名称,其规定与内存变量名相同。 (2)数组的下标的起始值为1 。 (3)同一数组中的数组元素可以有不同的数据类型 。 (4)二维数组中各元素按行的顺序依次排列 。例如:DIMENSION A(2,3),BB(4,8) DIMENSION A(6)
(3)数组的赋值与引用 数组元素的赋值与引用,与普通内存变量的规则相同。 除了可以分别对数组元素赋值以外,也可对数组中的所有元素赋同一初值。 5.系统变量 系统变量是Visual FoxPro系统特有的内存变量,它由Visual FoxPro系统定义、维护。系统变量有很多,其变量名均以下划线“_”开始,因此在定义内存变量和数组变量名时,不要以下划线开始,以免与系统变量名冲突。
Visual FoxPro的函数 Visual FoxPro系统中,函数是一段程序代码,用来进行一些特定的运算或操作。 Visual FoxPro的函数由函数名与自变量两部分组成。标准函数是Visual FoxPro系统提供的系统函数,其函数名是Visual FoxPro保留字,自定义函数是用户自已定义的函数,函数名用户指定;自变量必须用圆括号对括起来,如有多个自变量,各自变量以逗号分隔;有些函数可省略自变量,或不需自变量,但也必须保留括号。Visual FoxPro系统有数百种不同函数,按函数运算、处理对象和结果的数据类型,可分为数值型函数、字符型函数、日期时间型函数等。
数值函数 数值函数用于数值运算。 1.取绝对值函数ABS( ) 【格式】ABS(<nExp>) 【功能】计算nExp的值,并返回该值的绝对值。 2.指数函数EXP( ) 【格式】EXP(<nExp>) 【功能】求以e为底、nExp值为指数的幂。 3.取整函数INT( ) 【格式】INT(<nExp>) 【功能】计算nExp的值,返回该值的整数部分
4.自然对数函数LOG( ) 【格式】LOG(<nExp>) 【功能】求nExp的自然对数。nExp的值必须为正数。 5.常用对数函数 【格式】LOG10(<nExp>) 【功能】求nExp的常用对数。nExp的值必须为正数。 6.平方根函数SQRT( ) 【格式】SQRT(<nExp>) 【功能】求非负nExp的平方根。
7.最大值函数MAX( )和最小值函数MIN( ) 【格式】MAX(<nExp1>,<nExp2>[,< nExp3>...]) MIN(<nExp1>,<nExp2>[,< nExp3>...]) 【功能】返回数值表达式中的最大值和最小值。 8.求余数函数MOD( ) 【格式】MOD(<nExp1>,<nExp2>) 【功能】返回nExp1除以nExp2的余数。余数的小数位数与nExp1相同,符号与nExp2相同。 9.四舍五入函数ROUND( ) 【格式】ROUND(<nExp1>,< nExp2>) 【功能】返回nExp1四舍五入的值, nExp2表示保留的小数位数。
10.π函数PI( ) 【格式】PI( ) 【功能】返回常量π的近似值 11.正弦函数SIN( ) 【格式】SIN(<nExp>) 【功能】返回nExp的正弦值。nExp以弧度为单位,函数值域为[-1,1]。 12.余弦函数COS( ) 【格式】COS(<nExp>) 【功能】返回nExp的余弦值。nExp以弧度为单位,函数的值域为[-1,1]。 13.正切函数TAN( ) 【格式】TAN(<nExp>) 【功能】返回nExp的正切值。nExp以弧度为单位,其值为π/2或- π/2时,系统返回一个绝对值很大的数。
字符函数 字符函数是处理字符型数据的函数。 1.子串位置函数 【格式】AT(<cExp1>,< cExp 2>) 【功能】返回串cExp1在串cExp2中的起始位置。函数值为整数。如果串cExp2不包含串cExp1,函数返回值为零。 2.取左子串函数LEFT( ) 【格式】LEFT(<cExp>,<nExp>) 【功能】返回从cExp串中第一个字符开始,截取nExp个字符的子串。 3.取右子串函数RIGHT( ) 【格式】RIGHT(<cExp >,< nExp>) 【功能】返回从cExp串中右边第一个字符开始,截取nExp个字符的子串。有关说明同LEFT( )函数。
4.取子串函数SUBSTR( ) 【格式】SUBSTR (<cExp>,<nExp1> [,< nExp2>] ) 【功能】返回从串cExp中第nExp1个字符开始,截取nExp2个字符的子串。 5.字符串长度函数LEN( ) 【格式】LEN(<cExp>) 【功能】返回cExp串的字符数(长度)。函数值为N型。 6.删除字符串前导空格函数LTRIM( ) 【格式】LTRIM(<cExp>) 【功能】删除cExp串的前导空格字符。 7.删除字符串尾部空格函数RTRIM( ) 【格式】RTRIM (<cExp>) 【功能】删除cExp串尾部空格字符。
8.删除字符串最左边和最右边的所有空格函数ALLTRIM( ) 【格式】ALLTRIM(<cExp>) 【功能】删除cExp串左边和最右边的所有空格。9.空格函数SPACE( ) 【格式】SPACE (<nExp>) 【功能】返回一个包含nExp个空格的字符串。 10.字符复制函数 REPLICATE( ) 【格式】REPLICATE (<cExp>,<nExp>) 【功能】返回将cExp串重复nExp次的字符串。 11.大小写转换函数LOWER( ) 和UPPER( ) 【格式】LOWER (<cExp>) UPPER (<cExp>) 【功能】LOWER( )将cExp串中字母全部变成小写字母,UPPER( )将cExp串中字母全部变成大写字母,其它字符不变。
日期时间函数 日期时间函数是处理日期型或日期时间型数据的函数。 1.系统日期函数DATE( ) 【格式】DATE() 【功能】返回当前系统日期,此日期由Windows系统设置。函数值为D型。 2.系统时间函数TIME( ) 【格式】TIME() 【功能】返回当前系统时间,时间显示格式为hh:mm:ss。函数值为C型。 3.日期函数DAY( ) 【格式】DAY(<dExp>) 【功能】返回dExp式中的天数。函数值为N型。
4.星期函数DOW( )、CDOW( ) 【格式】DOW(<dExp>) CDOW(<dExp>) 【功能】DOW( )函数返回dExp式中星期的数值,用1~7表示星期日~星期六。函数值为N型。CDOW( ) 函数返回dExp式中星期的英文名称。函数值为C型。 5.月份函数MONTH( )、CMONTH( ) 【格式】MONTH(<dExp>) CMONTH(<dExp>) 【功能】MONTH( )函数返回dExp式中月份数。函数值为N型。CMONTH( )函数则返回月份的英文名。函数值为C型。 6.年份函数YEAR( ) 【格式】YEAR(<dExp>) 【功能】函数返回dExp式中年份值。函数值为N型。
转换函数 在数据库应用的过程中,经常要将不同数据类型的数据进行相应转换。Visual FoxPro系统提供了若干个转换函数。 1.ASCII码函数ASC( ) 【格式】ASC (<cExp>) 【功能】返回cExp串首字符的ASCII码值。函数值为N型。 2.ASCII字符函数CHR( ) 【格式】CHR(<nExp >) 【功能】返回以nExp值为ASCII码的ASCII字符。函数值为C型。 3.字符日期型转换函数CTOD( ) 【格式】CTOD(<cExp>) 【功能】把“××/××/××”格式的cExp串转换成对应日期值。函数值为D型。
4.日期字符型转换函数DTOC( ) 【格式】DTOC(<dExp>) 【功能】把日期dExp转换成相应的字符串。函数值为C型。5.数值字符型转换函数STR( ) 【格式】STR(<nExp1>[,< nExp2>][,< nExp3>]) 【功能】将nExp1的数值转换成字符串形式。函数值为C型。6.字符数值型转换函数VAL( ) 【格式】VAL (<cExp>) 【功能】将cExp串中数字转换成对应数值,转换结果取两位小数。函数值为N型。
测试函数 用于了解数据对象的类型、状态等属性。 1.数据类型函数TYPE( ) VARTYPE( ) 【格式】TYPE(<cExp>) VARTYPE(<Exp>) 【功能】TYPE(<cExp>)返回cExp串表示的数据的数据类型。VARTYPE(<Exp>)返回Exp表达式的数据类型。返回值是一个表示数据类型的大写字母。C:字符型,D:日期型,N:数值型,L:逻辑型,M:备注型,G:通用型,U:未定义。 2.文件查找函数FILE() 【格式】FILE(<cExp>) 【功能】根据cExp串中指定路径查找文件,如未指定路径,则在默认目录中查找。文件存在,返回逻辑真(.T.) 值,否则为逻辑假(.F.)值。
3.条件测试函数IIF( ) 【格式】IIF(<lExp >,<eExp 1>,<eExp2>) 【功能】逻辑表达式lExp值为真(.T.),返回表达式eExp1的值,否则返回表达式eExp2的值。eExp1和eExp2可以是任意数据类型的表达式。 4.表结束标志测试函数EOF( ) 【格式】EOF([<工作区号> | <别名>]) 【功能】测试记录指针是否移到表结束处。如果记录指针指向表中尾记录之后,函数返回真(.T.),否则为假(.F.)。 5.表起始标识测试函数BOF ( ) 【格式】BOF ([<工作区号> | <别名>]) 【功能】测试记录指针是否移到表起始处。如果记录指针指向表中首记录前面,函数返回真(.T.),否则为假(.F.)。工作区说明见EOF()函数。
6.当前记录号函数RECNO( ) 【格式】RECNO([<工作区号> | <别名>]) 【功能】返回指定工作区中表的当前记录的记录号。对于空表返回值为1。 7.当前记录逻辑删除标志测试函数DELETED( ) 【格式】DELETED([<工作区号> | <别名>]) 【功能】测试指定工作区中表的当前记录是否被逻辑删除。如果记有逻辑删除标记,函数返回真(.T.),否则为假(.F.)。 8.记录数函数RECCOUNT( ) 【格式】RECCOUNT ([<工作区号> | <别名>]) 【功能】返回指定工作区中表的记录个数。如果工作区中没有打开表则返回0。
9.屏幕列坐标和行坐标函数 COL( )、ROW( ) 【格式】COL( ) ROW( ) 【功能】COL( )返回光标的列坐标值,ROW( )返回光标的行坐标值。 除了系统(标准)函数外, Visual FoxPro系统还允许用户自定义函数。
运算符 功能 表达式举例 运算结果 优先级别 ( ) 圆括号 (2-5)*(3+2) -15 最高 | | | | 最低 - 取相反数 -(3-8) 5 **、^ 乘幂 2**5、3^2 32、9 *、/ 乘、除 2*10、25/5 20、5 % 取余数 20%5 0 +、- 加、减 36+19、29-47 55、-18 Visual FoxPro的表达式 在Visual FoxPro系统中,表达式是由常量、变量、函数单独或与运算符组成的有意义的式子。 表达式分为算术表达式、字符表达式、日期时间表达式、逻辑表达式和关系表达式五类。算术表达式算术表达式又称数值表达式。数值运算符的功能及运算优先顺序,如下表所示。
运算符 功能 表达式举例 运算结果 + 串1+串2:两串顺序相连接 ‘12 ’+‘56’ ‘12 56’ - 串1-串2:串1尾空格移到串2尾后再顺序相连接 ‘12 ’-‘56’ ‘1256 ’ $ 串1$串2:串1是否为串2子串 ‘1234’$ ‘a12345’ ‘1234’$ ‘34512’ .T. .F. 字符表达式“+”与 “-”都是字符连接运算符,都将两字符串顺序连接,但“+”是直接连接,“-”则将串1尾部所有空格移到串2尾部后再连接。“$”运算实质上是比较两个串的包含关系,其作用是比较、判断串1是否为串2的子串,如果串1是串2的子串,运算结果为“真”,否则为“假”。
日期表达式 日期运算符分为“+”和“-”两种,可在日期型数据上增加或减少一个天数,在日期时间型数据上增加或减少一个秒数。两个日期型数据相减等于间隔的天数,两个日期时间型数据相减等于间隔的秒数。例如:{12/15/03}-{12/11/03}的结果为4{12/15/03}-4的结果为{12/11/03} {12/15/03}+4的结果为{12/19/03}注意:两个日期型数据不能相加,两个日期时间型数据也不能相加。
运算符 功能 表达式举例 结果 < 小于 15<4*6 .T. > 大于 ‘A’ > ‘1’ .T. = 等于 2+4 = 3*5 .F. <>、#、!= 不等于 5 <> -10 .T. <= 小于或等于 'bc' <= ‘ab' .F. >= 大于或等于 {10/10/02}>={10/01/02} .T. == 字符串恒同 ‘abc’==’abcabc’ .F. 关系表达式关系表达式的值为逻辑值,关系表达式成立则其值为“真”,否则为“假”。 日期型或日期时间型数据以日期或时间的先后顺序为序。
字符型数据的比较相对复杂,默认规则为: (1)单个字符:单个字符的比较是以字符ASCII码的大小,作为字符的“大小”,也就是先后顺序。(2)字符串:两个字符串进行比较的基本原则是从左到右逐个字符进行比较,但因系统相关设置状态不同,比较的结果不完全相同。相等比较:用运算符=进行两串比较时,或者到达右端串的末尾字符为止(当SET EXACT OFF时),或者当到达两串的末端为止(当SET EXACT ON时),以判断两串是否相等。恒等比较:用运算符==进行两串的恒同比较时,不论SET EXACT的设置如何,只有当两串长度相同,字符相同,排列一致时才成立。大小比较:用运算符<或>进行两串比较时,比较到第1个不相同字符为止,否则,长度较长的串较“大”。(3)汉字:系统默认以汉字的拼音顺序比较“大小”。
运算符 A B A .AND.B 功能 A .OR. B 优先级别 .NOT A .T. ( ) .T. .T. 圆括号 .T. 最高 | | 最低 .F. .T. .NOT.或! .F. .F. 逻辑非 .T. .F. .AND. .F. .T. .F. 逻辑与 .T. .T. .F. .OR. .F. .F. 逻辑或 .F. .T. 逻辑表达式 由逻辑运算符将逻辑型数据连接而成的式子称为逻辑表达式。 逻辑运算真值表
在Visual FoxPro系统中,各类运算的优先顺序如下: 圆括号>算术和日期运算>字符串运算>关系运算>逻辑运算 多个同一级别的运算,则按在表达式中出现的先后顺序进行运算。
建立表 定义数据表的结构 建立表时,首先要定义数据表的结构。 在Visual FoxPro 系统中,一张二维表对应一个数据表,称为表文件。 一张二维表由表名、表头、表的内容三部分组成,一个数据表则由数据表名、数据表的结构、数据表的记录三要素构成。 定义数据表的结构,就是根据二维表的定义来确定数据表的结构。即确定表的组织形式,定义表中的字段名、字段类型、字段宽度及是否以该字段建立索引等。(1)字段名:必须以字母或汉字开头,可以包括字母、汉字、数字和下划线,不要超过10个字符。示例:姓名、XB、班级BJ、班级2、班级_2