FoxPro的数据及其运算.ppt

上传人:壹****1 文档编号:571919703 上传时间:2024-08-12 格式:PPT 页数:96 大小:429.81KB
返回 下载 相关 举报
FoxPro的数据及其运算.ppt_第1页
第1页 / 共96页
FoxPro的数据及其运算.ppt_第2页
第2页 / 共96页
FoxPro的数据及其运算.ppt_第3页
第3页 / 共96页
FoxPro的数据及其运算.ppt_第4页
第4页 / 共96页
FoxPro的数据及其运算.ppt_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《FoxPro的数据及其运算.ppt》由会员分享,可在线阅读,更多相关《FoxPro的数据及其运算.ppt(96页珍藏版)》请在金锄头文库上搜索。

1、1Visual FoxProVisual FoxPro3.1 Visual FoxPro的数据类型的数据类型3.2 Visual FoxPro的常量与变量的常量与变量3.3 Visual FoxPro的内部函数的内部函数3.4 Visual FoxPro的表达式的表达式2Visual FoxProVisual FoxPro1字符型字符型字符型(字符型(Character)数据是不能进行算术运算的数据是不能进行算术运算的文字数据类型,用字母文字数据类型,用字母C表示。字符型数据包表示。字符型数据包括中文字符、英文字符、数字字符和其他括中文字符、英文字符、数字字符和其他ASCII字符,其长度(即字

2、符个数)范围是字符,其长度(即字符个数)范围是0254个字符。个字符。3.1 3.1 Visual FoxProVisual FoxPro的数据类型的数据类型3Visual FoxProVisual FoxPro2数值型数值型数值型(数值型(Numeric)数据是表示数量并可以数据是表示数量并可以进行算术运算的数据类型,用字母进行算术运算的数据类型,用字母N表示。表示。数值型数据由数字、小数点和正负号组成。数值型数据由数字、小数点和正负号组成。数值型数据在内存中占用数值型数据在内存中占用8个字节,相应的个字节,相应的字段变量其长度(数据位数)最大字段变量其长度(数据位数)最大20位。位。在在V

3、isual FoxPro中,具有数值特征的数据类中,具有数值特征的数据类型还有整型(型还有整型(Integer)、)、浮点型(浮点型(Float)和双精度型(和双精度型(Double),),不过这不过这3种数据类种数据类型只能用于字段变量。型只能用于字段变量。4Visual FoxProVisual FoxPro3货币型货币型 货币型(货币型(Currency)数据是为存储货币值而使用的一数据是为存储货币值而使用的一种数据类型,它默认保留种数据类型,它默认保留4位小数,占据位小数,占据8字节存储字节存储空间。货币型数据用字母空间。货币型数据用字母Y表示。表示。4日期型日期型日期型(日期型(Da

4、te)数据是表示日期的数据,用字母数据是表示日期的数据,用字母D表表示。日期的默认格式是示。日期的默认格式是mm/dd/yy,其中其中mm表示表示月份,月份,dd表示日期,表示日期,yy表示年度,年度也可以是表示年度,年度也可以是4位。日期型数据的长度固定为位。日期型数据的长度固定为8位。日期型数据的显位。日期型数据的显示格式有多种,它受系统日期格式设置的影响。示格式有多种,它受系统日期格式设置的影响。5Visual FoxProVisual FoxPro5日期时间型日期时间型 日期时间型(日期时间型(Date Time)数据是表示日期和时间的数据是表示日期和时间的数据,用字母数据,用字母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。如。如08/16/2003 10:35:30表表示示2003年年8月月16日日10时时35分分30秒这一日期和时间。秒这一日期和时间。6Visual FoxProVisu

6、al FoxPro6逻辑型逻辑型逻辑型(逻辑型(Logic)数据是描述客观事物真假数据是描述客观事物真假的数据类型,表示逻辑判断的结果,用字的数据类型,表示逻辑判断的结果,用字母母L表示。逻辑型数据只有真(表示。逻辑型数据只有真(.t.或或.y.)和假(和假(.f.或或.n.)两种,长度固定为两种,长度固定为1位。位。7Visual FoxProVisual FoxPro7备注型备注型 备注型(备注型(Memo)数据是用于存放较多字符的数据数据是用于存放较多字符的数据类型,用字母类型,用字母M表示。备注型数据没有数据长度限表示。备注型数据没有数据长度限制,仅受限于磁盘空间。它只用于表中字段类型

7、的制,仅受限于磁盘空间。它只用于表中字段类型的定义,字段长度固定为定义,字段长度固定为4个字节,实际数据存放在个字节,实际数据存放在与表文件同名的备注文件(与表文件同名的备注文件(.fpt)中,长度根据数中,长度根据数据的内容而定。据的内容而定。8Visual FoxProVisual FoxPro8通用型通用型通用型(通用型(General)数据是存储数据是存储OLE(对象链对象链接与嵌入)对象的数据类型,用字母接与嵌入)对象的数据类型,用字母G表示。表示。通用型数据中的通用型数据中的OLE对象可以是电子表格、文对象可以是电子表格、文档、图形、声音等。它只用于表中字段类型的档、图形、声音等。

8、它只用于表中字段类型的定义。通用型数据字段长度固定为定义。通用型数据字段长度固定为4位,实际位,实际数据长度仅受限于磁盘空间。数据长度仅受限于磁盘空间。9二进制字符型和二进制备注型二进制字符型和二进制备注型这两类数据是以二进制格式存储的数据类型,这两类数据是以二进制格式存储的数据类型,只能用在表中字段数据的定义。所存储的数据只能用在表中字段数据的定义。所存储的数据不受代码页改变的影响。不受代码页改变的影响。9Visual FoxProVisual FoxPro3.2.1 常量常量1字符型常量字符型常量 字符型常量是用定界符括起来的一串字符。在字符型常量是用定界符括起来的一串字符。在Visual

9、 FoxPro中,定界符有中,定界符有3种:单撇号、双撇号和方括种:单撇号、双撇号和方括号。如号。如Central South University、410075、教教授授等都是字符型常量。等都是字符型常量。 如果某一种定界符本身是字符型常量中的字符,就如果某一种定界符本身是字符型常量中的字符,就应选择另一种定界符。例如,应选择另一种定界符。例如,Thats right!表示表示字符常量字符常量:Thats right!,含有含有13个字符。个字符。3.2 3.2 Visual FoxProVisual FoxPro的常量与变量的常量与变量10Visual FoxProVisual FoxPr

10、o2数值型常量数值型常量 数值型常量就是平时所讲的常数,由数字、小数数值型常量就是平时所讲的常数,由数字、小数点和正负号组成。在点和正负号组成。在Visual FoxPro中,数值型常中,数值型常量有两种表示方法:小数形式和指数形式。如量有两种表示方法:小数形式和指数形式。如75、-3.75是小数形式的数值型常量。指数形式通常用是小数形式的数值型常量。指数形式通常用来表示那些绝对值很大或很小、而有效位数不太来表示那些绝对值很大或很小、而有效位数不太长的一些数值,对应于日常应用中的科学记数法。长的一些数值,对应于日常应用中的科学记数法。11Visual FoxProVisual FoxPro指数

11、形式用字母指数形式用字母E来表示以来表示以10为底的指数,为底的指数,E左边为数字部分,称为尾数,右边为指左边为数字部分,称为尾数,右边为指数部分,称为阶码。阶码只能是整数,尾数部分,称为阶码。阶码只能是整数,尾数可以是整数,也可以是小数。尾数与阶数可以是整数,也可以是小数。尾数与阶码均可正可负。例如,常量码均可正可负。例如,常量0.694710-6、4.9523109分别用指数形式表示为分别用指数形式表示为0.6947E-6、4.9523E9。12Visual FoxProVisual FoxPro3货币型常量货币型常量货币型常量的书写格式与数值型常量类似,但要加上货币型常量的书写格式与数值

12、型常量类似,但要加上一个前置的一个前置的$。货币型数据在存储和计算时,采用。货币型数据在存储和计算时,采用4位小数。如果一个货币型常量多于位小数。如果一个货币型常量多于4位小数,那么系位小数,那么系统会自动将多余的小数位四舍五入。例如,货币型统会自动将多余的小数位四舍五入。例如,货币型常量常量$3.1415926将存储为将存储为$3.1416。货币型常量不能。货币型常量不能采用指数形式。采用指数形式。4日期型常量日期型常量日期型常量要放在一对花括号中,花括号内包括年、日期型常量要放在一对花括号中,花括号内包括年、月、日月、日3部分内容,各部分内容之间用分隔符分隔。部分内容,各部分内容之间用分隔

13、符分隔。分隔符可以是分隔符可以是/、-、.等。等。Visual FoxPro的默认日的默认日期格式是期格式是mm/dd/yyyy。13Visual FoxProVisual FoxPro5日期时间型常量日期时间型常量 日期时间型常量也要放在一对花括号中,其中既含日期时间型常量也要放在一对花括号中,其中既含日期又含时间。日期的格式与日期型常量相同,时日期又含时间。日期的格式与日期型常量相同,时间包括时、分、秒,时分秒之间用间包括时、分、秒,时分秒之间用“:”分隔。日期分隔。日期时间型常量的默认格式是:时间型常量的默认格式是: mm/dd/yyyy , hh:mm:ssa|p 其中其中hh、mm、

14、ss的默认值分别为的默认值分别为12、0和和0。a和和p分别表示分别表示AM(上午)和上午)和PM(下午),默认为下午),默认为AM。如果指定时间大于等于如果指定时间大于等于12,则自然为下午的时间。,则自然为下午的时间。14Visual FoxProVisual FoxPro 日期值和日期时间值的输入格式与输出格式并不完日期值和日期时间值的输入格式与输出格式并不完全相同,特别是输出格式受系统环境设置的影响,全相同,特别是输出格式受系统环境设置的影响,用户可根据应用需要进行相应设置。下面介绍有关用户可根据应用需要进行相应设置。下面介绍有关命令。命令。(1)日期格式中的世纪值)日期格式中的世纪值

15、 通常日期格式中用通常日期格式中用2位数表示年份,但涉及到世纪位数表示年份,但涉及到世纪问题就不便区分。问题就不便区分。Visual FoxPro提供设置命令对此提供设置命令对此进行相应设置。进行相应设置。命令格式:命令格式:SET CENTURY ON | OFF | TO nCentury15Visual FoxProVisual FoxPro命令功能:用于设置显示日期时是否显示世纪。命令功能:用于设置显示日期时是否显示世纪。其中,其中,ON表示日期值输出时显示年份值,即日表示日期值输出时显示年份值,即日期数据显示期数据显示10位,年份占位,年份占4位。位。OFF(默认值)默认值)表示日期

16、值输出时不显示年份值,即日期数据显表示日期值输出时不显示年份值,即日期数据显示示8位,年份占位,年份占2位。位。TO nCentury指定日期数指定日期数据所对应的世纪值,据所对应的世纪值,nCentury是一个是一个199的整的整数,代表世纪数。数,代表世纪数。16Visual FoxProVisual FoxPro(2)设置日期显示格式)设置日期显示格式用户可以调整、设置日期的显示输出格式。用户可以调整、设置日期的显示输出格式。命令格式:命令格式:SET DATE TO AMERICAN | ANSI | BRITISH | FRENCH | GERMAN | ITLIAN | JAPAN

17、 | USA | MDY | DMY | YMD | SHORT | LONG命令功能:设置日期的显示输出格式。系统默认为命令功能:设置日期的显示输出格式。系统默认为AMERICAN(美国日期格式)。如果日期格式设美国日期格式)。如果日期格式设置为置为SHORT或或LONG格式,格式,Visual FoxPro将按将按Windows系统设置的短日期格式或长日期格式显示系统设置的短日期格式或长日期格式显示输出日期数据,而且输出日期数据,而且SET CENTURY命令的设置被命令的设置被忽略。忽略。17Visual FoxProVisual FoxPro(3)设置日期分隔符)设置日期分隔符命令格式

18、:命令格式:SET MARK TO 日期分隔符日期分隔符命令功能:设置显示日期时使用的分隔符,如命令功能:设置显示日期时使用的分隔符,如/、-、.等。如没有指定任何分隔符,则恢复系统默认的斜等。如没有指定任何分隔符,则恢复系统默认的斜杠分隔符。杠分隔符。(4)设置日期)设置日期2000年兼容性年兼容性通常日期型和日期时间型数据的结果,通常日期型和日期时间型数据的结果,与与SET DATE命令和命令和SET CENTURY命令设置状态及当前系统时命令设置状态及当前系统时间有关。由于系统时间与相应设置不同,同一数据间有关。由于系统时间与相应设置不同,同一数据的结果可能有不同的解释。如日期值的结果可

19、能有不同的解释。如日期值10/11/12可可以解释为以解释为1912年年10月月11日、日、2012年年10月月11日、日、1912年年11月月10日、日、1910年年11月月12日或者日或者2010年年11月月12日日等。这显然会导致系统混乱,而且还可能造成等。这显然会导致系统混乱,而且还可能造成2000年兼容性错误,影响系统正常运行。年兼容性错误,影响系统正常运行。18Visual FoxProVisual FoxPro Visual FoxPro增加了一种所谓严格的日期格式。不增加了一种所谓严格的日期格式。不论哪种设置,按严格日期格式表示的日期型和日期论哪种设置,按严格日期格式表示的日期

20、型和日期时间型数据,都具有相同的值和表示形式。严格的时间型数据,都具有相同的值和表示形式。严格的日期格式是日期格式是: yyyy-mm-dd,hh:mm:ssa|p 其中,其中,表明该格式是严格的日期格式,并按照表明该格式是严格的日期格式,并按照YMD的格式解释日期型和日期时间型数据,它是严格日的格式解释日期型和日期时间型数据,它是严格日期格式的标志,不可缺少。有效的日期型和日期时期格式的标志,不可缺少。有效的日期型和日期时间型数据分隔符为:间型数据分隔符为:/、-、.和空格。如和空格。如2003-08-16、2003-08-16 10:35:30a,分别以严格的日期分别以严格的日期格式表示格

21、式表示2003年年8月月16日及该日上午日及该日上午10时时35分分30秒。秒。19Visual FoxProVisual FoxPro Visual FoxPro默认采用严格的日期格式,并以此检默认采用严格的日期格式,并以此检测所有日期型和日期时间型数据的格式是否规范、测所有日期型和日期时间型数据的格式是否规范、合法。合法。命令格式:命令格式:SET STRICTDATE TO 0 | 1 | 2命令功能:用于设置是否对日期格式进行检测。其中,命令功能:用于设置是否对日期格式进行检测。其中,0表示不进行严格的日期格式检测。表示不进行严格的日期格式检测。1表示进行严格表示进行严格的日期格式检测

22、(默认值),要求所有日期型和日的日期格式检测(默认值),要求所有日期型和日期时间型数据均按严格的格式。期时间型数据均按严格的格式。2表示进行严格的日表示进行严格的日期格式检测,并且对期格式检测,并且对CTOD和和CTOT函数的格式也函数的格式也有效。省略各选项时,恢复系统默认值,等价于有效。省略各选项时,恢复系统默认值,等价于1的的设置。设置。20Visual FoxProVisual FoxPro除了利用命令方式设置外,也可以用菜单除了利用命令方式设置外,也可以用菜单方式进行设置设置。方式进行设置设置。在在“工具工具”菜单中选菜单中选择择“选项选项”,将打开,将打开“选项选项”对话框,在对话

23、框,在“区域区域”选项卡中可以设置日期和时间的选项卡中可以设置日期和时间的显示格式。在显示格式。在“常规常规”选项卡中可以设置选项卡中可以设置2000年兼容性。年兼容性。21Visual FoxProVisual FoxPro6逻辑型常量逻辑型常量 逻辑型常量表示逻辑判断的结果,只有逻辑型常量表示逻辑判断的结果,只有“真真”和和“假假”两种值。在两种值。在Visual FoxPro中,逻辑真用中,逻辑真用.T.、.t.、.Y.或或.y.表示,逻辑假用表示,逻辑假用.F.、.f.、.N.或或.n.表示。注意字母前后的圆点一定不能丢。表示。注意字母前后的圆点一定不能丢。22Visual FoxPr

24、oVisual FoxPro3.4.2 变量变量 变量是在操作过程中可以改变其值的数据对象。在变量是在操作过程中可以改变其值的数据对象。在Visual FoxPro中变量分为字段变量、内存变量、数中变量分为字段变量、内存变量、数组变量和系统变量组变量和系统变量4类。此外,作为面向对象的程序类。此外,作为面向对象的程序设计语言,设计语言,Visual FoxPro在进行面向对象的程序设在进行面向对象的程序设计中引入了对象的概念,对象实质上也是一类变量。计中引入了对象的概念,对象实质上也是一类变量。确定一个变量,需要确定其确定一个变量,需要确定其3个要素:变量名、数据个要素:变量名、数据类型和变量

25、值。类型和变量值。23Visual FoxProVisual FoxPro1命名规则命名规则(1)使用字母、汉字、下划线和数字命名。)使用字母、汉字、下划线和数字命名。(2)命名以字母或下划线开头。除自由表中)命名以字母或下划线开头。除自由表中字段名、索引的字段名、索引的TAG标识名最多只能标识名最多只能10个字个字符外,其他的命名可使用符外,其他的命名可使用1128个字符。个字符。(3)为避免误解、混淆,避免使用)为避免误解、混淆,避免使用Visual FoxPro的保留字。的保留字。(4)文件名的命名应遵循操作系统的约定。)文件名的命名应遵循操作系统的约定。24Visual FoxProV

26、isual FoxPro2字段变量字段变量 字段变量就是表中的字段名,它是表中最基本的数字段变量就是表中的字段名,它是表中最基本的数据单元。字段变量是一种多值变量,一个表有多少据单元。字段变量是一种多值变量,一个表有多少条记录,那么该表的每一字段就有多少个值,当用条记录,那么该表的每一字段就有多少个值,当用某一字段名做变量时,它的值就是表记录指针所指某一字段名做变量时,它的值就是表记录指针所指的那条记录对应字段的值。字段变量的类型可以的那条记录对应字段的值。字段变量的类型可以是是Visual FoxPro的任意数据类型。字段变量的名字、的任意数据类型。字段变量的名字、类型、长度等是在定义表结构

27、时定义的。类型、长度等是在定义表结构时定义的。25Visual FoxProVisual FoxPro3内存变量内存变量 Visual FoxPro中,除了字段变量外,还有一种变量中,除了字段变量外,还有一种变量,它独立于表,是一种临时工作单元,称为内存变,它独立于表,是一种临时工作单元,称为内存变量。内存变量的类型有字符型、数值型、货币型、量。内存变量的类型有字符型、数值型、货币型、逻辑型、日期型和日期时间型等。逻辑型、日期型和日期时间型等。 可直接用内存变量名对内存变量进行访问,但若它可直接用内存变量名对内存变量进行访问,但若它与字段变量同名时,则应该用如下格式进行访问:与字段变量同名时,

28、则应该用如下格式进行访问: M.内存变量名内存变量名 M-内存变量名内存变量名26Visual FoxProVisual FoxPro(1)内存变量的赋值)内存变量的赋值给内存变量赋值的命令有两种格式:给内存变量赋值的命令有两种格式:=STORE TO 该命令先计算表达式的值,然后将表达式的值赋给一该命令先计算表达式的值,然后将表达式的值赋给一个或几个内存变量。第一种格式只能给一个内存变个或几个内存变量。第一种格式只能给一个内存变量赋值。第二种格式可以同时给多个内存变量赋相量赋值。第二种格式可以同时给多个内存变量赋相同的值,各内存变量名之间用逗号分隔。内存变量同的值,各内存变量名之间用逗号分隔

29、。内存变量的数据类型取决于表达式值的类型。可以通过对内的数据类型取决于表达式值的类型。可以通过对内存变量重新赋值来改变其值和类型。存变量重新赋值来改变其值和类型。27Visual FoxProVisual FoxPro(2)内存变量的显示)内存变量的显示可可以以用用命命令令显显示示当当前前已已定定义义的的内内存存变变量量的的有有关关信信息息,包括变量名、作用域、类型和取值。命令格式为:包括变量名、作用域、类型和取值。命令格式为:DISPLAY MEMORY LIKE TO PRINTERTO FILE LIST MEMORY LIKE TO PRINTERTO FILE 其其中中,LIKE选选

30、项项表表示示显显示示与与通通配配符符相相匹匹配配的的内内存存变变量量,在在中中允允许许使使用用符符号号?和和*,分分别别代代表表单单个个字字符符和和多多个个字字符符。TO PRINTER或或TO FILE 选选项项可可将将内内存存变变量量的的有有关关信信息息在在打打印印机机上上打打印印出出来来,或或者者以以给给定定的的文文件件名名存存入入文文本本文文件件中中(扩扩展展名名为为.txt)。)。28Visual FoxProVisual FoxPro LIST命令一次显示所有内存变量,如果内存变命令一次显示所有内存变量,如果内存变量多,一屏显示不下,则连续向上滚动。而量多,一屏显示不下,则连续向上

31、滚动。而DISPLY命令分屏显示所有内存变量,如果内命令分屏显示所有内存变量,如果内存变量多,显示一屏后暂停,按任意键后再继存变量多,显示一屏后暂停,按任意键后再继续显示下一屏。续显示下一屏。 29Visual FoxProVisual FoxPro(3)内存变量文件的建立)内存变量文件的建立将所定义的内存变量的各种信息全都保存到一个文件将所定义的内存变量的各种信息全都保存到一个文件中,该文件称为内存变量文件。其默认的扩展名为中,该文件称为内存变量文件。其默认的扩展名为.mem。建立内存变量文件命令的格式为:建立内存变量文件命令的格式为:SAVE TO ALL LIKE|EXCEPT 其中,其

32、中,ALL表示将全部内存变量存入文件中。表示将全部内存变量存入文件中。ALL LIKE 表示内存变量中所有与通配符相匹表示内存变量中所有与通配符相匹配的内存变量都存入文件。配的内存变量都存入文件。ALL EXCEPT 表示把与通配符不匹配的全部内存变量存入文件表示把与通配符不匹配的全部内存变量存入文件中。中。30Visual FoxProVisual FoxPro(4)内存变量的恢复)内存变量的恢复内存变量的恢复是指将已存入内存变量文件中的内存内存变量的恢复是指将已存入内存变量文件中的内存变量从文件中读出,装入内存中。其命令格式为:变量从文件中读出,装入内存中。其命令格式为:RESTORE F

33、ROM ADDITIVE若命令中含有若命令中含有ADDITIVE任选项,系统不清除内存中任选项,系统不清除内存中现有的内存变量,并追加文件中的内存变量。现有的内存变量,并追加文件中的内存变量。31Visual FoxProVisual FoxPro(5)内存变量的清除)内存变量的清除清除内存变量并释放相应的内存空间,所采用命清除内存变量并释放相应的内存空间,所采用命令的格式为:令的格式为:CLEAR MEMORYRELEASE ALL LIKE|EXCEPT 其中第一条命令是清除所有的内存变量,第二条其中第一条命令是清除所有的内存变量,第二条命令是清除指定的内存变量。命令是清除指定的内存变量。

34、32Visual FoxProVisual FoxPro4数组变量数组变量在在Visual FoxPro中,数组变量被定义为一组变量的中,数组变量被定义为一组变量的集合,这些变量可以具有不同的数据类型。数组集合,这些变量可以具有不同的数据类型。数组由数组元素组成,每个数组元素就相当于一个内由数组元素组成,每个数组元素就相当于一个内存变量,它可以用数组名后接顺序号来表示,顺存变量,它可以用数组名后接顺序号来表示,顺序号也叫下标。序号也叫下标。(1)数组的定义)数组的定义Visual FoxPro规定,数组在使用之前必须用数组说规定,数组在使用之前必须用数组说明命令进行定义,即定义数据名、维数和大

35、小。明命令进行定义,即定义数据名、维数和大小。其命令格式为:其命令格式为:DIMENSION (,下标上界下标上界2),DECLARE (,下标上界下标上界2),33Visual FoxProVisual FoxPro两条命令的功能完全相同,用于定义一维或二维两条命令的功能完全相同,用于定义一维或二维数组。下标上界是一数值量,下标的下界由系数组。下标上界是一数值量,下标的下界由系统统一规定为统统一规定为1。数组一经定义,它的每个元素都可当作一个内存数组一经定义,它的每个元素都可当作一个内存变量来使用,因此它具有与内存变量相同的性变量来使用,因此它具有与内存变量相同的性质。质。Visual Fo

36、xPro命令行中可以使用内存变量命令行中可以使用内存变量的地方都能用数组元素代替。的地方都能用数组元素代替。34Visual FoxProVisual FoxPro(2)数组的赋值)数组的赋值可以使用赋值命令给数组元素赋值,也可以给整个数可以使用赋值命令给数组元素赋值,也可以给整个数组的各个元素赋以相同的值。例如命令:组的各个元素赋以相同的值。例如命令:b=73为上面定义的二维数组为上面定义的二维数组b的的6个元素都赋以同样的值个元素都赋以同样的值73。在没有向数组元素赋值之前,数组元素的初值均为逻在没有向数组元素赋值之前,数组元素的初值均为逻辑假(辑假(.F.)值。值。在在Visual Fo

37、xPro中,二维数组各元素在内存中按行的中,二维数组各元素在内存中按行的顺序存储,它们也可按一维数组元素的顺序来存取顺序存储,它们也可按一维数组元素的顺序来存取数据。如上述二维数组数据。如上述二维数组b中的元素中的元素b(2,1)是排在第是排在第2行行第第1列,由于每一行是列,由于每一行是3个元素,所以个元素,所以b(2,1)也可也可按按b(4)表示。表示。35Visual FoxProVisual FoxPro3.3.1 数值函数数值函数 1. 求绝对值函数求绝对值函数 格式:格式:ABS() 功能:求数值型表达式的绝对值。函数值为数值型。功能:求数值型表达式的绝对值。函数值为数值型。 2.

38、 求平方根函数求平方根函数 格式:格式:SQRT() 功功能能:求求数数值值型型表表达达式式的的算算术术平平方方根根,数数值值型型表表达达式的值应不小于零。函数值为数值型。式的值应不小于零。函数值为数值型。 3. 求指数函数求指数函数 格式:格式:EXP() 功功能能:将将数数值值型型表表达达式式的的值值作作为为指指数数x,求求出出ex的的值值。函数值为数值型。函数值为数值型。3.3 3.3 Visual FoxProVisual FoxPro的内部函数的内部函数36Visual FoxProVisual FoxPro 4. 求对数函数求对数函数格式:格式:LOG()LOG10()功功能能:L

39、OG求求数数值值型型表表达达式式的的自自然然对对数数,LOG10求求数数值值型型表表达达式式的的常常用用对对数数,数数值值型型表表达达式式的的值值必必须须大大于零。函数值为数值型。于零。函数值为数值型。 5. 取整函数取整函数格式:格式:INT()CEILING()FLOOR()37Visual FoxProVisual FoxPro功功能能:INT取取数数值值型型表表达达式式的的整整数数部部分分。CEILING取取大大于于或或等等于于指指定定表表达达式式的的最最小小整整数数。FLOOR取取小小于于或或等等于于指指定定表表达达式式的的最最大大整整数数。函数值均为数值型。函数值均为数值型。举例:

40、举例:x=56.72? INT(x),INT(-x), CEILING(x),CEILING(-x),FLOOR(x),FLOOR(-x)三个函数的值依次为三个函数的值依次为56,-56,57,-56,56,-57。38Visual FoxProVisual FoxPro 6. 求余数函数求余数函数 格式:格式:MOD(,) 功功能能:求求除除以以所所得得出出的的余余数数,所所得得余余数数的的符符号号和和表表达达式式2相相同同。如如果果被被除除数数与与除除数数同同号号,那那么么函函数数值值即即为为两两数数相相除除的的余余数数。如如果果被被除除数数与与除除数数异异号号,则则函函数数值值为为两两数

41、数相除的余数再加上除数的值。函数值为数值型。相除的余数再加上除数的值。函数值为数值型。39Visual FoxProVisual FoxPro举例:举例:? MOD(25,7),MOD(25,-7) ,MOD(-25,7),MOD(-25,-7)输出的函数值依次为输出的函数值依次为4,-3,3,-4。显然如果显然如果M除以除以N的余数为的余数为0,则,则M能被能被N整数。例如整数。例如 x=521 x1=INT(x/100) x2=INT(MOD(x,100)/10) x3=MOD(x,10) ? x1+10*x2+100*x3输输出出为为125。显显然然x1、x2、x3分分别别为为x的的百百

42、、十十、个个位位数字。数字。40Visual FoxProVisual FoxPro 7. 四舍五入函数四舍五入函数格式:格式:ROUND(,) 功功能能:对对求求值值并并保保留留n位位小小数数,从从n+1位位小小数数起起进进行行四四舍舍五五入入n的的值值由由数数值值型型表表达达式式2确确定定),若若n小小于于0,则则对对的的整整数数部部分分按按n的绝对值进行四舍五入。的绝对值进行四舍五入。 举例:举例: ? ROUND(3.1415*3,2),ROUND(156.78,-1)输出的函数值分别为输出的函数值分别为9.42和和160。41Visual FoxProVisual FoxPro8.

43、求最大值和最小值函数求最大值和最小值函数格式格式:MAX(), )MIN(, )功功能能:MAX求求n个个表表达达式式中中的的最最大大值值,MIN求求n个个表表达达式式中中的的最最小小值值。表表达达式式的的类类型型可可以以是是数数值值型型、字字符符型型、货货币币型型、浮浮点点型型、双双精精度度型型、日日期期型型和和日日期期时时间间型型,但但所所有有表表达达式式的的类类型型应应相相同同。函函数数值值的的类类型与自变量的类型一致。型与自变量的类型一致。42Visual FoxProVisual FoxPro举例:举例: ? MAX(2003-08-16,2002-08-16),MIN(助助教教,讲

44、师讲师,副教授副教授,教授教授)输出的函数值分别为输出的函数值分别为08/16/03、副教授。、副教授。9.函数函数格式:格式:PI()功能:返回圆周率功能:返回圆周率的近似值。的近似值。43Visual FoxProVisual FoxPro3.3.2 字符函数字符函数字字符符函函数数是是处处理理字字符符型型数数据据的的函函数数,其其自自变变量量或或函数值中至少有一个是字符型数据。函数值中至少有一个是字符型数据。 1. 宏代换函数宏代换函数 格式:格式:&.字符表达式字符表达式 功功能能:代代换换出出一一个个字字符符型型内内存存变变量量的的内内容容。若若与与后后面面的的字字符符无无空空格格分

45、分界界,则则&函数后的函数后的“.”必须有。必须有。44Visual FoxProVisual FoxPro举例:举例: i=1 j=2 x12=Good Good=MAX(96/01/02,65/05/01) ? x&i.&j,&x12输出的内容依次是输出的内容依次是Good和和48。又如。又如 m=245*SQRT(4) ? 34+&m输出为输出为524.00。45Visual FoxProVisual FoxPro 2. 求字符串长度函数求字符串长度函数 格式:格式:LEN(字符型表达式字符型表达式) 功功能能:求求字字符符串串的的长长度度,即即所所包包含含的的字字符符个个数数。若是空串

46、,则长度为若是空串,则长度为0。函数值为数值型。函数值为数值型。 3. 求子串位置函数求子串位置函数格式:格式:AT(,)ATC(,) 功功能能:若若的的值值存存在在于于的的值值中中,则则给给出出在在中中的的开开始始位位置置,若若不不存存在在,则则函函数数值值为为0。函函数数值值为为数数值值型型。ATC函函数数在在子子串串比比较较时时不不区分字母大小写。区分字母大小写。46Visual FoxProVisual FoxPro举例:举例: xm=李小四李小四 ? AT(李李,xm),AT(PRO,Visual FoxPro),ATC(PRO,Visual FoxPro)输出的函数值分别为输出的函

47、数值分别为1、0、11。47Visual FoxProVisual FoxPro4. 取子串函数取子串函数格式:格式:LEFT(,)RIGHT(字符型表达式字符型表达式,SUBSTR(,功功能能:LEFT函函数数从从字字符符型型表表达达式式左左边边的的第第一一个个字字符符开开始始截截取取子子串串,RIGHT函函数数从从字字符符型型表表达达式式右右边边的的第第一一个个字字符符开开始始截截取取子子串串。若若数数值值型型表表达达式式的的值值大大于于0,且且小小于于等等于于字字符符串串的的长长度度,则则子子串串的的长长度度与与数数值值型型表表达达式式值值相相同同。若若数数值值型型表表达达式式的的值值大

48、大于于字字符符串串的的长长度度,则则给给出出整整个个字字符符串串。若若数数值值型型的的表表达达式式小于或等于小于或等于0,则给出一个空字符串。,则给出一个空字符串。48Visual FoxProVisual FoxProSUBSTR函函数数对对字字符符型型表表达达式式从从指指定定位位置置开开始始截截取取若若干干个个字字符符。起起始始位位置置和和字字符符个个数数分分别别由由数数值值型型表表达达式式1和和数数值值型型表表达达式式2决决定定。若若字字符符个个数数省省略略,或或字字符符个个数数多多于于从从起起始始位位置置到到原原字字符符串串尾尾部部的的字字符符个个数数,则则取取从从起起始始位位置置起起

49、,一一直直到到字字符符串串尾尾的的字字符符串串作作为为函函数数值值。若若起起始始位位置置或或字字符符个个数数为为0,则则函函数数值值为为空空串串 。 显显 然然 SUBSTR函函 数数 可可 以以 代代 替替 LEFT函函 数数 和和RIGHT函数的功能。函数的功能。 举例:举例: xm=李小四李小四 ? SUBSTR(xm,1,2),LEFT(xm,1)输输出出的的函函数数值值均均为为:李李。若若xm代代表表职职工工姓姓名名,则则用用这这两个函数可以取出职工的姓。两个函数可以取出职工的姓。49Visual FoxProVisual FoxPro5. 删除字符串前后空格函数删除字符串前后空格函

50、数格式:格式:LTRIM()RTRIM()ALLTRIM()功能:功能:LTRIM删除字符串的前导空格。删除字符串的前导空格。RTRIM删删除除字字符符串串的的尾尾部部空空格格。RTRIM亦亦可可写写成成TRIM。ALLTRIM删删 除除 字字 符符 串串 中中 的的 前前 导导 和和 尾尾 部部 空空 格格 。ALLTRIM函数兼有函数兼有LTRIM和和RTRIM函数的功能。函数的功能。50Visual FoxProVisual FoxPro 6. 生成空格函数生成空格函数 格式:格式:SPACE() 功功能能:生生成成若若干干个个空空格格,空空格格的的个个数数由由数数值值型型表表达达式的值

51、决定。式的值决定。 举例:举例: name=SPACE(8) ? LEN(LTRIM(name)输出的函数值为输出的函数值为0。51Visual FoxProVisual FoxPro7. 字符串替换函数字符串替换函数 格格式式:STUFF(,)功功能能:用用去去替替换换中中由由起起始始位位置置开开始始所所指指定定的的若若干干个个字字符符。起起始始位位置置和和字字符符个个数数分分别别由由数数值值型型表表达达式式1和和数数值值型型表表达达式式2指指定定。如如果果字字符符型型表表达达式式2的的值值是是空空串串,则则字字符符型型表表达达式式1中由起始位置开始所指定的若干个字符被删除。中由起始位置开始

52、所指定的若干个字符被删除。举例:举例:STORE 中国中国 长沙长沙 TO x? STUFF(x,6,4,北京北京)输出为:中国输出为:中国 北京。北京。52Visual FoxProVisual FoxPro 8. 产生重复字符函数产生重复字符函数 格格式式:REPLICATE(,) 功功能能:重重复复给给定定字字符符串串若若干干次次,次次数数由由数数值值型型表表达达式给定。式给定。举例:举例:? REPLICATE (*,6)输出为:输出为:*。53Visual FoxProVisual FoxPro 9. 大小写字母转函数大小写字母转函数格式:格式:LOWER()UPPER()功能:功能

53、:LOWER将字符串中的大写字母转换成小写。将字符串中的大写字母转换成小写。UPPER将字符串中的小写字母转换成大写。将字符串中的小写字母转换成大写。举例:举例:yn=y ? UPPER(yn),LOWER(YES)输输出出的的函函数数值值为为:Y、yes。在在字字符符串串中中,同同一一字字母母的的大大小小写写为为不不同同字字符符,如如果果利利用用大大小小字字母母转转换换函函数数,就可以不考虑字符串中的字母是大写还是小写。就可以不考虑字符串中的字母是大写还是小写。54Visual FoxProVisual FoxPro3.3.3 日期和时间函数日期和时间函数日期时间函数是处理日期型或日期时间型

54、数据的函数。日期时间函数是处理日期型或日期时间型数据的函数。1. 系统日期和时间函数系统日期和时间函数格式:格式:DATE()TIME()DATETIME() 功功能能:DATE函函数数给给出出当当前前的的系系统统日日期期,函函数数值值为为日期型。日期型。TIME函函数数给给出出当当前前的的系系统统时时间间,形形式式为为hh:mm:ss,函数值为字符型。函数值为字符型。DATETIME函函数数给给出出当当前前的的系系统统日日期期和和时时间间,函函数数值值为日期时间型。为日期时间型。55Visual FoxProVisual FoxPro2. 求年份、月份和天数函数求年份、月份和天数函数格式:格

55、式:YEAR(|)MONTH(|)DAY(|)功功能能:YEAR函函数数返返回回日日期期表表达达式式或或日日期期时时间间型型表表达达式所对应的年份值。式所对应的年份值。MONTH函函数数返返回回日日期期型型表表达达式式或或日日期期时时间间型型表表达达式式所对应的月份,月份以数值所对应的月份,月份以数值112来表示。来表示。DAY函函数数返返回回日日期期型型表表达达式式或或日日期期时时间间型型表表达达式式所所对对应月份里面的天数。应月份里面的天数。56Visual FoxProVisual FoxPro举例:举例:d=2003-08-16? YEAR(d),MONTH(d),DAY(d)输出的函

56、数值分别为输出的函数值分别为2003、8、16。57Visual FoxProVisual FoxPro3. 求时、分和秒函数求时、分和秒函数格式:格式:HOUR()MINUTE()SEC()功功能能:HOUR函函数数返返回回日日期期时时间间型型表表达达式式所所对对应应的的小时部分小时部分(按按24小时制小时制)。MINUTE函函数数返返回回日日期期时时间间型型表表达达式式所所对对应应的的分分钟钟部分。部分。SEC函数返回日期时间型表达式所对应的秒数部分。函数返回日期时间型表达式所对应的秒数部分。58Visual FoxProVisual FoxPro举例:举例:d=2003-08-16,5:

57、43:56 P? HOUR(d),MINUTE(d),SEC(d)输出的函数值分别为输出的函数值分别为17、43、56。59Visual FoxProVisual FoxPro3.3.4 数据类型转换函数数据类型转换函数1. 将字符转换成将字符转换成ASCII码的函数码的函数格式:格式:ASC()功功能能:给给出出指指定定字字符符串串最最左左边边的的一一个个字字符符的的ASCII码值。函数值为数值型。码值。函数值为数值型。 2. 将将ASCII值转换成相应字符函数值转换成相应字符函数 格式:格式:CHR() 功功能能:将将数数值值型型表表达达式式的的值值作作为为ASCII码码,给给出出所对应的

58、字符。所对应的字符。 60Visual FoxProVisual FoxPro举例:举例: ch1=M ch2=CHR(ASC(ch1)+ASC(a)-ASC(A) ? ch2字字符符变变量量ch2的的值值为为m。若若ch1的的值值为为某某个个大大写写字字母母,则则利利用用求求ch2的的表表达达式式可可求求出出对对应应的的小小写写字字母母。注注意意,在在ASCII表表中中,字字母母是是连连续续排排列列的的,任任何何一一个个字字母母其其大大小小写写ASCII码码值值之之差差是相等的。是相等的。61Visual FoxProVisual FoxPro 3. 将字符串转换成日期或日期时间函数将字符串

59、转换成日期或日期时间函数 格式:格式:CTOD() CTOT() 功功能能:CTOD函函数数将将指指定定的的字字符符串串转转换换成成日日期期型型 数数据据,CTOT函函数数将将指指定定的的字字符符串串转转换换成成日日期期时时间间型型数数据据。字字符符型型表表达达式式中中的的日日期期部部分分格格式式要要与与系系统统设设置置的的日日期期显显示示格格式式一一致致,其其中中的的年年份份可可以以用用4位位,也也可可以以用用2位位。如如果果用用2位位,则则世世纪纪值值由由SET CENTURY TO 命令指定。命令指定。62Visual FoxProVisual FoxPro举例:举例: ch1=M ch

60、2=CHR(ASC(ch1)+ASC(a)-ASC(A) ? ch2字字符符变变量量ch2的的值值为为m。若若ch1的的值值为为某某个个大大写写字字母母,则则利利用用求求ch2的的表表达达式式可可求求出出对对应应的的小小写写字字母母。注注意意,在在ASCII表表中中,字字母母是是连连续续排排列列的的,任何一个字母其大小写任何一个字母其大小写ASCII码值之差是相等的。码值之差是相等的。63Visual FoxProVisual FoxPro 4. 将日期或日期时间转换成字符串函数将日期或日期时间转换成字符串函数 格式格式:DTOC(|,1) TTOC(,1) 功功能能:DTOC函函数数将将日日

61、期期数数据据或或日日期期时时间间数数据据的的日日期期部部分分转转换换为为字字符符型型,TTOC函函数数将将日日期期时时间间数数据据转转换换为为字字符符型型。字字符符串串中中日日期期和和时时间间的的格格式式受受系系统统设设置置的的影影响响。对对DTOC来来说说,若若选选用用1,结结果果为为yyyymmdd格格式式。对对TTOC来来说说,若若选选用用1,结结果果为为yyyymmddhhmmss格式。格式。64Visual FoxProVisual FoxPro 5. 将数值转换成字符串函数将数值转换成字符串函数 格格式式:STR(,) 功功能能:将将数数值值型型表表达达式式1的的值值转转换换成成字

62、字符符串串。转转换换后后字字符符串串的的长长度度由由数数值值型型表表达达式式2决决定定,保保留留的的小小数数位位数数由由数数值值表表达达式式3决决定定。省省略略数数值值型型表表达达式式3时时,转转换换后后将将无无小小数数部部分分。省省略略数数值值型型表表达达式式2和和数数值值表表达达式式3时时,字字符符串串长长度度为为10,无无小小数数部部分分。如如果果指指定定的的长长度度大大于于小小数数点点左左边边的的位位数数,则则在在字字符符串串的的前前面面加加上上空空格格,如如果果指指定定的的长长度度小小于于小小数数点点左左边边的的位位数数,则则返返回回指指定定长长度度个个星星号号*,表表示示出出错。错

63、。65Visual FoxProVisual FoxPro举例:举例:x=1234.587? STR(x,10,2), STR(x,10,4), STR(x,7,2), STR(x,7), STR(x,3), STR(x)输出为:输出为:1234.591234.58701234.591234.591234.58701234.591235*1235*其中的其中的代表空格代表空格。66Visual FoxProVisual FoxPro 6. 将字符串转换成数值函数将字符串转换成数值函数 格式:格式:VAL() 功功能能:将将由由数数字字、正正负负号号、小小数数点点组组成成的的字字符符串串转转换换

64、为为数数值值,转转换换遇遇上上非非上上述述字字符符停停止止。若若串串的的第第一一个个字字符符即即非非上上述述字字符符,函函数数值值为为0。前前导空格不影响转换。导空格不影响转换。67Visual FoxProVisual FoxPro3.3.5 测试函数测试函数1. 数据类型测试函数数据类型测试函数 格式:格式:VARTYPE(,) 功功能能:测测试试引引号号内内表表达达式式的的数数据据类类型型,返返回回用用字字母母代代表表的的数数据据类类型型。函函数数值值为为字字符符型型。未未定定义义或或错错误误的的表表达达式式返返回回字字母母U。若若表表达达式式是是一一个个数数组组,则则根根据据第第一一个

65、个数数组组元元素素的的类类型型返返回回字字符符串串。若若表表达达式式的的运运算算结结果果是是NULL值值,则则根根据据函函数数中中逻逻辑辑表表达达式式的的值值决决定定是是否否返返回回表表达达式式的的类类型型。具具体体规规则则是是:如如果果逻逻辑辑表表达达式式为为.T.,则则返返回回表表达达式式的的原原数数据据类类型型。如如果果逻逻辑辑表表达达式式为为.F.或或省省略略,则则返返回回X,表表明明表表达达式式的的运运算算结果结果是是NULL值。值。68Visual FoxProVisual FoxPro举例:举例:a=DATE()a=NULL? VARTYPE(3.46),VARTYPE($385

66、),VARTYPE(FoxPro),VARTYPE(a,.T.),VARTYPE(a)输出为:输出为:N Y C D X。69Visual FoxProVisual FoxPro 2. 表头测试函数表头测试函数 格式:格式:BOF()|) 功功能能:测测试试指指定定或或当当前前工工作作区区的的记记录录指指针针是是否否超超过过了了第第一一个个逻逻辑辑记记录录,即即是是否否指指向向表表头头,若若是是,函函数数值值为为.T.,否否则则为为.F.。用用于于指指定定工工作作区区,为为工工作作区区的的别别名名或或在在该该工工作作区区上上打打开开的的表表的的别别名名。当当和和都都缺缺省省不不写写时时,默默认

67、认为当前工作区。为当前工作区。 3. 表尾测试函数表尾测试函数 格式:格式:EOF(|) 功功能能:测测试试指指定定或或当当前前工工作作区区中中记记录录指指针针是是否否超超过过了了最最后后一一个个逻逻辑辑记记录录,即即是是否否指指向向表表的的末末尾尾,若若是是,函函数数值值为为.T.,否否则则为为.F.。自自变变量量含含义义同同BOF函函数数,缺省时默认为当前工作区。缺省时默认为当前工作区。70Visual FoxProVisual FoxPro 4. 记录号测试函数记录号测试函数 格式:格式:RECNO(|) 功功能能:返返回回指指定定或或当当前前工工作作区区中中当当前前记记录录的的记记录录

68、号号,函函数数值值为为数数值值型型。省省略略参参数数时时,默默认认为为当当前前工工作作区区。如如果果记记录录指指针针在在最最后后一一个个记记录录之之后后,即即EOF()为为.T.,RECNO()返返回回比比记记录录总总数数大大1的的值值。如如果果记记录录指指针针在在第第一一个个记记录录之之前前或或者者无无记记录录,即即BOF()为为.T.,RECONO()返回返回1。 71Visual FoxProVisual FoxPro5. 记录个数测试函数记录个数测试函数 格式:格式:RECCOUNT() 功功能能:返返回回当当前前或或指指定定表表中中记记录录的的个个数数。如如果果在在指指定定的的工工作

69、作区区中中没没有有表表被被打打开开,则则函函数数值值为为0。如如果果省省略略参参数数,则则默默认认为为当当前前工工作作区区。RECCOUNT()返返回回的的值值不不受受SET DELETED和和SET FILTER的的影影响响,总总是是返返回回包包括括加加有有删删除除标标记记在在内内的的全全部部记记录录数。数。72Visual FoxProVisual FoxPro6. 查找是否成功测试函数查找是否成功测试函数 格式格式:FOUND() 功功能能:在在当当前前或或指指定定表表中中,检检测测是是否否找找到到所所需需的的数数据据。如如果果省省略略参参数数,则则默默认认为为当当前前工工作作区区。数数

70、据据 搜搜 索索 由由 FIND、 SEEK、 LOCATE或或CONTINUE命命令令实实现现。如如果果这这些些命命令令搜搜索索到到所所需需的的数数据据记记录录,函函数数值值为为.T.,否否则则函函数数值值为为.F.。如如果果指指定定的的工工作作区区中中没没有有表表被被打打开开,则则FOUND()返返回回.F.。如如果果用用非非搜搜索索命命令令如如GO移移动动记记录录指指针针,则函数值为则函数值为.F.。73Visual FoxProVisual FoxPro7.文件是否存在测试函数文件是否存在测试函数 格式:格式:FILE() 功功能能:检检测测指指定定的的文文件件是是否否存存在在。如如果

71、果文文件件存存在在,则则函函数数值值为为.T.,否否则则函函数数值值为为.F.。文文件件名名必必须须是是全全称称,包包括括盘盘符符、路路径径和和扩扩展名,且展名,且是字符型表达式。是字符型表达式。74Visual FoxProVisual FoxPro 8. 判断值介于两个值之间的函数判断值介于两个值之间的函数 格格式式:BETWEEN(, ) 功功能能:判判断断表表达达式式的的值值是是否否介介于于相相同同数数据据类类型型的的两两个个表表达达式式值值之之间间。BETWEEN()首首先先计计算算表表达达式式的的值值。如如果果一一个个字字符符、数数值值、日日期期、表表达达式式的的值值介介于于两两个

72、个相相同同类类型型表表达达式式的的值值之之间间, 即即被被测测表表达达式式的的值值大大于于或或等等于于下下限限表表达达式式的的值值,小小于于或或者者等等于于上上限限表表达达式式的的值值,BETWEEN()将将返返回回一一个个真真.T.值值,则则返返回回.F.。 举例:举例: gz=375 ? BETWEEN(gz,260,650) 输出为输出为.T.。75Visual FoxProVisual FoxPro 9. 条件函数条件函数IIF 格式:格式:IIF(,) 功功能能:若若逻逻辑辑型型表表达达式式的的值值为为.T.,函函数数值值为为的值,否则为的值,否则为的值。的值。 举例:举例: xb=

73、女女 ? IIF(xb=男男,1,IIF(xb=女女,2,3) 输出为输出为2。76Visual FoxProVisual FoxPro3.4.1 算术表达式算术表达式 用用算算术术运运算算符符将将数数值值型型数数据据连连接接起起来来的的式式子子叫叫算算术术表达式。表达式。 算算术术运运算算符符有有(按按优优先先级级从从高高到到低低的的顺顺序序排排列列):()(括括号号)、*或或(乘乘方方)、*(乘乘)、/(除除)、%(求余数),(求余数),+(加),(加),-(减)。(减)。 各各运运算算符符运运算算的的优优先先顺顺序序和和一一般般算算术术运运算算规规则则完完全全相相同同。同同级级运运算算按

74、按自自左左向向右右的的方方向向进进行行运运算算。各各运运算算符符的的运运算算规规则则也也和和一一般般算算术术运运算算相相同同,其其中中求求余余运运算算符符%和和求求余余函函数数MOD的的作作用用相相同同。余余数数的的符符号号与除数一致。与除数一致。3.4 3.4 Visual FoxProVisual FoxPro的表达式的表达式77Visual FoxProVisual FoxPro 书写书写Visual FoxPro表达式应遵循以下规则:表达式应遵循以下规则: (1)表表达达式式中中所所有有的的字字符符必必须须写写在在同同一一水水平平线线上上,每个字符占一格。每个字符占一格。 (2)表表达

75、达式式中中常常量量的的表表示示、变变量量的的命命名名以以及及函函数数的的引用要符合引用要符合Visual FoxPro的规定。的规定。 (3)要要根根据据运运算算符符运运算算的的优优先先顺顺序序,合合理理地地加加括括号号,以以保保证证运运算算顺顺序序的的正正确确性性。特特别别是是分分式式中中的的分分子子分分母母有有加加减减运运算算时时,或或分分母母有有乘乘法法运运算算,要要加加括括号号表表示分子分母的起始范围。示分子分母的起始范围。78Visual FoxProVisual FoxPro3.4.2 字符表达式字符表达式1. 连接运算连接运算 连连接接运运算算符符有有完完全全连连接接运运算算符符

76、“”和和不不完完全全连连接接运运算算符符“”两两种种。“”运运算算的的功功能能是是将将两两个个字字符符串串连连接接起起来来形形成成一一个个新新的的字字符符串串。“”运运算算的的功功能能是是去去掉掉字字符符串串1尾尾部部的的空空格格,然然后后将将两两个个字字符符串串连连接接起起来来,并并把把字字符符串串1末末尾尾的的空空格格放放到到结结果果串串的的末末尾。例如尾。例如 ? 姓名姓名李小四李小四+张得猾张得猾输出为:输出为:姓名李小四姓名李小四张得猾张得猾79Visual FoxProVisual FoxPro 2. 包含运算包含运算 包含运算的结果是逻辑值。一般格式为:包含运算的结果是逻辑值。一

77、般格式为: $ 若若包包含含在在之之中中,其其表表达达式式值值为为.T.,否则为否则为.F.。例如例如 zhch=副教授副教授 ? 教授教授$zhch 输出为输出为.T.。80Visual FoxProVisual FoxPro3.4.3 日期和时间表达式日期和时间表达式 格式格式1: 其结果是将来的某个日期。其结果是将来的某个日期。 格式格式2:其结果是过去的某个日期。其结果是过去的某个日期。 格式格式3:其结果是两个日期之间相差的天数。其结果是两个日期之间相差的天数。 81Visual FoxProVisual FoxPro格式格式4: 其结果是若干秒后的某个日期时间。其结果是若干秒后的某

78、个日期时间。格式格式5:其结果是若干秒前的某个日期时间。其结果是若干秒前的某个日期时间。 格式格式6:其结果是两个日期时间之间相差的秒数。其结果是两个日期时间之间相差的秒数。82Visual FoxProVisual FoxPro3.4.4 关系表达式关系表达式 关关系系运运算算符符有有: (小小于于)、 (大大于于)、= (大大于于等等于于)、= (等等于于)、= (精精确确等等于于)、或或#或或!=(不不等等于于)。它它们们的的运运算优先级相同。算优先级相同。 关系表达式一般形式为:关系表达式一般形式为: e1 e2其其中中e1、e2可可以以同同为为数数值值型型表表达达式式、字字符符型型表

79、表达达式式、日日期期型型表表达达式式或或逻逻辑辑型型表表达达式式。但但=仅仅适适用用于于字字符符型型数数据据。关关系系表表达达式式表表示示一一个个条条件件,条条件件成成立立时时值值为为.T.,否则为否则为.F.。83Visual FoxProVisual FoxPro各种类型数据的比较规则如下:各种类型数据的比较规则如下:(1)数数值值型型和和货货币币型型数数据据根根据据其其代代数数值值的的大大小小进进行行比比较。较。(2)日日期期型型和和日日期期时时间间型型数数据据进进行行比比较较时时,离离现现在在日日期或时间越近的日期或时间越大。期或时间越近的日期或时间越大。(3)逻辑型数据比较时,)逻辑

80、型数据比较时,.T.比比.F.大。大。84Visual FoxProVisual FoxPro(4)对对于于字字符符型型数数据据,Visual FoxPro可可以以设设置置字字符符的的排排序序次次序序。在在“工工具具”菜菜单单中中选选择择“选选项项”,将将打打开开“选选项项”对对话话框框,在在“数数据据”选选项项卡卡的的“排排序序序序列列”下下拉拉列列表表框框中中选选择择“Machine”、“PinYin”或或“Stroke”项并确定。项并确定。 若若选选择择“Machine”,字字符符按按照照机机内内码码顺顺序序排排序序。对对于于西西文文字字符符而而言言,按按其其ASCII码码值值大大小小进

81、进行行排排列列:空空格格在在最最前前面面,大大写写字字母母在在小小写写字字母母前前面面,数数字字在在字字母母之之前前。因因此此,空空格格最最小小,大大写写字字母母小小于于小小写写字字母母,数数字字字字符符小小于于字字母母。对对于于汉汉字字字字符符,按按其其国国标标码码的的大大小小进进行行排排列列,对对常常用用的的一一级级汉汉字字而而言言,根根据据它们的它们的拼音顺序比较大小。拼音顺序比较大小。85Visual FoxProVisual FoxPro 若若选选择择“PinYin”,字字符符按按照照拼拼音音次次序序排排序序。对对于于西西文文字字符符,空空格格在在最最前前面面,小小写写字字母母再再前

82、前,大写字母在后。大写字母在后。 若若选选择择“Stroke”,字字符符按按笔笔画画数数多多少少排排序序,因而,字符笔画数的多少就决定其大小。因而,字符笔画数的多少就决定其大小。86Visual FoxProVisual FoxPro也可以用命令也可以用命令设置字符的排序次序。命令格式为:设置字符的排序次序。命令格式为:SET COLLATE TO “”排排 序序 次次 序序 名名 可可 以以 是是 “Machine”、 “PinYin”或或“Stroke”。比比较较字字符符串串时时,先先取取两两字字符符串串的的第第一一个个字字符符比比较较,若若两两者者不不等等,其其大大小小就就决决定定了了两

83、两字字符符串串的的大大小小,若若相相等等,则则各各取取第第二二个个字字符符比比较较,依依次次类类推推,直直到到最最后后,若每个字符都相等,则两个字符串相等。若每个字符都相等,则两个字符串相等。87Visual FoxProVisual FoxPro例例 在不同的字符排序次序下,比较字符串的大小。在不同的字符排序次序下,比较字符串的大小。SET COLLATE TO “Machine”? “助助教教”教教授授”,“abc”a”,“”a”,“XYZ”a”.T. .F. .F. .F.SET COLLATE TO “PinYin”? “助助教教”教教授授”,“abc”a”,“”a”,“XYZ”a”.

84、T. .F. .F. .T.SET COLLATE TO “Stroke”? “助助教教”教教授授”,“abc”a”,“”a”,“XYZ”a”.F. .F. .F. .T.88Visual FoxProVisual FoxPro要要注注意意=(等等于于)和和=(精精确确等等于于)两两个个关关系系运运算算符符的区别。它们主要是对字符串进行比较时有所区别。的区别。它们主要是对字符串进行比较时有所区别。 字字符符串串的的“等等于于”比比较较有有精精确确和和非非精精确确之之分分,精精确确等等于于是是指指只只有有在在两两字字符符串串完完全全相相同同时时才才为为真真,而而非非精精确确等等于于是是指指当当“

85、=”号号右右边边的的串串与与“=”号号左左边边的的串串的的前前几几个个字字符符相相同同时时,运运算算结结果果即即为为真真。可可以以用用命命令令SET EXACT ON 来来设设置置字字符符串串精精确确比比较较,此此时时,=和和=的的作作用用相相同同,用用命命令令SET EXACT OFF 可可设设置置字字符符串串非非精精确确比比较较,此此时时,=和和=的的作作用用是是不相同的,不相同的,=为精确比较,为精确比较,=为非精确比较。为非精确比较。89Visual FoxProVisual FoxPro 例例 字符串比较举例。字符串比较举例。 SET EXACT OFF zc=教授教授 ? zc=教

86、授教授,教授教授=zc,教授教授=LEFT(zc,4),zc=教授教授输出结果为:输出结果为:.T. .F. .T. .F. 。 请请注注意意在在非非精精确确比比较较状状态态下下,条条件件zc=教教授授与与条条件件教授教授=zc不等价。不等价。90Visual FoxProVisual FoxPro3.4.5 逻辑表达式逻辑表达式逻逻辑辑表表达达式式是是由由逻逻辑辑运运算算符符将将逻逻辑辑型型数数据据连连接接起起来的式子。其值仍是逻辑值。来的式子。其值仍是逻辑值。 逻逻辑辑运运算算符符有有:NOT或或.NOT.或或!(逻逻辑辑非非)、AND或或.AND.(逻逻辑辑与与)、OR或或.OR.(逻逻

87、辑辑或或)。其运算优先级是。其运算优先级是NOT最高,最高,OR最低。最低。 逻逻辑辑非非运运算算符符是是单单目目运运算算符符,只只作作用用于于后后面面的的一一个个逻逻辑辑操操作作数数,若若操操作作数数为为真真,则则返返回回假假,否则返回真。否则返回真。 91Visual FoxProVisual FoxPro逻逻辑辑与与与与逻逻辑辑或或是是双双目目运运算算符符,所所构构成成的的逻逻辑辑表表达式为:达式为:L1 AND L2L1 OR L2其中其中L1和和L2均为逻辑型操作数。均为逻辑型操作数。 对对于于逻逻辑辑与与运运算算,只只有有L1和和L2同同时时为为真真,表表达达式值才为真,只要其中一

88、个为假,则结果为假。式值才为真,只要其中一个为假,则结果为假。 对对于于逻逻辑辑或或运运算算,L1和和L2中中只只要要有有一一个个为为真真,表表达达式式即即为为真真,只只有有L1和和L2均均为为假假时时,表表达达式式才才为假。为假。92Visual FoxProVisual FoxPro 当当一一个个表表达达式式包包含含多多种种运运算算时时,其其运运算算的的优优先先级级由由高到低排列为:高到低排列为: 算算术术运运算算 字字符符串串运运算算 日日期期运运算算 关关系系运运算算 逻辑运算逻辑运算在在对对表表进进行行各各种种操操作作时时常常常常要要表表达达各各种种条条件件,即即对对满满足足条条件件

89、的的记记录录进进行行操操作作,此此时时就就要要综综合合运运用用本本章章的的知知识识。下下面面的的例例子子希希望望读读者者能能认认真真领领会会,这这些些知知识识对以后章节的学习十分重要。对以后章节的学习十分重要。93Visual FoxProVisual FoxPro 例例 学生表的结构如下:学生表的结构如下:学学生生(学学号号 C 6,姓姓名名 C 10,性性别别 C 2 ,出出生生日日期期 D,少少数数民民族族否否 L,籍籍贯贯 C 10,入入学学成成绩绩 N 5.1,简简历历 M,照片照片 G)针对学生表,写出下列条件:针对学生表,写出下列条件: (1)姓)姓“张张”的学生。的学生。 (2

90、)20岁以下的学生。岁以下的学生。 (3)家住湖南或湖北的学生。)家住湖南或湖北的学生。 (4)汉族学生。)汉族学生。 (5)入学成绩在)入学成绩在580分以上的湖南或湖北的学生。分以上的湖南或湖北的学生。 (6)20岁以下的少数民族学生。岁以下的少数民族学生。94Visual FoxProVisual FoxPro(1) 条件条件1:张张$姓名姓名 条件条件2:AT(张张,姓名姓名)=1条件条件3:SUBSTR(姓名姓名,1,2)=张张条件条件4:姓名:姓名=张张(2) 条件条件1:DATE()-出生日期出生日期=30*365 条件条件2:YEAR(DATE()-YEAR(出生日期出生日期)

91、095Visual FoxProVisual FoxPro (4)条件)条件1:NOT少数民族否少数民族否 条件条件2:少数民族否:少数民族否.F. 条条件件3:IIF(少少数数民民族族否否,少少数数民民族族,汉汉族族)=汉族汉族 (5)条件)条件1:入学成绩:入学成绩580 AND 湖湖$籍贯籍贯 条条件件2:入入学学成成绩绩580 AND (籍籍贯贯=湖湖南南 OR籍籍贯贯=湖北湖北)由由于于AND运运算算优优先先级级比比OR要要高高,为为了了保保证证先先做做OR运运算,条件算,条件2中的括号是必不可少的。中的括号是必不可少的。 (6)YEAR(DATE()-YEAR(出出生生日日期期)=20 AND 少数民族否少数民族否96Visual FoxProVisual FoxPro

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号