FoxPro的数据及其运算.ppt

上传人:本田雅阁 文档编号:2976647 上传时间:2019-06-16 格式:PPT 页数:96 大小:234.51KB
返回 下载 相关 举报
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、Visual FoxPro,1,第三章,Visual FoxPro的数据及其运算,Visual FoxPro,2,3.1 Visual FoxPro的数据类型 3.2 Visual FoxPro的常量与变量 3.3 Visual FoxPro的内部函数 3.4 Visual FoxPro的表达式,Visual FoxPro,3,1字符型 字符型(Character)数据是不能进行算术运算的文字数据类型,用字母C表示。字符型数据包括中文字符、英文字符、数字字符和其他ASCII字符,其长度(即字符个数)范围是0254个字符。,3.1 Visual FoxPro的数据类型,Visual FoxPro

2、,4,2数值型 数值型(Numeric)数据是表示数量并可以进行算术运算的数据类型,用字母N表示。数值型数据由数字、小数点和正负号组成。数值型数据在内存中占用8个字节,相应的字段变量其长度(数据位数)最大20位。 在Visual FoxPro中,具有数值特征的数据类型还有整型(Integer)、浮点型(Float)和双精度型(Double),不过这3种数据类型只能用于字段变量。,Visual FoxPro,5,3货币型 货币型(Currency)数据是为存储货币值而使用的一种数据类型,它默认保留4位小数,占据8字节存储空间。货币型数据用字母Y表示。 4日期型 日期型(Date)数据是表示日期的

3、数据,用字母D表示。日期的默认格式是mm/dd/yy,其中mm表示月份,dd表示日期,yy表示年度,年度也可以是4位。日期型数据的长度固定为8位。日期型数据的显示格式有多种,它受系统日期格式设置的影响。,Visual FoxPro,6,5日期时间型 日期时间型(Date Time)数据是表示日期和时间的数据,用字母T表示。日期时间的默认格式是mm/dd/yyyy hh:mm:ss,其中mm、dd、yyyy的意义与日期型相同,而hh表示小时,mm表示分钟,ss表示秒数。日期时间型数据也是采用固定长度8位,取值范围是:日期为01/01/000112/31/9999,时间为00:00:0023:59

4、:59。如08/16/2003 10:35:30表示2003年8月16日10时35分30秒这一日期和时间。,Visual FoxPro,7,6逻辑型 逻辑型(Logic)数据是描述客观事物真假的数据类型,表示逻辑判断的结果,用字母L表示。逻辑型数据只有真(.t.或.y.)和假(.f.或.n.)两种,长度固定为1位。,Visual FoxPro,8,7备注型 备注型(Memo)数据是用于存放较多字符的数据类型,用字母M表示。备注型数据没有数据长度限制,仅受限于磁盘空间。它只用于表中字段类型的定义,字段长度固定为4个字节,实际数据存放在与表文件同名的备注文件(.fpt)中,长度根据数据的内容而定。

5、,Visual FoxPro,9,8通用型 通用型(General)数据是存储OLE(对象链接与嵌入)对象的数据类型,用字母G表示。通用型数据中的OLE对象可以是电子表格、文档、图形、声音等。它只用于表中字段类型的定义。通用型数据字段长度固定为4位,实际数据长度仅受限于磁盘空间。 9二进制字符型和二进制备注型 这两类数据是以二进制格式存储的数据类型,只能用在表中字段数据的定义。所存储的数据不受代码页改变的影响。,Visual FoxPro,10,3.2.1 常量 1字符型常量 字符型常量是用定界符括起来的一串字符。在Visual FoxPro中,定界符有3种:单撇号、双撇号和方括号。如Cent

6、ral South University、“410075“、教授等都是字符型常量。 如果某一种定界符本身是字符型常量中的字符,就应选择另一种定界符。例如,“Thats right!“表示字符常量:Thats right!,含有13个字符。,3.2 Visual FoxPro的常量与变量,Visual FoxPro,11,2数值型常量 数值型常量就是平时所讲的常数,由数字、小数点和正负号组成。在Visual FoxPro中,数值型常量有两种表示方法:小数形式和指数形式。如75、-3.75是小数形式的数值型常量。指数形式通常用来表示那些绝对值很大或很小、而有效位数不太长的一些数值,对应于日常应用中

7、的科学记数法。,Visual FoxPro,12,指数形式用字母E来表示以10为底的指数,E左边为数字部分,称为尾数,右边为指数部分,称为阶码。阶码只能是整数,尾数可以是整数,也可以是小数。尾数与阶码均可正可负。例如,常量0.694710-6、4.9523109分别用指数形式表示为0.6947E-6、4.9523E9。,Visual FoxPro,13,3货币型常量 货币型常量的书写格式与数值型常量类似,但要加上一个前置的$。货币型数据在存储和计算时,采用4位小数。如果一个货币型常量多于4位小数,那么系统会自动将多余的小数位四舍五入。例如,货币型常量$3.1415926将存储为$3.1416。

8、货币型常量不能采用指数形式。 4日期型常量 日期型常量要放在一对花括号中,花括号内包括年、月、日3部分内容,各部分内容之间用分隔符分隔。分隔符可以是/、-、.等。Visual FoxPro的默认日期格式是mm/dd/yyyy。,Visual FoxPro,14,5日期时间型常量 日期时间型常量也要放在一对花括号中,其中既含日期又含时间。日期的格式与日期型常量相同,时间包括时、分、秒,时分秒之间用“:”分隔。日期时间型常量的默认格式是: mm/dd/yyyy , hh:mm:ssa|p 其中hh、mm、ss的默认值分别为12、0和0。a和p分别表示AM(上午)和PM(下午),默认为AM。如果指定

9、时间大于等于12,则自然为下午的时间。,Visual FoxPro,15,日期值和日期时间值的输入格式与输出格式并不完全相同,特别是输出格式受系统环境设置的影响,用户可根据应用需要进行相应设置。下面介绍有关命令。 (1)日期格式中的世纪值 通常日期格式中用2位数表示年份,但涉及到世纪问题就不便区分。Visual FoxPro提供设置命令对此进行相应设置。 命令格式:SET CENTURY ON | OFF | TO nCentury,Visual FoxPro,16,命令功能:用于设置显示日期时是否显示世纪。其中,ON表示日期值输出时显示年份值,即日期数据显示10位,年份占4位。OFF(默认值

10、)表示日期值输出时不显示年份值,即日期数据显示8位,年份占2位。TO nCentury指定日期数据所对应的世纪值,nCentury是一个199的整数,代表世纪数。,Visual FoxPro,17,(2)设置日期显示格式 用户可以调整、设置日期的显示输出格式。 命令格式: SET DATE TO AMERICAN | ANSI | BRITISH | FRENCH | GERMAN | ITLIAN | JAPAN | USA | MDY | DMY | YMD | SHORT | LONG 命令功能:设置日期的显示输出格式。系统默认为AMERICAN(美国日期格式)。如果日期格式设置为SHO

11、RT或LONG格式,Visual FoxPro将按Windows系统设置的短日期格式或长日期格式显示输出日期数据,而且SET CENTURY命令的设置被忽略。,Visual FoxPro,18,(3)设置日期分隔符,命令格式:SET MARK TO 日期分隔符 命令功能:设置显示日期时使用的分隔符,如/、-、.等。如没有指定任何分隔符,则恢复系统默认的斜杠分隔符。 (4)设置日期2000年兼容性 通常日期型和日期时间型数据的结果,与SET DATE命令和SET CENTURY命令设置状态及当前系统时间有关。由于系统时间与相应设置不同,同一数据的结果可能有不同的解释。如日期值10/11/12可以

12、解释为1912年10月11日、2012年10月11日、1912年11月10日、1910年11月12日或者2010年11月12日等。这显然会导致系统混乱,而且还可能造成2000年兼容性错误,影响系统正常运行。,Visual FoxPro,19,Visual FoxPro增加了一种所谓严格的日期格式。不论哪种设置,按严格日期格式表示的日期型和日期时间型数据,都具有相同的值和表示形式。严格的日期格式是: yyyy-mm-dd,hh:mm:ssa|p 其中,表明该格式是严格的日期格式,并按照YMD的格式解释日期型和日期时间型数据,它是严格日期格式的标志,不可缺少。有效的日期型和日期时间型数据分隔符为:

13、/、-、.和空格。如2003-08-16、2003-08-16 10:35:30a,分别以严格的日期格式表示2003年8月16日及该日上午10时35分30秒。,Visual FoxPro,20,Visual FoxPro默认采用严格的日期格式,并以此检测所有日期型和日期时间型数据的格式是否规范、合法。 命令格式:SET STRICTDATE TO 0 | 1 | 2 命令功能:用于设置是否对日期格式进行检测。其中,0表示不进行严格的日期格式检测。1表示进行严格的日期格式检测(默认值),要求所有日期型和日期时间型数据均按严格的格式。2表示进行严格的日期格式检测,并且对CTOD和CTOT函数的格式

14、也有效。省略各选项时,恢复系统默认值,等价于1的设置。,Visual FoxPro,21,除了利用命令方式设置外,也可以用菜单方式进行设置设置。在“工具”菜单中选择“选项”,将打开“选项”对话框,在“区域”选项卡中可以设置日期和时间的显示格式。在“常规”选项卡中可以设置2000年兼容性。,Visual FoxPro,22,6逻辑型常量 逻辑型常量表示逻辑判断的结果,只有“真”和“假”两种值。在Visual FoxPro中,逻辑真用.T.、.t.、.Y.或.y.表示,逻辑假用.F.、.f.、.N.或.n.表示。注意字母前后的圆点一定不能丢。,Visual FoxPro,23,3.4.2 变量 变

15、量是在操作过程中可以改变其值的数据对象。在Visual FoxPro中变量分为字段变量、内存变量、数组变量和系统变量4类。此外,作为面向对象的程序设计语言,Visual FoxPro在进行面向对象的程序设计中引入了对象的概念,对象实质上也是一类变量。确定一个变量,需要确定其3个要素:变量名、数据类型和变量值。,Visual FoxPro,24,1命名规则 (1)使用字母、汉字、下划线和数字命名。 (2)命名以字母或下划线开头。除自由表中字段名、索引的TAG标识名最多只能10个字符外,其他的命名可使用1128个字符。 (3)为避免误解、混淆,避免使用Visual FoxPro的保留字。 (4)文

16、件名的命名应遵循操作系统的约定。,Visual FoxPro,25,2字段变量 字段变量就是表中的字段名,它是表中最基本的数据单元。字段变量是一种多值变量,一个表有多少条记录,那么该表的每一字段就有多少个值,当用某一字段名做变量时,它的值就是表记录指针所指的那条记录对应字段的值。字段变量的类型可以是Visual FoxPro的任意数据类型。字段变量的名字、类型、长度等是在定义表结构时定义的。,Visual FoxPro,26,3内存变量 Visual FoxPro中,除了字段变量外,还有一种变量,它独立于表,是一种临时工作单元,称为内存变量。内存变量的类型有字符型、数值型、货币型、逻辑型、日期

17、型和日期时间型等。 可直接用内存变量名对内存变量进行访问,但若它与字段变量同名时,则应该用如下格式进行访问: M.内存变量名 M-内存变量名,Visual FoxPro,27,(1)内存变量的赋值 给内存变量赋值的命令有两种格式: = STORE TO 该命令先计算表达式的值,然后将表达式的值赋给一个或几个内存变量。第一种格式只能给一个内存变量赋值。第二种格式可以同时给多个内存变量赋相同的值,各内存变量名之间用逗号分隔。内存变量的数据类型取决于表达式值的类型。可以通过对内存变量重新赋值来改变其值和类型。,Visual FoxPro,28,(2)内存变量的显示 可以用命令显示当前已定义的内存变量

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

19、,如果内存变量多,显示一屏后暂停,按任意键后再继续显示下一屏。,Visual FoxPro,30,(3)内存变量文件的建立 将所定义的内存变量的各种信息全都保存到一个文件中,该文件称为内存变量文件。其默认的扩展名为.mem。建立内存变量文件命令的格式为: SAVE TO ALL LIKE|EXCEPT 其中,ALL表示将全部内存变量存入文件中。ALL LIKE 表示内存变量中所有与通配符相匹配的内存变量都存入文件。ALL EXCEPT 表示把与通配符不匹配的全部内存变量存入文件中。,Visual FoxPro,31,(4)内存变量的恢复 内存变量的恢复是指将已存入内存变量文件中的内存变量从文件

20、中读出,装入内存中。其命令格式为: RESTORE FROM ADDITIVE 若命令中含有ADDITIVE任选项,系统不清除内存中现有的内存变量,并追加文件中的内存变量。,Visual FoxPro,32,(5)内存变量的清除 清除内存变量并释放相应的内存空间,所采用命令的格式为: CLEAR MEMORY RELEASE ALL LIKE|EXCEPT 其中第一条命令是清除所有的内存变量,第二条命令是清除指定的内存变量。,Visual FoxPro,33,4数组变量 在Visual FoxPro中,数组变量被定义为一组变量的集合,这些变量可以具有不同的数据类型。数组由数组元素组成,每个数组

21、元素就相当于一个内存变量,它可以用数组名后接顺序号来表示,顺序号也叫下标。 (1)数组的定义 Visual FoxPro规定,数组在使用之前必须用数组说明命令进行定义,即定义数据名、维数和大小。其命令格式为: DIMENSION (,(,下标上界2),Visual FoxPro,34,两条命令的功能完全相同,用于定义一维或二维数组。下标上界是一数值量,下标的下界由系统统一规定为1。 数组一经定义,它的每个元素都可当作一个内存变量来使用,因此它具有与内存变量相同的性质。Visual FoxPro命令行中可以使用内存变量的地方都能用数组元素代替。,Visual FoxPro,35,(2)数组的赋值

22、 可以使用赋值命令给数组元素赋值,也可以给整个数组的各个元素赋以相同的值。例如命令: b=73 为上面定义的二维数组b的6个元素都赋以同样的值73。 在没有向数组元素赋值之前,数组元素的初值均为逻辑假(.F.)值。 在Visual FoxPro中,二维数组各元素在内存中按行的顺序存储,它们也可按一维数组元素的顺序来存取数据。如上述二维数组b中的元素b(2,1)是排在第2行第1列,由于每一行是3个元素,所以b(2,1)也可按b(4)表示。,Visual FoxPro,36,3.3.1 数值函数 1. 求绝对值函数 格式:ABS() 功能:求数值型表达式的绝对值。函数值为数值型。 2. 求平方根函

23、数 格式:SQRT() 功能:求数值型表达式的算术平方根,数值型表达式的值应不小于零。函数值为数值型。 3. 求指数函数 格式:EXP() 功能:将数值型表达式的值作为指数x,求出ex的值。函数值为数值型。,3.3 Visual FoxPro的内部函数,Visual FoxPro,37,4. 求对数函数 格式:LOG() LOG10() 功能:LOG求数值型表达式的自然对数,LOG10求数值型表达式的常用对数,数值型表达式的值必须大于零。函数值为数值型。 5. 取整函数 格式:INT() CEILING() FLOOR(),Visual FoxPro,38,功能:INT取数值型表达式的整数部分

24、。CEILING取大于或等于指定表达式的最小整数。FLOOR取小于或等于指定表达式的最大整数。函数值均为数值型。 举例: x=56.72 ? INT(x),INT(-x), CEILING(x),CEILING(-x),FLOOR(x),FLOOR(-x) 三个函数的值依次为56,-56,57,-56,56,-57。,Visual FoxPro,39,6. 求余数函数 格式:MOD(,) 功能:求除以所得出的余数,所得余数的符号和表达式2相同。如果被除数与除数同号,那么函数值即为两数相除的余数。如果被除数与除数异号,则函数值为两数相除的余数再加上除数的值。函数值为数值型。,Visual Fox

25、Pro,40,举例: ? 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的百、十、个位数字。,Visual FoxPro,41,7. 四舍五入函数 格式:ROUND(,) 功能:对求值并保留n位小数,从n+1位小数起进行四舍五入n的值由数值型表达式2确定),若n小于0,则对的整

26、数部分按n的绝对值进行四舍五入。 举例: ? ROUND(3.1415*3,2),ROUND(156.78,-1) 输出的函数值分别为9.42和160。,Visual FoxPro,42,8. 求最大值和最小值函数 格式:MAX(), ) MIN(, ) 功能:MAX求n个表达式中的最大值,MIN求n个表达式中的最小值。表达式的类型可以是数值型、字符型、货币型、浮点型、双精度型、日期型和日期时间型,但所有表达式的类型应相同。函数值的类型与自变量的类型一致。,Visual FoxPro,43,举例: ? MAX(2003-08-16,2002-08-16),MIN(助教,讲师,副教授,教授) 输

27、出的函数值分别为08/16/03、副教授。 9.函数 格式:PI() 功能:返回圆周率的近似值。,Visual FoxPro,44,3.3.2 字符函数,字符函数是处理字符型数据的函数,其自变量或函数值中至少有一个是字符型数据。 1. 宏代换函数 格式:&.字符表达式 功能:代换出一个字符型内存变量的内容。若与后面的字符无空格分界,则&函数后的“.”必须有。,Visual FoxPro,45,举例: i=“1“ j=“2“ x12=“Good“ Good=MAX(96/01/02,65/05/01) ? x&i.&j,&x12 输出的内容依次是Good和48。又如 m=“245*SQRT(4)

28、“ ? 34+&m 输出为524.00。,Visual FoxPro,46,2. 求字符串长度函数 格式:LEN(字符型表达式) 功能:求字符串的长度,即所包含的字符个数。若是空串,则长度为0。函数值为数值型。 3. 求子串位置函数 格式:AT(,) ATC(,) 功能:若的值存在于的值中,则给出在中的开始位置,若不存在,则函数值为0。函数值为数值型。ATC函数在子串比较时不区分字母大小写。,Visual FoxPro,47,举例: xm=“李小四“ ? AT(“李“,xm),AT(“PRO“,“Visual FoxPro“),ATC(“PRO“,“Visual FoxPro“) 输出的函数值

29、分别为1、0、11。,Visual FoxPro,48,4. 取子串函数 格式:LEFT(,) RIGHT(字符型表达式, SUBSTR(, 功能:LEFT函数从字符型表达式左边的第一个字符开始截取子串,RIGHT函数从字符型表达式右边的第一个字符开始截取子串。若数值型表达式的值大于0,且小于等于字符串的长度,则子串的长度与数值型表达式值相同。若数值型表达式的值大于字符串的长度,则给出整个字符串。若数值型的表达式小于或等于0,则给出一个空字符串。,Visual FoxPro,49,SUBSTR函数对字符型表达式从指定位置开始截取若干个字符。起始位置和字符个数分别由数值型表达式1和数值型表达式2

30、决定。若字符个数省略,或字符个数多于从起始位置到原字符串尾部的字符个数,则取从起始位置起,一直到字符串尾的字符串作为函数值。若起始位置或字符个数为0,则函数值为空串。显然SUBSTR函数可以代替LEFT函数和RIGHT函数的功能。 举例: xm=“李小四“ ? SUBSTR(xm,1,2),LEFT(xm,1) 输出的函数值均为:李。若xm代表职工姓名,则用这两个函数可以取出职工的姓。,Visual FoxPro,50,5. 删除字符串前后空格函数 格式:LTRIM() RTRIM() ALLTRIM() 功能:LTRIM删除字符串的前导空格。 RTRIM删除字符串的尾部空格。RTRIM亦可写

31、成TRIM。 ALLTRIM删除字符串中的前导和尾部空格。ALLTRIM函数兼有LTRIM和RTRIM函数的功能。,Visual FoxPro,51,6. 生成空格函数 格式:SPACE() 功能:生成若干个空格,空格的个数由数值型表达式的值决定。 举例: name=SPACE(8) ? LEN(LTRIM(name) 输出的函数值为0。,Visual FoxPro,52,7. 字符串替换函数 格式:STUFF(,) 功能:用去替换中由起始位置开始所指定的若干个字符。起始位置和字符个数分别由数值型表达式1和数值型表达式2指定。如果字符型表达式2的值是空串,则字符型表达式1中由起始位置开始所指定

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

33、:Y、yes。在字符串中,同一字母的大小写为不同字符,如果利用大小字母转换函数,就可以不考虑字符串中的字母是大写还是小写。,Visual FoxPro,55,3.3.3 日期和时间函数 日期时间函数是处理日期型或日期时间型数据的函数。 1. 系统日期和时间函数 格式:DATE() TIME() DATETIME() 功能:DATE函数给出当前的系统日期,函数值为日期型。 TIME函数给出当前的系统时间,形式为hh:mm:ss,函数值为字符型。 DATETIME函数给出当前的系统日期和时间,函数值为日期时间型。,Visual FoxPro,56,2. 求年份、月份和天数函数 格式:YEAR(|)

34、 MONTH(|) DAY(|) 功能:YEAR函数返回日期表达式或日期时间型表达式所对应的年份值。 MONTH函数返回日期型表达式或日期时间型表达式所对应的月份,月份以数值112来表示。 DAY函数返回日期型表达式或日期时间型表达式所对应月份里面的天数。,Visual FoxPro,57,举例: d=2003-08-16 ? YEAR(d),MONTH(d),DAY(d) 输出的函数值分别为2003、8、16。,Visual FoxPro,58,3. 求时、分和秒函数 格式:HOUR() MINUTE() SEC() 功能:HOUR函数返回日期时间型表达式所对应的小时部分(按24小时制)。

35、MINUTE函数返回日期时间型表达式所对应的分钟部分。 SEC函数返回日期时间型表达式所对应的秒数部分。,Visual FoxPro,59,举例: d=2003-08-16,5:43:56 P ? HOUR(d),MINUTE(d),SEC(d) 输出的函数值分别为17、43、56。,Visual FoxPro,60,3.3.4 数据类型转换函数 1. 将字符转换成ASCII码的函数 格式:ASC() 功能:给出指定字符串最左边的一个字符的ASCII码值。函数值为数值型。 2. 将ASCII值转换成相应字符函数 格式:CHR() 功能:将数值型表达式的值作为ASCII码,给出所对应的字符。,V

36、isual FoxPro,61,举例: ch1=“M“ ch2=CHR(ASC(ch1)+ASC(“a“)-ASC(“A“) ? ch2 字符变量ch2的值为m。若ch1的值为某个大写字母,则利用求ch2的表达式可求出对应的小写字母。注意,在ASCII表中,字母是连续排列的,任何一个字母其大小写ASCII码值之差是相等的。,Visual FoxPro,62,3. 将字符串转换成日期或日期时间函数 格式:CTOD() CTOT() 功能:CTOD函数将指定的字符串转换成日期型 数据,CTOT函数将指定的字符串转换成日期时间型数据。字符型表达式中的日期部分格式要与系统设置的日期显示格式一致,其中的

37、年份可以用4位,也可以用2位。如果用2位,则世纪值由SET CENTURY TO 命令指定。,Visual FoxPro,63,举例: ch1=“M“ ch2=CHR(ASC(ch1)+ASC(“a“)-ASC(“A“) ? ch2 字符变量ch2的值为m。若ch1的值为某个大写字母,则利用求ch2的表达式可求出对应的小写字母。注意,在ASCII表中,字母是连续排列的,任何一个字母其大小写ASCII码值之差是相等的。,Visual FoxPro,64,4. 将日期或日期时间转换成字符串函数 格式:DTOC(|,1) TTOC(,1) 功能:DTOC函数将日期数据或日期时间数据的日期部分转换为字

38、符型,TTOC函数将日期时间数据转换为字符型。字符串中日期和时间的格式受系统设置的影响。对DTOC来说,若选用1,结果为yyyymmdd格式。对TTOC来说,若选用1,结果为yyyymmddhhmmss格式。,Visual FoxPro,65,5. 将数值转换成字符串函数 格式:STR(,) 功能:将数值型表达式1的值转换成字符串。转换后字符串的长度由数值型表达式2决定,保留的小数位数由数值表达式3决定。省略数值型表达式3时,转换后将无小数部分。省略数值型表达式2和数值表达式3时,字符串长度为10,无小数部分。如果指定的长度大于小数点左边的位数,则在字符串的前面加上空格,如果指定的长度小于小数

39、点左边的位数,则返回指定长度个星号*,表示出错。,Visual FoxPro,66,举例: 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.591235* 其中的代表空格。,Visual FoxPro,67,6. 将字符串转换成数值函数 格式:VAL() 功能:将由数字、正负号、小数点组成的字符串转换为数值,转换遇上非上述字符停止。若串的第一个字符即非上述字符,函数值为0。前导空格不影响转换。,Visual FoxPro,68,3.3.

40、5 测试函数 1. 数据类型测试函数 格式:VARTYPE(,) 功能:测试引号内表达式的数据类型,返回用字母代表的数据类型。函数值为字符型。未定义或错误的表达式返回字母U。若表达式是一个数组,则根据第一个数组元素的类型返回字符串。若表达式的运算结果是NULL值,则根据函数中逻辑表达式的值决定是否返回表达式的类型。具体规则是:如果逻辑表达式为.T.,则返回表达式的原数据类型。如果逻辑表达式为.F.或省略,则返回X,表明表达式的运算结果是NULL值。,Visual FoxPro,69,举例: a=DATE() a=NULL ? VARTYPE(3.46),VARTYPE($385),VARTYP

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

42、Visual FoxPro,71,4. 记录号测试函数 格式:RECNO(|) 功能:返回指定或当前工作区中当前记录的记录号,函数值为数值型。省略参数时,默认为当前工作区。如果记录指针在最后一个记录之后,即EOF()为.T.,RECNO()返回比记录总数大1的值。如果记录指针在第一个记录之前或者无记录,即BOF()为.T.,RECONO()返回1。,Visual FoxPro,72,5. 记录个数测试函数 格式:RECCOUNT() 功能:返回当前或指定表中记录的个数。如果在指定的工作区中没有表被打开,则函数值为0。如果省略参数,则默认为当前工作区。RECCOUNT()返回的值不受SET DE

43、LETED和SET FILTER的影响,总是返回包括加有删除标记在内的全部记录数。,Visual FoxPro,73,6. 查找是否成功测试函数 格式:FOUND() 功能:在当前或指定表中,检测是否找到所需的数据。如果省略参数,则默认为当前工作区。数据搜索由FIND、SEEK、LOCATE或CONTINUE命令实现。如果这些命令搜索到所需的数据记录,函数值为.T.,否则函数值为.F.。如果指定的工作区中没有表被打开,则FOUND()返回.F.。如果用非搜索命令如GO移动记录指针,则函数值为.F.。,Visual FoxPro,74,7.文件是否存在测试函数 格式:FILE() 功能:检测指定

44、的文件是否存在。如果文件存在,则函数值为.T.,否则函数值为.F.。文件名必须是全称,包括盘符、路径和扩展名,且是字符型表达式。,Visual FoxPro,75,8. 判断值介于两个值之间的函数 格式:BETWEEN(, ) 功能:判断表达式的值是否介于相同数据类型的两个表达式值之间。BETWEEN()首先计算表达式的值。如果一个字符、数值、日期、表达式的值介于两个相同类型表达式的值之间,即被测表达式的值大于或等于下限表达式的值,小于或者等于上限表达式的值,BETWEEN()将返回一个真.T.值,则返回.F.。 举例: gz=375 ? BETWEEN(gz,260,650) 输出为.T.。

45、,Visual FoxPro,76,9. 条件函数IIF 格式:IIF(,) 功能:若逻辑型表达式的值为.T.,函数值为的值,否则为的值。 举例: xb=“女“ ? IIF(xb=男,1,IIF(xb=女,2,3) 输出为2。,Visual FoxPro,77,3.4.1 算术表达式 用算术运算符将数值型数据连接起来的式子叫算术表达式。 算术运算符有(按优先级从高到低的顺序排列):()(括号)、*或(乘方)、*(乘)、/(除)、%(求余数),+(加),-(减)。 各运算符运算的优先顺序和一般算术运算规则完全相同。同级运算按自左向右的方向进行运算。各运算符的运算规则也和一般算术运算相同,其中求余

46、运算符%和求余函数MOD的作用相同。余数的符号与除数一致。,3.4 Visual FoxPro的表达式,Visual FoxPro,78,书写Visual FoxPro表达式应遵循以下规则: (1)表达式中所有的字符必须写在同一水平线上,每个字符占一格。 (2)表达式中常量的表示、变量的命名以及函数的引用要符合Visual FoxPro的规定。 (3)要根据运算符运算的优先顺序,合理地加括号,以保证运算顺序的正确性。特别是分式中的分子分母有加减运算时,或分母有乘法运算,要加括号表示分子分母的起始范围。,Visual FoxPro,79,3.4.2 字符表达式 1. 连接运算 连接运算符有完全连

47、接运算符“”和不完全连接运算符“”两种。“”运算的功能是将两个字符串连接起来形成一个新的字符串。“”运算的功能是去掉字符串1尾部的空格,然后将两个字符串连接起来,并把字符串1末尾的空格放到结果串的末尾。例如 ? “姓名“李小四“+“张得猾“ 输出为: 姓名李小四张得猾,Visual FoxPro,80,2. 包含运算 包含运算的结果是逻辑值。一般格式为: $ 若包含在之中,其表达式值为.T.,否则为.F.。例如 zhch=“副教授“ ? “教授“$zhch 输出为.T.。,Visual FoxPro,81,3.4.3 日期和时间表达式 格式1: 其结果是将来的某个日期。 格式2: 其结果是过去

48、的某个日期。 格式3: 其结果是两个日期之间相差的天数。,Visual FoxPro,82,格式4: 其结果是若干秒后的某个日期时间。 格式5: 其结果是若干秒前的某个日期时间。 格式6: 其结果是两个日期时间之间相差的秒数。,Visual FoxPro,83,3.4.4 关系表达式 关系运算符有: (大于)、= (大于等于)、= (等于)、= (精确等于)、或#或!=(不等于)。它们的运算优先级相同。 关系表达式一般形式为: e1 e2 其中e1、e2可以同为数值型表达式、字符型表达式、日期型表达式或逻辑型表达式。但=仅适用于字符型数据。关系表达式表示一个条件,条件成立时值为.T.,否则为.

49、F.。,Visual FoxPro,84,各种类型数据的比较规则如下: (1)数值型和货币型数据根据其代数值的大小进行比较。 (2)日期型和日期时间型数据进行比较时,离现在日期或时间越近的日期或时间越大。 (3)逻辑型数据比较时,.T.比.F.大。,Visual FoxPro,85,(4)对于字符型数据,Visual FoxPro可以设置字符的排序次序。在“工具”菜单中选择“选项”,将打开“选项”对话框,在“数据”选项卡的“排序序列”下拉列表框中选择“Machine”、“PinYin”或“Stroke”项并确定。 若选择“Machine”,字符按照机内码顺序排序。对于西文字符而言,按其ASCII码值大小进行排列:空格在最前面,大写字母在小写字母前面,数字在字母之前。因此,空格最小,大写字母小

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1