1 / 69

本 章 内 容

第三章 数据与数据运算. 本 章 内 容. §3.1 Visual FoxPro 数据类型 §3.2 数据存储 §3.2.1 常量 §3.2.2 变量 §3.2.3 数组 §3.2.4 字段变量. §3.3  函数 §3.3.1 VFP 函数与分类 §3.3.2  常用系统函数的概念 §3.4  运算符 §3.5  表达式 §§3.5.1  表达式概述 §3.5.2  各类表达式. 3.1 Visual FoxPro 数据类型.

marla
Download Presentation

本 章 内 容

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第三章 数据与数据运算 本 章 内 容 §3.1 Visual FoxPro数据类型 §3.2 数据存储 §3.2.1 常量 §3.2.2 变量 §3.2.3 数组 §3.2.4 字段变量 §3.3 函数 §3.3.1VFP函数与分类 §3.3.2 常用系统函数的概念 §3.4 运算符 §3.5 表达式 §§3.5.1 表达式概述 §3.5.2 各类表达式

  2. 3.1Visual FoxPro数据类型 数据概念的内含包括两方面:数据内容和数据形式。数据内容用于描述客观事物的特征,即数据的“值”;数据形式是指数据内容存储于媒体中的形式,即数据的“类型”。 在Visual FoxPro中,数据可以存放在常量、变量、数组、字段、记录和对象等数据容器中。 数据类型定义之后,就确定了其存储方式和使用方式。只有相同类型的数据之间才能进行运算,否则就会导致数据类型不匹配的错误。

  3. 表3-1VFP数据类型

  4. 说明: (1)表3-1未列出二进制字符型和二进制备注型这两种数据类型。 (2)表的字段可使用全部的数据类型,而常量和内存变量只能使用字符型、数值型、货币型、日期型、日期时间型和逻辑型这6种类型的数据。

  5. §3.2 数据存储 在Visual FoxPro中,数据不但可以存放在常量、变量、数组中,还可以存放在字段、记录和对象中。常量、变量、数组以及字段、记录和对象统称为Visual FoxPro数据容器,如下图所示。 常量 字段变量 变量 简单变量 VFP数据 内存变量 下标变量(数组元素) 系统函数 函数 自定义函数

  6. §3.2.1 常量 常量是指在操作过程中其值保持不变的量。有N、Y、C、D、T和L共6种类型。 1.数值(N)型常量:正负整数或小数。 (1)普通记数法:12,-24,3.1416 (2)科学记数法:5.863E12 &&表示5.863×1012 3.246E-8 &&表示3.246×10-8 2.货币(Y)型常量:用于表示货币值的常量。 货币型常量的前置符为$,小数保留4位,超过4位小数,则自动四舍五入。 3.字符(C)型常量:用一对定界符(" ",' ',[ ])括起来的字符串。 (1)半角的定界符要成对匹配使用。 (2)当字符串本身包含定界符时,要使用其他定界符。如:["ABC" 'abc'] (3)不包含任何字符的字符串("")为空串。

  7. 4.日期(D)型常量 (1)传统格式的日期常量 1)格式:{mm/dd/yy}或{mm-dd-yy}或{mm.dd.yy} 2)说明: ①传统格式日期只能在SET STRICTDATE TO 0状态下使用。 ②分隔符“/”(默认)、“-”和“.”三者等效。可以使用SET MARK TO "/"|"-"|"."命令来指定日期的分隔符。 ③传统格式日期的格式受到SET命令影响。 命令格式:SET CENTURY ON|OFF 功能:用于设置年份的位数。若选用OFF(默认值),则年份用2位数表示;若选用ON,则年份用4位数(包含世纪)表示。 命令格式:SET DATE TO AMERICAN|ANSI 功能:设置日期显示的格式。若选用AMERICAN(默认值),则日期显示的格式为mm/dd/yy;若选用ANSI,则日期显示的格式为yy-mm-dd。

  8. (2)严格格式的日期常量 1)格式:{^yyyy-mm-dd} 2)说明: ①VFP默认在日期中使用严格格式,这样就可以避免“千年虫”的问题。 ②严格格式日期不受有关日期的SET语句的影响。 ③分隔符“/”(默认)、“-”和“.”三者等效。 5.日期时间(T)型常量 (1)格式:{<日期>[,|][hh[:mm[:ss]]][a|p]} (2)说明: 1)<日期>包含传统格式和严格格式两种。 2)[,|]表示<日期>和<时间>之间的分隔符可用逗号或空格。 3)VFP默认使用12小时制,a表示上午,p表示下午。 日期和时间的格式不但可以用命令设置,还可以使用“选项”对话框设置。

  9. 6.逻辑(L)型常量:只有逻辑真和逻辑假两个值。6.逻辑(L)型常量:只有逻辑真和逻辑假两个值。 用户输入时,逻辑真可用 .T. 、 .t. 、 .Y. 和 .y. 中的任意一种;逻辑假可用 .F. 、 .f. 、 .N. 和 .n. 中的任意一种。 VFP输出时,逻辑真用.T.,逻辑假用. F.。 小结: 字符(C)型常量的定界符是一对双引号、单引号或方括号;日期(D)型和日期时间(T)型常量的定界符是一对花括号;逻辑(L)型常量的定界符是一对圆点。

  10. §3.2.2 变量 1.变量概述 (1)变量的意义:计算机中的变量是内存中一个存储区域,变量名是存储区域的标识名,变量值是存放在该存储区域中的数据。 (2)VFP的变量分类 字段变量 变量 简单变量 内存变量 下标变量(数组元素)

  11. (3)确定一个变量需要3个要素:变量名、数据类型和变量值。(3)确定一个变量需要3个要素:变量名、数据类型和变量值。 (4)字段变量是在创建表文件时定义的变量。字段变量的类型在创建表文件时定义。 (5)内存变量是独立于表文件之外而保存于内存中的变量。内存变量的类型取决于它所存储的数据的类型。 2.内存变量 (1)内存变量的类型 (2)内存变量的命名 1)内存变量名用于标识内存变量。内存变量名的构成约定如下:可以由字母、汉字、数字和下划线组成;必须以字母或汉字开头;内存变量名中不能嵌入空格;内存变量名最长为128个字符。 2)在VFP中,内存变量名允许与系统保留字(已经用于VFP命令的关键词和函数名)同名,但尽量不用保留字作为内存变量名。

  12. (3)内存变量赋值命令 格式1:<内存变量名>=<表达式> 格式2:STORE <表达式> TO <内存变量名表> 功能:将表达式的值存放入内存变量。 说明:“=”不等同于等号,在这里它是赋值操作符。 【例3-2】 X=200+300 && X,X为N型内存变量 职称="工程师" && “职称”为C型内存变量 STORE 3,4,5 TO X,Y,Z &&该命令出错,为什么? STORE 3 TO X,Y,Z &&该命令等价于X=3,Y=3,Z=3三条命令 ? X &&输出X的值为3,内存变量的类型和值取决于最后一次赋值。

  13. 3.内存变量常用命令 (1)显示内存变量 格式:LIST|DISPLAY MEMORY [LIKE <通配符>] [TO PRINTER|TO FILE <文件名>] 功能:显示内存当前的信息,包括内存变量的名、作用域、类型和取值。 说明: 1)命令动词表示做什么,必须写在命令的开头;短语又称子句,表示操作的对象及怎么做,其位置可以任意。 2)使用LIST,则连续滚动显示;使用DISPLAY,则分屏显示,按任意键后继续显示。 3)通配符?代表该位置任意一个字符;通配符*代表该位置若干个连续字符。 4)若选用TO PRINTER,则由打印机输出显示的内容;若选用TO FILE <文件名>,则将输出内容写到指定名字的文件;若缺省,则输出到VFP的主窗口(屏幕)。

  14. (2)清除内存变量 格式1:CLEAR MEMORY 功能1:清除所有内存变量。 格式2:RELEASE <内存变量名表> 功能2:清除(释放)指定的内存变量。 格式3:RELEASE ALL [ LIKE <通配符> | EXCEPT <通配符>] 功能3:若选用LIKE子句,则清除与通配符相匹配的内存变量;若选用EXCEPT子句,则清除与通配符不相匹配的内存变量。

  15. §3.2.3 数组 1.数组的概念 (1)数组:数组是一种特殊的内存变量,是一组同名下标变量的总称。 (2)数组元素:组成数组的下标变量。 (3)数组维数:数组维数决定于数组元素的下标个数,而不是数组元素的个数。 (4)数组变量名:数组包含若干个下标变量,但只占用一个变量名。

  16. 2.数组的定义 格式: DIMENSION <数组名>( <下标上限1> [ , <下标上限2> ] ) [ , …] 功能:定义数组。 说明: (1)一个语句可定义多个不同维数的数组 【例3-3】 DIMENSION X(5) ,Y(2,3) &&一个语句可定义多个不同维 数的数组 ? X(5) ,Y(1,2) &&输出数组元素的值 .F. .F.&&数组元素的初值为.F.

  17. (2)一切使用简单变量的地方,均可以使用数组元素。或者说数组元素可与简单变量等同使用。(2)一切使用简单变量的地方,均可以使用数组元素。或者说数组元素可与简单变量等同使用。 【例3-4】 CLEAR MEMORY DIMENSION Y(2,2) &&数组元素为Y(1,1),Y(1,2),Y(2,1)和 Y(2,2),其初值皆为.F. STORE “XXX” TO X1,Y(1,1) &&等价于X1=“XXX”,Y(1,1)="XXX" Y(2,1)={^2001-03-23} X2=$123.23 DISPLAY MEMORY LIKE Y* &&命令执行结果见下页

  18. Y Pub(Public公用) A(Array数组) ( 1, 1) C "XXX" ( 1, 2) L .F. ( 2, 1) D 03/23/01 ( 2, 2) L .F. XY3={^2001-08-22,11:30p} && X开头的内存变量有:X1,X2,XY3 DISPLAY MEMORY LIKE X* RELEASE ALL EXCEPT X* DISPLAY MEMORY LIKE X* X1 Pub Y 123.2300 X2 Pub C "XXX" XY3 Pub T 08/22/01 11:30:00PM

  19. 【例3-5】 DIMENSION A(3) A=8 &&等效于A(1)=8,A(2)=8,A(3)=8 ? A(1),A(2),A(3) 8 8 8 (4)数组可以与简单变量同名。 【例3-6】 DIMENSION B(3) B=8 ? B(1), B(2), B(3),B 8 8 8 8 (5)在赋值语句中,表达式的位置可以出现数组名。 【例3-7】 DIMENSION C(2,3) D=C &&等价于D=C(1,1),即D=.F. ? D .F.

  20. §3.2.4 字段变量 §3.2.4 字段变量 1.字段变量 (1)字段变量是随着表文件的建立而定义的变量。 (2)字段变量是多值变量,当前记录所对应的值为字段变量的值。 (3)表文件打开后,字段变量即可用。 2.变量的优先级 (1)允许内存变量与字段变量同名。 (2)同名时默认字段变量优先。 (3)可用“M->变量名”或“M.变量名”指定内存变量。

  21. 【例3-9】假设已经建立了职工简况表Zgjk.dbf,查看以下的执行命令执行的结果,体会变量的优先级的含义。【例3-9】假设已经建立了职工简况表Zgjk.dbf,查看以下的执行命令执行的结果,体会变量的优先级的含义。 USE Zgjk &&打开“Zgjk.dbf”表文件 LIST &&显示表的全部记录,执行后记录指针指向表的结束标记EOF GO 1 &&把记录指针移到第1记录 ? 姓名 &&输出字段变量“姓名”的值 李成华 姓名="赵小辉“ &&“姓名”为内存变量名,允许内存变量与字段变量同名 ? 姓名 &&同名时默认字段变量优先,所以此时“姓名”是字段变量 李成华&&字段变量“姓名”的值为“李成华” ? M->姓名 &&指定“姓名”为内存变量 赵小辉&&内存变量的值为“赵小辉” ? M.姓名 &&指定“姓名”为内存变量 赵小辉&&内存变量的值为“赵小辉”

  22. §3.3 函数 §3.3.1VFP函数的概念与分类 1.VFP函数的概念 (1)VFP函数实质是一段具有特定功能的程序,只不过程序代码对用户是不可见的,用户只需知道函数的功能和用法。 (2)VFP函数在形式与使用上都与数学函数相似。 (3)各函数的参数(自变量)必须是特定类型的数据。 (4)函数有一个返回值(函数值),返回值的类型不一定与参数的数据类型一致。 (5)函数的类型取决于返回值的类型。若不注意到这一点,在构造表达式时,将可能产生数据类型不匹配的错误。

  23. 2.VFP函数的分类 (1)按函数提供的方式分类 按提供的方式函数可分为:系统函数和自定义函数两大类。 (2)按数据类型分类 按数据类型函数可分为:数值函数、字符函数、日期函数、日期时间函数、逻辑函数等。 (3)按函数功能分类 按功能函数可分为:转换函数、测试函数、宏替换函数等。

  24. §3.3.2 常用系统函数 1.数值函数 (1)取整值函数 格式:INT(<数值表达式>) 功能:返回数值表达式值的整数部分。 【例3-10】 X=5.89 ? INT(X) , INT(-X) 5 -5

  25. (2)四舍五入函数 格式:ROUND(<数值表达式1>,<数值表达式2>) 功能:返回<数值表达式1>的四舍五入结果, <数值表达式2>指定要保留的小数位数。 【例3-11】 X=345.345 ? ROUND(X,2), ROUND(X,1), ROUND(X,0), ROUND(X,-1) 345.35 345.3 345 350

  26. (3)求余数函数 格式:MOD(<数值表达式1>,<数值表达式2>) 功能:返回<数值表达式1>除以<数值表达式2>的余数。若被除数与除数同号,则函数值为两数相除的余数;若被除数与除数异号,则函数值为两数相除的余数再加上除数的值。 【例3-12】 ? MOD(10,3), MOD(10,-3), MOD(-10,3), MOD(-10,-3) 1 -2 2 -1 求余数的运算的原理如下图所示。

  27. (4)求最大值函数 格式:MAX(<数值表达式1>,<数值表达式2>,[<数值表达式3>…]) 功能:计算各表达式的值,返回其中的最大值。 【例3-13】 ? MAX(345,-3.71,57) 345 (5)求最小值函数 格式:MIN(< 数值表达式1 > , < 数值表达式 2 > , [ < 数值表达式 3 > …] ) 功能:计算各表达式的值,返回其中的最小值。 【例3-14】 ? MIN(345,-3.71,57) - 3.71

  28. 2.参数是字符的函数 函数参数(自变量)是字符型,函数返回值的类型不一定是字符型。函数的类型取决于返回值的类型。所以参数是字符型的函数不一定是字符型函数。 (1)求字符串长度函数 格式:LEN(<字符表达式>) 功能:返回字符表达式值的长度。 说明:该函数是N型函数(不是C型函数)。 【例3-15】 ? LEN(”Visual Foxpro”) 13

  29. (2)大小写转换函数 格式1:UPPER(<字符表达式>) 格式2:LOWER(<字符表达式>) 功能1:将表达式中的字母转为大写。 功能2:将表达式中的字母转为小写。 说明:该函数是C型函数。 【例3-16】 ? UPPER("Visual FoxPro") , LOWER("Visual FoxPro") VISUAL FOXPRO visual foxpro

  30. (3)生成空格字符串函数 格式:SPACE(<数值表达式>) 功能:生成空格字符串,长度由数值表达式值决定。 说明:该函数是C型函数。 【例3-17】 ? "北京"+SPACE(4)+"2008奥运会" 北京2008奥运会

  31. (4)删除字符串前后空格函数 格式1:TRIM(<字符表达式>) 功能1:删除字符表达式值的尾部空格。 格式2:LTRIM(<字符表达式>) 功能2:删除字符表达式值的前导部空格。 格式3:ALLTRIM(<字符表达式>) 功能3:删除字符表达式值的前导和尾部空格。 说明:该函数是C型函数。 【例3-18】 ? LEN(" TEST ") 12 ? LEN(TRIM(" TEST ")) 8 ? LEN(LTRIM(" TEST ")) 8 ? LEN(ALLTRIM(" TEST ")) 4

  32. (5)取子串函数 格式1:LEFT(<字符表达式>,<长度>) 功能1:从字符表达式值(字符串)的左端开始取出指定长度的子串作为函数值。 格式2:RIGHT(<字符表达式>,<长度>) 功能2:从字符表达式值(字符串)的右端开始取出指定长度的子串作为函数值。 格式3:SUBSTR(<字符表达式>,<起始位置>,<长度>) 功能3:从字符表达式值(字符串)的指定位置开始取出指定长度的子串作为函数值。若缺省<长度>,则 从指定位置开始一直取到最后一个字符。 说明:该函数是C型函数。 【例3-19】 X="GOOD BYE!" &&注意:空格也是一个字符 ? LEFT(X,2), RIGHT(X,4), SUBSTR(X,6,2), SUBSTR(X,6) GO BYE! BY BYE!

  33. (6)求子串位置函数 格式:AT(<字符表达式1>,<字符表达式2>) 功能:若<字符表达式1>是<字符表达式2>的子串,则返回<字符表达式1>值的首字符在<字符表达式2>值中首次出现的位置;若不是子串,则返回0。 说明:该函数是N型函数。 【例3-20】 ? AT("Fox","Visual FoxPro") , AT("fox","Visual FoxPro") 8 0

  34. 3.参数是日期和日期时间的函数 (1)系统日期和时间函数 格式1:DATE( ) 功能1:返回系统当前日期,为D型函数。 格式2:TIME( ) 功能2:返回系统当前时间,为C型函数。 格式3:DATETIME( ) 功能3:返回系统当前日期时间,为T型函数。 【例3-21】 ? DATE( ) , TIME( ) , DATETIME( ) 10/06/04 20:41:02 10/06/04 08:41:02 PM

  35. (2)求年份、月份、天数函数 格式1:YEAR(<日期表达式>|<日期时间表达式>) 功能1:从D型表达式或T型表达式的值中返回年份,为N型函数。 格式2:MONTH(<日期表达式>|<日期时间表达式>) 功能2:从D型表达式或T型表达式的值中返回月份,为N型函数。 格式3:DAY(<日期表达式>|<日期时间表达式>) 功能3:从D型表达式或T型表达式的值中返回日数,为N型函数。 【例3-22】 D=DATE( ) ? YEAR(D), MONTH(D), DAY(D) 2004 10 6

  36. (3)求时、分、秒函数 格式1:HOUR(<日期时间表达式>) 功能1:从T型表达式的值中返回小时,为N型函数。 格式2:MINUTE(<日期时间表达式>) 功能2:从T型表达式的值中返回分钟,为N型函数。 格式3:SEC(<日期时间表达式>) 功能3:从T型表达式的值中返回秒数,为N型函数。 【例3-23】 T= DATETIME( ) ? HOUR(T), MINUTE(T), SEC(T) 20 45 34

  37. (1)数值转换成字符串函数(N型→C型) 格式:STR(<数值表达式>[,<长度>[,<小数位>]]) 功能:将<数值表达式>的值转换成字符串。 说明: 1)若<长度>小于<数值表达式>值的整数部分,返回*(表示无法转换)。 2)小数点和负号都单独占一位。 3)转换时自动对小数进行四舍五入。 4)若缺省<长度>,则默认10;缺省<小数位>,则默认0。 【例3-24】 N = -123.456 ? STR(N,9,2) ,STR(N,6,1) ,STR(N,3) , STR(N,6) , STR(N) □□-123.46 - 123.5 *** □□-123 □□□□□□ -123

  38. (2)字符串转换成数值函数(C型→N型) 格式:VAL(<字符表达式>) 功能:将字符型数字(由正负号、数字和小数点组成)转换成 数值。 说明:遇到非数字字符即停止转换。 【例3-25】 ? VAL("-123.45"), VAL("-12A.45"), VAL("A-123.45") -123.45 -12.00 0.00 (3)字符串转换成日期函数(C型→D型) 格式:CTOD(<字符表达式>) 功能:将<字符表达式>的值转换成日期型数据。 【例3-26】 ? CTOD("09/10/2003") 09/10/03

  39. (4)字符串转换成日期时间函数(C型→T型) 格式:CTOT(<字符表达式>) 功能:将<字符表达式>的值转换成日期型数据。 【例3-27】 ? CTOT("09/10/2003 20:09:52") 09/10/03 08:09:52 PM (5)日期或日期时间函数转换成字符串(D或T型→C型) 格式:DTOC(<日期表达式>|<日期时间表达式>[,1]) 功能:将表达式值的日期部分换成字符型数据。 说明:在DTOC( )函数中,若使用选项“,1”,则字符串的格 式为YYYYMMDD,共8个字符。

  40. 【例3-28】 C1=DTOC(DATE()) &&将系统日期转换成字符串,并放入内存变量C1 C2=DTOC(DATE(),1) &&指定转换成的字符串格式为YYYYMMDD ? C1 , C2 10/06/04 20041006 T1=DTOC(DATETIME()) T2=DTOC(DATETIME (),1) ? T1,T2 10/06/04 20041006

  41. (6)日期时间函数转换成字符串(T型→C型) 格式:TTOC(<日期时间表达式>[,1]) 功能:将日期时间型数据换成字符型数据。 说明:在TTOC( )函数中,若使用选项“,1”,则字符 串 的格式为YYYYMMDDHHMMSS,共14个字符。 【例3-29】 ? TTOC(DATETIME()) 10/06/04 09:19:17 PM ? TTOC(DATETIME(),1) 20041006211917

  42. (7)宏替换函数 格式:&<字符型内存变量>[.] 功能:替换出字符型内存变量的内容。 说明:1)圆点[.]作为函数结束的标记。 2)它是惟一不带圆括号的函数。 【例3-30】使用宏替换函数表示表文件名和字段变量名。 NAME="Zgjk" USE &NAME&&等价于USE Zgjk XM="姓名" &&XM为字符型内存变量 ? &XM+"你好!" &&等价于 ? 姓名+"你好!" 李成华 你好!&&姓名是字段变量,李成华是字段变量的值 SKIP &&记录指针前移一条记录 ? &XM+"你好!" 李小敏 你好!

  43. 【例3-31】在宏替换函数中使用圆点作为结束的标记。【例3-31】在宏替换函数中使用圆点作为结束的标记。 ZY="财会" ? "&ZY3班" &ZY3班 &&替换结果不是预期的目的 ? "&ZY.3班" 财会3班 &&替换结果正确 5.测试函数 (1)数据类型测试函数 格式:TYPE("<表达式>") 功能:测试<表达式>的类型,返回数据类型的代码字母。 说明: 1)被测试的表达式要用一对定界符括起来。 2)该函数为C型函数。

  44. 【例3-32】 X="TCL" &&内存变量X的数据类型为C Y=10 &&内存变量Y的数据类型为N Z=$100.2 &&内存变量Z的数据类型为Y ? TYPE("X"),TYPE("Y"),TYPE("Z") C N Y ? TYPE("DATE()"), TYPE("DATETIME()") D T ? TYPE("W") U&& U表示被测表达式的数据类型未定义

  45. (2)空值测试函数 格式:EMPTY(<表达式>) 功能:若<表达式>的值为“空”,则返回.T.;否则返回.F.。 说明: 1)该函数为L型函数。 2)EMPTY( )函数参数表达式取表3-3所列的“空”值时,函数返回值为.T.。注意空值(.NULL.)的返回值为.F。 【例3-33】 X=0 Y=2.18 Z=.F. ? EMPTY(X), EMPTY(Y) , EMPTY(Z) , EMPTY(.NULL.) .T. .F. .T. .F. ? EMPTY(CTOD("")),EMPTY(CTOT("")) .T. .T.

  46. (3)表文件结束标记测试函数 格式:EOF([<工作区号>|<表别名>]) 功能:若记录指针指向表文件结束标记EOF,则返回.T.;否则返回.F.。 说明: 1)该函数为L型函数。 2)表文件结束标记EOF不是记录。 3)表文件刚打开时,记录指针指向首记录。 4)若表文件只有结构,没有记录,则函数的返回值为.T.。 5)若在指定工作区号没有打开表文件,则函数的返回值为.F.。

  47. (4)表文件开始标记测试函数 格式:BOF([<工作区号>|<表别名>]) 功能:若记录指针指向表文件开始标记BOF,则返回.T.;否则返回.F.。 说明: 1)该函数为L型函数。 2)表文件结束标记BOF不是记录。 3)表文件刚打开时,记录指针指向首记录。 4)若表文件只有结构,没有记录,则函数的返回值为.T.。 5)若在指定工作区号没有打开表文件,则函数的返回值为.F.。

  48. (5)记录号测试函数 格式:RECNO([<工作区号>|<表别名>]) 功能:返回当前记录(记录指针指向的记录)的记录号。 说明: 1)该函数为N型函数。 2)若记录指针指向BOF,则返回1。 3)若记录指针指向EOF,则返回总记录数+1。 4)若在指定工作区号没有打开表文件,则返回0。

  49. 【例3-34】 USE Zgjk &&打开表文件Zgjk.dbf,指针指向第一记录 BROWSE &&在浏览窗口中显示表记录 ? BOF() , RECNO() .F. 1 SKIP -1 &&记录指针倒退一个记录 ? BOF(),RECNO() .T. 1 GO BOTTOM ? EOF() , RECNO() .F. 8 SKIP &&等价于SKIP 1或SKIP +1 ? EOF(),RECNO() .T. 9 GO 3 &&记录指针移到第3记录 ? BOF() , EOF() , RECNO() .F. .F. 3

  50. (6)条件测试函数 格式:IIF(<逻辑表达式>,<表达式1>,<表达式2>) 功能:若<逻辑表达式>的值为.T.,则返回<表达式 1>的值;若<逻辑表达式>的值为.F.,则返回 <表达式2>的值。 【例3-35】 成绩=72 &&成绩为N型 内存变量,其值为72 ? IIF(成绩>=60 , "及格“ , "不及格") 及格

More Related