版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本章内容简介
VisualFoxPro作为一种基于关系模型的程序设计语言,具有完整的语法规则。本章主要介绍VisualFoxPro基本的语言元素,包括变量(内存变量和字段变量)、常量、函数及表达式和表达式的运算规则等。
学习目标
利用VisualFoxPro进行数据管理,除使用数据库外,还必须学会编写程序,要编写程序就要会写语句,要会写语句就要掌握组成语句的基本元素。
学习切入点及方法
本章是编写程序和写表达式的基础,涉及的内容多而琐碎。学习时,应充分利用交互工具——“命令”窗口,通过看书与操作结合的方式学习,不必死记硬背。很多函数的功能、命令及表达式,可以通过在命令窗口操作来理解和加深记忆,从而灵活运用。
计划用学时
课堂讲授6~8学时,上机6~8学时。
1/11/20251第二章VisualFoxPro数据基础2.1常量、变量及其数据类型2.2
常用函数2.3
表达式与运算1/11/20252第二章VisualFoxPro数据基础
常量:是指程序运行过程中其值保持不变的量(一个具体的、不变的值。)
1.数值型常量(Numeric)
数值型数据:由数字、小数点和正负号等组成,包括整数、小数、负数、浮点数、科学计数法表示的数等。
数值型数据用来进行数学运算。
如:140、0.33、-213、147.179、2E-8等。2.1常量、变量及其数据类型2.1.1常量1/11/20253第二章VisualFoxPro数据基础
2.字符型常量(Character)
字符型数据也称为字符串。通常用来表示文本类型的信息,它由中英文字符、汉字、数字、空格和各种专用符号组成。
字符型常量:是指用双引号“”、单引号‘’或方括号[]等定界符括起来的字符串。定界符必须配对使用。如:“kunming”、‘昆明市’、[1234]。
如果一种定界符已作为字符型常量的组成部分,应当选择另一种定界符来标识字符串。例如字符串:
[昆明又称为“春城”]2.1常量、变量及其数据类型2.1.1常量1/11/20254第二章VisualFoxPro数据基础
3.逻辑型数据(Logic)
逻辑型数据:表示逻辑判断结果的值。
逻辑型数据只有两个值:True(真)False(假)
逻辑真可以表示为.T.、.t.、.Y.或.y.
逻辑假可以表示为.F.、.f.、.N.或.n.
(注意:前后两个点号是必需的。)
在“命令”窗口输入?命令及表达式:?15>34,477>230&&在主窗口中显示运算结果运算结果为:.F..T.
2.1常量、变量及其数据类型2.1.1常量1/11/20255第二章VisualFoxPro数据基础4.日期型(Date)
日期型数据:表示日期的特殊数据。日期型常量必须用花括号括起来。
(1)严格日期格式
格式为:{^yyyy-mm-dd}
如:{^2009-05-01}或{^2009/05/01},表示2009年5月1日。这种格式的日期表明该日期是严格的,按照YMD的格式来解释日期和日期时间,不受系统设置的影响,可以在任何情况下使用。
日期型数据表示范围是:{^0001-01-01}至{^9999-12-31}
(2)传统的日期格式系统默认的日期型数据为美国日期格式:
“mm/dd/yy”(月/日/年)
月和日各为2位,而年可以是2位,也可以是4位,系统默认为2位。具体年代使用2位还是4位,由系统设置决定。2.1常量、变量及其数据类型2.1.1常量1/11/20256第二章VisualFoxPro数据基础(3)影响日期格式的设置命令和选项
①在日期格式中,系统默认的分隔符为:斜杠(/)。SETMARKTO[日期分隔符]:可将分隔符设置成连字符(-)或点号(.)等。没有参数的SETMARKTO命令还原系统默认的分隔符。
②SETDATETO[日期格式]:可将日期格式设置成其他格式。
如:SETDATETO
mdy命令将日期格式设置为月/日/年(mm/dd/yy)。
③SETSTRICTDATETO[0|1|2]:设置是否对日期格式进行检查。
在不进行严格日期检查时,日期型可以用传统日期格式“年
/月/日”的形式来表示,定界符可以是花括号,年月日之间的分隔符可以是斜杠(/)、连字符(-)和空格。
④SETCENTURYON/OFF:设置年份使用4位或2位表示,默认为2位。2.1常量、变量及其数据类型2.1.1常量1/11/20257第二章VisualFoxPro数据基础日期格式的设置也可以选择“工具”菜单中的“选项”命令来完成。在“区域”选项卡中设置日期格式1/11/20258第二章VisualFoxPro数据基础5.日期时间型(DateTime)
日期型常量包括日期和时间两部分:{<日期>,<时间>}
日期部分与日期型常量相似,也有严格和传统两种格式。
时间部分的格式为:[hh[:mm[:ss]][a|p]]。其中hh、mm和ss分别代表时、分和秒,默认值分别为12、0和0。AM
(或A)和PM(或P)分别代表上午和下午,默认值为AM。如果指定的时间大于12,则自然为下午时间。6.货币型(Currency)
货币型常量:用于表示货币值,是带货币单位的数据。
其书写格式与数值型常量类似,但要在前面加上货币符号$。如:
$123.45。在存储和计算时,采用4位小数,如果一个货币常量多于4位小数,那么系统将在小数点后4位进行四舍五入。2.1常量、变量及其数据类型2.1.1常量1/11/20259第二章VisualFoxPro数据基础
变量:在程序运行过程中,其值可以发生变化的量称为变量。
VisualFoxPro中有两类变量:
每个变量都有一个名字,可以通过变量名访问变量。给变量命名时,变量名必须遵守以下原则:
1、必须以字母或汉字开头。
2、变量名中只能含有字母(汉字)、数字和下划线。
3、变量名不能是保留字,如对象名、系统预先定义的函数名等。构成数据库表文件的字段变量内存变量2.1常量、变量及其数据类型2.1.2字段变量和内存变量1/11/202510第二章VisualFoxPro数据基础
2.1.2.1字段变量字段变量:表中定义好的任一数据列,通过字段名作为变量名来标识字段变量。学号姓名性别出生日期专业入学成绩三好生20090102001刘鹏男1991-10-7传媒学610.F.20090102002杨莹女1991-11-20传媒学598.T.20090201001何小方男1990-3-13管理学567.F.20090203001周红女1991-2-11管理学655.F.20090201003李艳女1991-1-21管理学587.T.20090102369张丽女1991-12-11传媒学639.F.20090301087马波男1991-12-29历史590.F.如果表中有20条记录,每一个字段名就有20个可取值。在数据库表中有一个记录指针,它指向的记录定义为当前记录,字段变量的现值就是当前记录中对应字段的值。记录指针可以移动,因此字段的取值随着指针的移动而改变,所以字段(或者字段名)是变量。2.1常量、变量及其数据类型2.1.2字段变量和内存变量1/11/202511第二章VisualFoxPro数据基础数据类型说明字符型字母、数字型文本货币型货币单位数值型整数或小数浮动型整数或小数日期型年、月、日日期时间型年、月、日、时、分、秒双精度型双精度数值整型正、负整数和零逻辑型真或假备注型不定长的字母、数字文本通用型OLE(对象链接与嵌入)字符型(二进制)字母数字型文本备注型(二进制)不定长的字母数字型文本字段变量的数据类型及其说明1/11/202512第二章VisualFoxPro数据基础
2.1.2.2内存变量内存变量:内存中的一块存储区域,变量值就是存放在这个存储区域里的数据,变量的类型取决于变量值的类型。对内存变量赋值可以改变其内容和类型。
例如,当把一个数值常量赋值给一个变量时,这个常量就被存入到变量中,它将取代变量的原值而成为该变量新的取值。
特点:是独立于数据库文件而存在的变量,用来存储数据处理过程中所需要的常数、中间结果和最终结果。还可以作为控制变量,用来控制应用程序的运行。内存变量6种类型:字符型(C)、数值型(N)、逻辑型(L)、日期型(D)、日期时间型(T)和货币型(Y)。
内存变量由赋值语句定义,它的数据类型由赋值数据的类型决定。2.1常量、变量及其数据类型2.1.2字段变量和内存变量1/11/202513第二章VisualFoxPro数据基础字段变量和内存变量的区别字段变量内存变量数据库表文件的组成部分独立于数据库文件而存在随表文件的定义而建立需要时随时定义有C、N、D、L、M、G等类型有C、N、D、L、Y、T等类型多值变量单值变量关机后保存在数据库表文件中关机后不保存,但可存入内存变量文件
如果在表中存在一个与内存变量同名的字段变量,则字段变量优先。
如果要访问内存变量,则须在变量名前加上前缀M.或者M->,否则系统将访问同名的字段变量。
1/11/202514第二章VisualFoxPro数据基础2.1.2.2内存变量
1、内存变量赋值命令
给内存变量赋值命令有“=”、STORE等。
使用“=”给变量赋值时,一次只能给一个变量赋值,而STORE
命令可以同时给多个变量赋相同的值,各内存变量名之间用逗号分开。
2、表达式值的显示命令
?和??命令可以在VisualFoxPro的主窗口中显示表达式的值。
?命令与??命令的作用相同,它们的区别是:
?命令从光标当前行的下一行开始显示,即换行输出;??命令在当前光标位置开始显示,即同行输出,??命令紧接上一个显示位置输出表达式的值。当?命令后面没有任何表达式时,输出一个空行。?命令与??命令的各个输出项之间用逗号(,)分隔。2.1常量、变量及其数据类型2.1.2字段变量和内存变量1/11/202515第二章VisualFoxPro数据基础
3、内存变量显示命令格式:LISTMEMORY[LIKE<通配符>][TOPRINT|TOFILE<文件名>]
或:DISPLAYMEMORY[LIKE<通配符>][TOPRINT|TOFILE<文件名>]
4、内存变量的清除格式:CLEARMEMORY
或:RELEASE<内存变量名表>
或:RELEASEALL[LIKE<通配符>|EXCEPT<通配符>]
第一种格式清除所有内存变量,其余格式清除指定的内存变量。RELEASEALLLIKEX*表示只清除变量名以X开头的所有内存变量。RELEASEALLEXCEPTX*表示清除除了以X开头的变量以外的所有内存变量,(保留以X开头的所有内存变量)。2.1常量、变量及其数据类型2.1.2字段变量和内存变量1/11/202516第二章VisualFoxPro数据基础
2.1.2.3数组数组:是一批数据的有序集合,数组中的每一个数据称为一个数组元素。每一个数组元素相当于一个内存变量与数组相比,内存变量又称为简单变量。与简单内存变量不同,数组必须先定义后使用。
1、数组的定义
格式:DECLARE<数组名>(<下标1>[,<下标2>])[,<数组名>(<下标1>[,<下标2>])…]
或:DIMENSION<数组名>(<下标1>[,<下标2>])[,<数组名>(<下标1>[,<下标2>])…]
两种格式功能相同。定义时将规定数组是一维或二维数组,数组名和大小。大小由下标值的上、下限决定,下限规定为1。每个数组最多可以包含3600个元素。数组创建后,在赋值前,系统自动给每个数组元素赋值为逻辑假(.F.)。
整个数组的数据类型为A(Array),使用时可以给各个元素分别赋值,一个数组中各元素的数据类型可以不同,数组元素可以是任意类型的数据,其数据类型由对该变量的赋值决定。
2.1常量、变量及其数据类型2.1.2字段变量和内存变量1/11/202517第二章VisualFoxPro数据基础2、数组的使用
数组定义后,数组中每个元素就可以像内存变量一样使用。数组元素赋值与内存变量赋值一样,可用STORE命令赋初值。
格式:STORE<表达式>TO<数组名><数组名>=<表达式>
功能:给数组中每个数组元素赋以相同的值。
在使用数组时应注意:(1)在同一运行环境,数组名不能与简单变量名相同。(2)可以用一维数组的形式访问二维数组。例如,dimensiony(2,3)定义的数组中的元素y(1,1),y(1,2),y(1,3),y(2,1),y(2,2),y(2,3)用一维数组形式可以依次表示为:y(1)、y(2)、y(3)、y(4)、y(5)、y(6)。其中y(4)与y(2,1)是同一变量。2.1常量、变量及其数据类型2.1.2字段变量和内存变量1/11/202518第二章VisualFoxPro数据基础
2.1.2.4用字段变量给数组赋值格式:SCATTER[FIELDS<字段名表>]TO<数组名>
功能:将当前表文件的当前记录各字段值赋给数组各元素。
如果无FIELDS<字段名表>选项,则按记录中字段的先后顺序传送所有字段(备注字段和通用字段除外),否则按<字段名表>指定字段顺序传送。字段的类型决定了数组变量的类型。如果数组元素个数多于传送字段数,则剩余的数组元素值不变,否则系统将自动增加数组元素个数。
例如:打开“基本信息”表文件,当前记录为第一条记录,将它复制到数组RS中。2.1常量、变量及其数据类型2.1.2字段变量和内存变量1/11/202519第二章VisualFoxPro数据基础
2.1.2.5用数组数据替换当前记录的字段值格式:GATHERFROM<数组名>[FIELDS<字段名表>]
功能:用数组元素的值顺序替换当前表文件的当前记录各字段的值。
若无FIELDS<字段名表>选项,则按数组元素的顺序从左到右地填入当前记录的每一个字段中(备注字段和通用字段除外),否则按<字段名表>指定字段填入。
若数组元素个数少于字段数,则当前记录中其余的字段值不受影响;反之剩余的数组元素不替换。例如,打开表文件,定义数组,用数组中的值填入表中。2.1常量、变量及其数据类型2.1.2字段变量和内存变量1/11/202520第二章VisualFoxPro数据基础
函数:是用来实现一种数据运算或转换的一段程序。每个函数都有特定的运算功能或转换功能。
函数按功能分为:数值运算函数、字符处理函数、日期函数、数据类型转换函数、测试函数等。
与数学函数一样,自变量称为参数,对于合法的参数,函数必有一个运算结果,称为函数值或返回值。
函数的一般形式是:<函数名>(参数表)
在使用函数时应注意以下几个问题:
(1)所有函数名必须跟随有圆括号,无论函数是否需要参数(宏代换函数&除外)。
(2)每个函数必然有一个返回值,返回值有确定的数据类型。函数可作为表达式的组成部分,在组成表达式时,需特别注意类型的匹配。
(3)传送给函数的参数也有一定的数据类型,必须按要求的数据类型传送参数值。
2.2常用函数1/11/202521第二章VisualFoxPro数据基础数值函数:通常是指函数的返回值为数值的一类函数。
1.取绝对值函数ABS()
格式:ABS(<数值表达式>)
功能:求出<数值型表达式>的绝对值。
例:?ABS(-56),ABS(70-80)5610
2.符号函数SIGN()
格式:SIGN(<数值表达式>)
功能:返回数值表达式的符号,当数值表达式的运算结果为正、负和零时,函数值分别为1、-1和0。
例:STORE77TOX?SIGN(60-X),SIGN(90-X)-112.2常用函数2.2.1数值函数1/11/202522第二章VisualFoxPro数据基础3.取整函数INT()
格式:INT(<数值表达式>)
功能:返回<数值表达式>值的整数部分。
例:?INT(40.5),INT(-40.5)40-404.最大值函数MAX()
格式:MAX(<数值表达式1>,<数值表达式2>)
功能:求两个<数值表达式>的最大值。两个<日期表达式>中的较近日期。
例:?MAX(778.8,190.5),MAX(-35,-67)778.8-35.005.最小值函数MIN()
格式:MIN(<数值表达式1>,<数值表达式2>)
功能:求两个<数值表达式>中最小值。两个<日期表达式>中的较远日期。
2.2常用函数2.2.1数值函数1/11/202523第二章VisualFoxPro数据基础6.求平方根函数SQRT()
格式:SQRT(<数值表达式>)
功能:返回指定表达式的平方根。自变量表达式的值不能为负。
例:?SQRT(67),SQRT(9),SQRT(7-5)8.193.001.417.四舍五入函数ROUND()
格式:ROUND(<数值表达式1>,<数值表达式2>)
功能:返回指定表达式在指定位置四舍五入后的结果。
<数值表达式2>指明四舍五入的位置。若<数值表达式2>大于或等于0,表示要保留的小数位数;若<数值表达式2>小于0,表示的是对整数部分进行四舍五入。
例:
?ROUND(56.785,2),ROUND(1.455,0),ROUND(56,-1),ROUND(-3.141,2)56.79160-3.142.2常用函数2.2.1数值函数1/11/202524第二章VisualFoxPro数据基础8.求余数函数MOD()
格式:MOD(<数值表达式1>,<数值表达式2>)
功能:返回两个数值相除后的余数值。
<数值表达式1>是被除数,<数值表达式2>是除数。
如果被除数与除数同号,那么函数值即为两数相除的余数;如果被除数与除数异号,则函数值为两数相除的余数再加上除数的值。
例:?MOD(10,3),MOD(-10,3),MOD(10,-3),MOD(-10,-3)12-2-1?MOD(15,4),MOD(-15,-4),MOD(-15,4),MOD(15,-4)3-31-12.2常用函数2.2.1数值函数1/11/202525第二章VisualFoxPro数据基础字符函数:通常是指自变量即参数是字符型的函数。
1.求子串函数SUBSTR()
格式:SUBSTR(<字符表达式>,<起始位置>[,<字符个数>])
功能:在<字符表达式>的字符串中,从<起始位置>开始取出<字符个数>所指定的字符。若省略第三个自变量<字符个数
>,则从指定位置一直取到最后一个字符。
例:?SUBSTR("yunnanuniversity",8,10)university?SUBSTR("我们是学生",7)
学生
2.从左端取子串函数LEFT()
格式:LEFT(<字符表达式>,<字符个数>)
功能:从指定表达式的左端取出由<字符个数>给出的指定长度的子串。
例:?LEFT("至公天下",4)
至公2.2常用函数2.2.2字符函数1/11/202526第二章VisualFoxPro数据基础3.从右端取子串函数RIGHT()
格式:RIGHT(<字符表达式>,<字符个数>))
功能:从指定表达式的右端取出由<字符个数>给出的指定长度的子串。
例:?RIGHT("会泽百家",4)
百家4.小写转大写函数UPPER()和大写转小写函数LOWER()
格式:UPPER(<字符表达式>)LOWER(<字符表达式>)
功能:UPPER()函数将字符表达式中所有小写字母转换成大写字母。
LOWER()函数将字符表达式中所有大写字母转换成小写字母。
例:?UPPER("computer")COMPUTER?LOWER("OPERATIONSYSTEM")operationsystem2.2常用函数2.2.2字符函数1/11/202527第二章VisualFoxPro数据基础5.求字符串长度函数LEN()
格式:LEN(<字符表达式>)
功能:返回指定字符表达式值的长度,即所包含的字符个数。函数值为数值型。
例:
?LEN("Unix
操作系统")136.删除字符串前后空格的函数
格式:TRIM(<字符表达式>)LTRIM(<字符表达式>)ALLTRIM(<字符表达式>)
功能:TRIM()返回指定字符表达式去掉尾部空格后得到的字符串。
LTRIM()返回指定字符表达式去掉前面空格后得到的字符串。
ALLTRIM()返回指定字符表达式去掉前面和尾部空格后得到的字符串。
例:?TRIM("VisualFoxPro")VisualFoxPro2.2常用函数2.2.2字符函数1/11/202528第二章VisualFoxPro数据基础7.求子串出现位置函数AT()
格式:AT(<字符表达式1>,<字符表达式2>[,<数值表达式>])
功能:如果<字符表达式1>是<字符表达式2>的子串,则返回<字符表达式1>的首字符在<字符表达式2>中的位置,若不是子串,则返回0。函数的返回值为数值型。
另有一个ATC()函数,与AT()功能类似,但在子串比较时不区分大小写。
<数值表达式>表明在<字符表达式2>中搜索<字符表达式1>第几次出现,默认值为1。例:?AT("Fox","Visual
FoxPro"),AT("Fox","Visual
FoxPro",1),
AT("Fox","VisualFoxPro",2)880
2.2常用函数2.2.2字符函数1/11/202529第二章VisualFoxPro数据基础8.字符串匹配函数LIKE
格式:LIKE(<字符表达式1>,<字符表达式2>)
功能:比较两个字符串对应位置上的字符,若所有对应字符都相匹配,函数返回逻辑真(.T.),否则返回逻辑假
(.F.)。
<字符表达式1>中可以包含通配符*和?。*可以与任何数目的字符相匹配,?可以与任何单个字符匹配。
例:x="we
are"
y="happy"?LIKE("we*",x),LIKE("w?",x),LIKE(y,x),LIKE("h*",y).T..F..F..T.2.2常用函数2.2.2字符函数1/11/202530第二章VisualFoxPro数据基础
日期和时间函数:是指自变量通常是日期型或日期时间型数据。
1.时间函数TIME()
格式:TIME()
功能:以“时:分:秒”(hh:mm:ss)格式返回当前系统时间,函数值为字符型。
例:如果当时的系统时间是上午11时25分17秒,则有:?TIME()11:23:17
如果提供任意数值作为自变量,则返回的时间精度为百分之一秒。
?TIME(4)11:23:17.33
2.2常用函数2.2.3日期和时间函数1/11/202531第二章VisualFoxPro数据基础2.日期函数DATE()
格式:DATE()
功能:返回当前系统日期,返回值为日期型。如果不通过SETDATE
命令特别设置,系统日期的格式为:月/日/年(MM/DD/YY)。
例:如果今天的系统日期是2004年2月11日,则有:?DATE()02/11/04
3.日期时间函数DATETIME()
格式:DATETIME()
功能:返回当前系统日期时间,返回值为日期时间型。
例:如果今天的系统日期是2004年2月11日,上午11时25分17秒,则有:?DATETIME()02/11/0411:25:17AM2.2常用函数2.2.3日期和时间函数1/11/202532第二章VisualFoxPro数据基础取年份、月份和日期函数YEAR()、MONTH()和DAY()
格式:YEAR(<日期表达式>|<日期时间表达式>)MONTH(<日期表达式>|<日期时间表达式>)DAY(<日期表达式>|<日期时间表达式>)
功能:YEAR()从指定的日期表达式或日期时间表达式中返回年份。
MONTH()从指定的日期表达式或日期时间表达式中返回月份。
DAY()从指定的日期表达式或日期时间表达式中返回月份的日期。
例:
STORE{^2009-12-25}TOD?YEAR(D),MONTH(D),DAY(D)20091225
如果当前系统日期是2009年1月1日,则:
?YEAR(DATE()),MONTH(DATE()),DAY(DATE())200911返回值均为数值型。2.2常用函数2.2.3日期和时间函数1/11/202533第二章VisualFoxPro数据基础1.字符型转换成日期型函数CTOD()
格式:CTOD(<字符型表达式>)
功能:将<字符型表达式>中的日期格式的字符串转换为日期型数据。
例:?CTOD("01/11/09")&&将字符串"01/11/09"转换成日期并显示。
01/11/092.日期型转换成字符型函数DTOC()
格式:DTOC(<日期型表达式>[,<1>])
功能:将<日期型表达式>中的日期型值转为字符型。
若无选项<1>时,则字符串的格式为:月/日/年;若指定选项为<1>时,则字符串的格式为:yyyymmdd。其中的"1"可以是任意数值。
例:假若今天是2010年2月11日,
?"今天的日期是:"+DTOC(DATE())
今天的日期是:02/11/10?"今天的日期是:"+DTOC(DATE(),1)
今天的日期是:20100211
2.2常用函数2.2.4数据类型转换函数1/11/202534第二章VisualFoxPro数据基础3.数值型转换成字符型函数STR()
格式:STR(<数值型表达式>[,<长度>][,<小数位数>])
功能:将<数值型表达式>的值转为字符型数据。
返回字符串长度理想值L=<数值型表达式>的整数部分+<小数位数>+1(小数点)。
<长度>值决定转换后的字符串长度,包括小数点、负号。
<小数位数>值决定转换后小数点右边小数位数。
若<长度>值大于L,则字符加前导空格以满足规定的<长度>要求;若
<长度>值小于L但大于等于<数值表达式>值的整数位数,则优先满足整数部分而自动调整小数位数;若<长度>值小于<数值表达式>值的整数位数,则返回一串“*”。
例:?STR(123.45,6,2),STR(3.141592,4,4),STR(76543.212,3,2)123.453.14***2.2常用函数2.2.4数据类型转换函数1/11/202535第二章VisualFoxPro数据基础4.字符型转换成数值型函数VAL()
格式:VAL(<字符表达式>)
功能:将由数字符号(包括数字、正负号、小数点)组成的<字符表达式>字符串转为数值型数据。
<字符型表达式>中必须是有效的数值表达式(可以是数值的科学计数法表示,例如:1.44E2)。若字符串内出现非数字字符,如果首字符不是数字符号,则返回数值零,否则转换前面部分。例:?VAL("123.45"),VAL("123.87hello123"),VAL("happy99.78")123.45123.870.005.宏代换函数&
格式:&<字符变量>
功能:&函数用于替换出字符型内存变量的内容,即&的值是变量中的字符串。2.2常用函数2.2.4数据类型转换函数1/11/202536第二章VisualFoxPro数据基础5.宏代换函数&
如果该函数与其后的字符无明确分界,则需用“.”号作为函数结束标识。可以嵌套。
例1:STORE"学生"TOXS
USE&XS
&&相当于打开学生表命令:USE学生
XNAME=“姓名”
&&
将“姓名”字符串赋值给变量XNAME
?XNAME,&XNAME
姓名杨波
例2:STORE"DISPLAY"TOL
USE学生
&L
&&相当于执行了DISPLAY命令
记录号
学号
姓名
性别
出生日期
专业
入学成绩
贷款否
照片
简历
120030102001杨波女06/06/1978新闻666.6.T.GenMemo
例3:STORE"*"TOsymSTORE"X&sym.Y"TOZ&&宏替换命令后的变量与其他字符用.分隔。
?Z将显示X*Y2.2常用函数2.2.4数据类型转换函数1/11/202537第二章VisualFoxPro数据基础
在处理数据时,有时需要了解操作对象的状态,如:数据的类型、表文件的记录指针的位置、记录指针是否到了文件头或文件尾等。特别在程序运行时,常需要根据测试结果决定程序走向或处理方式。
1.表文件尾测试函数EOF()
格式:EOF([<数值型表达式>])
功能:测试指定工作区表文件中的记录指针是否指向文件尾,若记录指针已经指向最后一条记录的后面位置,EOF()函数逻辑值为真.T.,否则为假.F.。
若省略<数值表达式>时,测试当前工作区的表文件。若工作区未打开表文件,则值为假.F.。若表文件中没有记录,返回真.T.。
例:USE学生
GOTOBOTTOM?EOF().F.SKIP?EOF().T.2.2常用函数2.2.5测试函数1/11/202538第二章VisualFoxPro数据基础2.表文件起始测试函数BOF()
格式:BOF([<数值型表达式>])
功能:测试指定工作区表文件记录指针是否指向文件首。若记录指针指向表文件首(第一条记录的前面),BOF()函数逻辑值为逻辑真(.T.),否则为逻辑假(.F.)。
若省略<数值表达式>时,测试当前工作区的表文件。若测试的工作区未打开表文件,则值为逻辑假(.F.)。若表文件中没有记录,返回逻辑真(.T.)。
例:USE学生
GOTOP?BOF().F.SKIP-1?BOF()
.T.2.2常用函数2.2.5测试函数1/11/202539第二章VisualFoxPro数据基础学号姓名性别专业20030102001杨波女新闻20030102002鲁明女新闻20030101001张伟男中文20050103001王红女历史20050101001张小玲女中文20040102001郭林男新闻20020101001李浩明男中文第一条记录Bof()为假,recno()值为1最后一条记录Eof()为假Recno()为最后一条记录号Bof()为真Recno()值为1最后一条记录的后面Eof()为真Recno()值为最后一条记录号+11/11/202540第二章VisualFoxPro数据基础3.记录号测试函数RECNO()
格式:RECNO([<数值型表达式>])
功能:返回指定工作区中表文件当前的记录号。
<数值型表达式>的值指定当前工作区号,若省略<数值表达式
>,测试当前工作区中的表文件的记录号。若测试的工作区未打开表文件,则RECNO()值为零。4.记录数测试函数RECCOUNT()
格式:RECCOUNT([<数值型表达式>])
功能:返回指定工作区中当前表文件中所有记录的个数。
<数值表达式>值决定当前工作区号。若省略<数值表达式>,则测试当前工作区的表文件。若测试的工作区未打开表文件,则
RECCOUNT()值为零。2.2常用函数2.2.5测试函数1/11/202541第二章VisualFoxPro数据基础5.表文件测试函数
格式:DBF([<数值表达式>])
功能:用于给出指定工作区的表文件名。
<数值表达式>指定工作区号,若无则对当前工作区操作。当指定工作区没有打开的表文件,则返回空串。
例:USE学生
?DBF()显示D:\世界杯\表\学生.dbf
6.空值(NULL)测试函数ISNULL()
格式:ISNULL(<表达式>)
功能:判断一个表达式的运算结果是否为NULL值,若是,返回逻辑真(.T.),否则返回逻辑假(.F.)。
NULL值是没有明确值的一种特殊表示。NULL值不等同于零或空格。一个NULL值不能认为比某个值(包括另一个NULL值)大或小,相等或不同。2.2常用函数2.2.5测试函数1/11/202542第二章VisualFoxPro数据基础7.“空”值测试函数EMPTY()
格式:EMPTY(<表达式>)
功能:根据表达式的运算结果是否为“空”值,返回逻辑真(.T.)或逻辑假(.F.)。
这里的“空”值与NULL值是不同的概念。EMPTY(.NULL.)返回值为逻辑假(.F.)。
EMPTY()函数的自变量表达式的类型可以是数值型、字符型、逻辑型和日期型等类型。不同类型数据的“空”值有不同的规定。2.2常用函数2.2.5测试函数不同类型的数据“空”值规定数据类型“空”值规定数据类型“空”值规定字符型空串、空格、制表符日期型空(如CTOD(‘’)数值型0日期时间型空(如CTOT(‘’)货币型0逻辑型.F.1/11/202543第二章VisualFoxPro数据基础8.数据类型测试函数TYPE()和VARTYPE()
格式:TYPE(<字符表达式>)VARTYPE(<表达式>[,<逻辑表达式>])
功能:测试表达式的数据类型,返回一个大写字母,表明数据类型。
函数值为字符型。返回字母的含义如下。数据类型返回字母数据类型返回字母字符型C日期型D数值型N日期时间型T逻辑型L未定义U货币型YNULL值X通用型G备注型C或M常用函数2.2常用函数2.2.5测试函数1/11/202544第二章VisualFoxPro数据基础
TYPE()函数:返回表达式的数据类型,<字符表达式>要求是用字符定界符括起来的一个表达式,这个表达式可以是常量、变量、字段或其他表达式,如果表达式不用字符定界符括起来,将返回U(未定义)。
例:?TYPE(".T."),TYPE("2*3.14*12"),TYPE("DATE()")LNDD1="HELLO"?TYPE(D1),TYPE("D1")UC
VARTYPE()函数:返回<表达式>的数据类型,但函数中的表达式不用字符定界符括起来;<逻辑表达式>决定当<表达式>的运算结果是NULL值时函数的返回值:如果<逻辑表达式>为.T.,返回<表达式>的原数据类型;如果<逻辑表达式>为.F.或省略,则返回X,表明<表达式>的运算结果是NULL值。
例:STORE5TOnX
nX=.NULL.?TYPE("nX"),VARTYPE(nX),VARTYPE(nX,.T.)&&数据类型测试仍然是N型
NXN常用函数2.2常用函数2.2.5测试函数1/11/202545第二章VisualFoxPro数据基础9.条件测试函数IIF()
格式:IIF(<逻辑表达式>,<表达式1>,<表达式2>)
功能:测试<逻辑表达式>的值,如果为真(.T.),函数返回<表达式1>的值,如果为假.F.,函数返回<表达式2>的值。<表达式1>和<表达式2>的类型不要求相同。
例:X=100?IIF(X>0,"x的值大于零","x的值小于等于0")x的值大于零2.2常用函数2.2.5测试函数1/11/202546第二章VisualFoxPro数据基础
数值表达式:是由算术运算符将数值型数据连接起来形成的式子,其运算结果仍然是数值型数据。算术运算符对数值型数据进行算术运算,产生数值、货币结果等。有6种运算符。
例:?(45+5-6^2)/2,(12.44-0.31)*(5-3^3)7.00-266.86算术运算符及说明运算符说明运算符说明()优先运算符、形成子表达式*、/、%乘法、除法、求余运算**或^乘方运算+、-加法、减法运算运算规则及优先级是:先乘除,后加减,乘方优先于乘除,函数优先于乘方,圆括号的优先级别最高。同级运算时,从左至右依次运算。2.3表达式与运算2.3.1数值表达式与数值运算1/11/202547第二章VisualFoxPro数据基础字符表达式:由字符运算符将字符型数据连接起来而形成的式子。字符运算符:用于对两个字符型数据进行连接运算。
+:用于把两个字符串连接形成一个新的字符串。
-
:连接两个字符串,并将第一个字符串尾部的空格移到新字符串的末尾。
例:STORE"HELLO"TOASTORE"EVERYONE"TOB?A+B,A-BHELLOEVERYONEHELLOEVERYONE
$:表示两个字符串之间的包含与被包含的关系,参与运算的数据只能是字符型,但运算结果为逻辑型。
格式:<字符串1>$<字符串2>
如果<字符串1>被包含在<字符串2>中时其结果为真,否则为假。例:?“NEW”$“HAPPYNEWYEAR”,"study"$"STUDYCOMPUTER".T..F.
2.3表达式与运算2.3.2字符表达式与字符运算1/11/202548第二章VisualFoxPro数据基础
日期或日期时间表达式的运算符有两个:+和-
两个日期不能相加(+),只能相减,得到两个指定日期相差的天数。
运算符+和-既可以作为日期时间运算符,又可以作为算术运算符和字符串连接运算符。具体作为哪种运算符,由它们所连接的运算对象的数据类型决定。
日期时间表达式的格式格式日期时间运算结果及类型<日期>+<天数>日期型。指定日期若干天后的日期<天数>+<日期>日期型。指定日期若干天后的日期<日期>-<天数>日期型。指定日期若干天前的日期<日期>-<日期>数值型。两个日期相差的天数<日期时间>+<秒数>日期型。指定日期若干秒后的日期<日期时间>-<秒数>日期型。指定日期若干秒前的日期<秒数>+<日期时间>日期型。指定日期若干秒后的日期<日期时间>-<日期时间>数值型。两个日期时间相差的秒数2.3表达式与运算2.3.3
日期时间表达式与日期时间运算1/11/202549第二章VisualFoxPro数据基础条件表达式:通常由比较运算符将两个运算对象连接起来形成
格式:<表达式1><比较运算符><表达式2>。
比较运算符对两个表达式进行比较运算,产生逻辑结果(真或假)。
(1)比较运算符可用在字符、数字和日期型等表达式中,比较运算符要求前后两个运算对象的数据类型必须相同。
(2)不同类型的数据进行比较运算时,比较的方式是不一样的。如数字型数据是按其数值大小进行比较的。
(3)关系成立时值为真(.T.),否则值为假(.F.)。比较运算符运算符说明运算符说明<小于<=小于等于>大于>=大于等于=等于<>、#或!=不等于2.3表达式与运算2.3.4
条件表达式及比较运算1/11/202550第二章VisualFoxPro数据基础
1.数值型数据和货币型数据的比较运算
按数值的大小比较,包括负数。
2.日期和日期时间型数据的比较运算
日期型数据是按年、月、日的先后进行比较。
两个日期型数据比较,首先比较年份,年份不相同时,年份大的日期较大;年份相同时,比较月份,月份不相同时,月份大的日期较大;月份也相同时,比较日期,日期大的较大,否则相同。
例:?{^1999-08-06}>{^1998-12-10}.T.?{^1999-08-06}>{^1999-12-01},{^1999-08-06}>{^1999-08-01}.F..T.2.3表达式与运算2.3.4
条件表达式及比较运算1/11/202551第二章VisualFoxPro数据基础3.字符型数据的比较运算
当比较两个字符串时,系统将对两个字符串的字符从左向右逐个进行比较,一旦发现两个对应字符不同,就根据这两个字符的排序次序决定两个字符串的大小。设置排序次序:
对字符排序次序的设置可以通过菜单:
(1)选择“工具”菜单下的“选项”命令,打开“选项”对话框。(2)在“选项”对话框选“数据”选项卡上,“排序序列”下拉列表框中选择“Machine(机器)”、“PinYin
(拼音)”或“Stroke(笔画)”。
“Machine(机器)”:指定字符排序次序按照机内码顺序排序。“PinYin(拼音)”:按照拼音次序排序。对西文字符而言,空格在最前面,小写字母在前,大写字母在后。“Stroke(笔画)”:无论中文或西文,按照书写笔画的多少排序。
2.3表达式与运算2.3.4.条件表达式及比较运算1/11/202552第二章VisualFoxPro数据基础设置排序次序:对排序次序的设置也可以使用命令:
SETCOLLATETO"<排序次序名>“
<排序次序名>可以是“Machine”、“PinYin”或“Stroke”,必须放在引号当中。例:SETCOLLATETO"PinYin"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度新能源汽车出口产品购销合同范本4篇
- 2025年度枣树种植基地绿色认证与市场拓展合同4篇
- 2025年度体育场馆场地租赁合同终止及运营权转让协议3篇
- 2025年度体育用品代理销售与售后服务协议4篇
- 2024通信信息保密协议1
- 2025年度智能化厂房整体转让合同书3篇
- 2024-2030年中国RNA聚合酶行业市场全景监测及投资策略研究报告
- 2025年度互联网数据中心服务合同模板2篇
- 2025不锈钢管道系统安装与维护服务合同3篇
- 2024运输公司车辆全面保险合同6篇
- 大唐电厂采购合同范例
- 国潮风中国风2025蛇年大吉蛇年模板
- GB/T 18724-2024印刷技术印刷品与印刷油墨耐各种试剂性的测定
- IEC 62368-1标准解读-中文
- 15J403-1-楼梯栏杆栏板(一)
- 2024年中考语文名句名篇默写分类汇编(解析版全国)
- 新煤矿防治水细则解读
- 故障诊断技术的国内外发展现状
- 医院领导班子集体议事决策制度
- 解读2024年《学纪、知纪、明纪、守纪》全文课件
- 农机维修市场前景分析
评论
0/150
提交评论