已阅读5页,还剩90页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第2章 Visual FoxPro基础知识,2.1 Visual FoxPro的数据基础(熟悉) 2.2 常量和变量(了解和掌握) 2.3 运算符与表达式(掌握) 2.4 常用函数(掌握) 本章小节,2,2.1 VFP的数据类型 数据有型和值之分,型是数据的分类,值是数据的具体表示。在实际工作中所采集到的原始数据,通常要经过加工处理,变成对用户有用的信息。而数据处理的基本要求是对相同类型的数据进行选择归类。为了适应存储数据的需要,VFP提供了许多数据类型,常用的数据类型有11种。 1、字符型(C型) 该类型由字母、汉字、数字、空格、符号和标点等组成,通常用来存储姓名、单位、地址等信息,宽度由用户定义,范围为1254个字节。 例如:x = “安徽理工大学” 课程名 = “Visual FoxPro 程序设计”,3,2、数值型(N型) 该类型用于表示数量,它由数字09、一个符号(+或-)和一个小数点(.)组成。数据类型在内存中用8个字节表示,在数据表中长度为120个字节。该数据表示范围为-0.999 999 999 9E+19+0.999 999 999 9E+20。小数点的位置和字段的宽度由用户创建该字段时指定,宽度包含小数点和小数位数。数据还可以分为整数、实数和浮点数等。 例如: num1 = -.3568 num2 = 5.3651,4,3、 浮点型(F型) 该类型以浮点数的形式存储数值数据,用较精确的位数存储数据,常用于科学计算,其宽度的规定和数值型相同。 4、 双精度型(B型) 该类型用于取代一般的数值类型,以便能提供更高的数值精度。它只用于表中字段的定义,采用固定存储长度的浮点数形式,常用于科学计算,存储精度比数值型高,可精确到小数点后15位,存储占8个字节。该类型数据不能用内存变量存储。双精度类型不同于数值类型,其小数点位置由输入的数据值决定。 5、 整数型(I型) 该类型用于无小数部分数值的存取,即存放整数。只用于表中字段的定义,存储用二进制形式表示,占4个字节。 例如:x = 567 ,y = -123,5,6、 货币型(Y型) 使用金钱时可使用货币数据类型以代替数值类型,其存储空间占8个字节,只保留4位小数,超过4位将四舍五入到4位。 例如:y = $1000.52 7、 日期型(D型) 该类型用于存储日期数据,其存储格式为“月/日/年”,日期型字段的宽度是固定,占8个字节,其中年、月、日各占2个字节。 显示格式有许多种,常用的为“MM/DD/YY”,它受SET DATE、SET MARK、SET CENTURY命令设置值的影响。取值0001/1/19999/12/31。 例如:09/05/07,6,8、 日期时间型(T型) 该类型用于存储日期和时间值,存储格式为 “月/日/年 时:分:秒 AM或PM”。其日期部分显示格式受SET DATE,SET MARK,SET CENTURY命令设置值的影响,取值为1/1/10012/31/9999;时间部分的显示格式受SET HOURS和SET SECONDS命令设置的控制,取值为00:00:00 A.M. 11:59:59 P.M.。 例如: 09/05/07 10:10:50 AM 9、 逻辑型(L型) 该类型用于存储只有两个值即真(.T.)和假(.F.)的数据,其长度固定为1个字节。输入T(t)或Y(y)表示真值;输入F(f)或N(n)表示假值。 例如:在教师档案表中“婚否”字段位逻辑型字段,可用“真”表示已婚,而用“假”表示未婚。,7,10、备注型(M型) 该类型用于数据块的存储,可以存放多种信息,可以是字符文本、源程序代码等数据,宽度固定为4个字节。字段内容并不存储在记录中,而是存放在系统为每个含有备注型字段的表自动建立的一个和表同名的备注文件(后缀为.FPT)中,记录中仅存储指向备注文件中相应内容的指针。 例如:在学生档案表中可以将“简历”字段设置为备注类型。该类型不能用内存变量存储。,8,11、 通用型(G型) 该类型用于存储OLE对象,其中包含对OLE对象的引用。一个OLE对象的具体内容可以是一个电子表格或一个字处理器的文档、图片、声音等。这些OLE对象是用其它应用程序建立的,该字段类型的长度固定为4个字节。 与备注型字段一样,通用型字段数据也存入与表文件名相同而扩展名为“.FPT”的文件中,而通用型用4个字节存储一个指针,该指针指向存储在.FPT文件中的实际内容。该类型也不能用内存变量存储。,9,2.2 常量与变量 2.2.1 常量 常量是指在程序运行过程中其值不发生变化的量。FoxPro支持字符、数值、日期、日期时间、货币和逻辑6种类型的常量。 1、 数值型常量 数值型常量(N):是可以带正负号的整数或小数(正号可省略),还可以用科学记数法表示,如2.5E+15。这样表示的常量是N型,而不是F型。 例如:以下是合法的数字型常量。 80、-523.6、569852.52,10,2、 字符型 字符型常量(C):是用定界符括起来的字符串。定界符有3种,即单引号、双引号和方括号。在定义和使用字符型常量时必须注意: 在字符串的两端必须加上定界符,字符串。否则系统会把该字符串当成变量名。如“姓名”是一个变量名,而“姓名”是一个常量 定界符只能是ASCII码字符(即半角字符),不能是全角字符。即在输入时要用英文半角输入法。 左、右定界符必须匹配。即如果左边是双引号,那么右边也必须是双引号。 定界符可以嵌套,但同一种定界符不能互相嵌套,具体例子如下所示。,11,例如:合法字符串:古语云:天下没有不散的宴席 非法字符串: 古语云:“天下没有不散的宴席 合法:“ABDE”、王三、HAPPY、他说:“好” 3、 逻辑型 逻辑型常量(L):也称布尔型常量。它只有两种值,即逻辑真值或逻辑假值。逻辑真可以用.T.或.Y.表示,也可以用.t.或.y.来表示;逻辑假可以用.F.,.N.,.f.,.n.来表示。 注意: 字母T,N等的两端必须紧靠小圆点(圆点与字母之间不能有空格),圆点和字母都必须是半角符号,不能是全角字符。 4、 日期型 日期型常量(D):一定要包括年、月、日3个值,每两个值之间由一个分隔符(如斜杠“/”)隔开。,12,日期型常量要放在一对花括号中,开始位置上再加上一个“”符号(VFP中采用严格的日期格式,即yyyy/mm/dd)。 例如:以下是合法的日期型常量 2007/09/01、2007- 09-01、2007.09.01 空值表示为、 、/、:。 其显示格式系统原来默认的方式是 MM/DD/YY,但可以改变输出格式,其命令如下所示。 设置日期型常量的输出格式命令是: SET MARK TO 日期分隔符 &日期分隔符只限一个字符 【例2.1】将日期型常量的输出分隔符为“;”。 在命令窗口中依次输入以下命令:,13,clear set mark to “;“ d=2007/09/05 ?d,图21 将日期型常量的输出分隔符改为“;”,14,设置日期型常量的输出格式的命令是: set date to maerican|mdy|dmy|long|short 【例2.2】设置日期型常量的指定格式的示例。,上表中的各个命令效果见图22,15,图 2-2 设置日期型常量的输出格式,16,5、 日期时间型 日期时间常量(T):既含日期又含时间,日期值包括年、月、日,时间值包括时、分、秒,其中时分秒的分隔符为冒号(:)。它的书写方式近似于日期型,例如2002/01/15 10:00 p。空值表示为-, :、-,:、-,:和-,:。日期和时间数据之间必须有空格。 6、 货币型 货币型常量(Y):用符号“”来标识,如123.3。 * 定义常量名 在VFP的程序设计中,可以使用# DEFINE预处理器命令为某个常量值命名。例如,在程序中令PI作为圆周率3.1415926536的一个常量名的定义方法如下所示。 例2.3 : # DEFINE PI 3.1415926536,17,2.2.2 变量 变量是指在程序运行过程中其值可能发生变化的量。变量是程序的基本单元,在VFP中,变量分为字段变量、用户内存变量和系统变量。用户内存变量又称内存变量。前两种是用户根据需要定义的,它是由字母、汉字、数字和下划线组成,但是必须以字母、汉字开头,变量名长度可以在1254个字符之间;而系统变量名称由系统规定。 1. 字段变量 字段变量是在数据库中定义的变量,是数据库表文件结构中的数据项,每个字段名就是一个字段变量。字段变量是永久变量,它是一种多值变量,数据表中的每一条记录对应某一字段都有一个取值。当用字段名作变量时,它的当前值就是表的当前记录的值。,18,2. 内存变量 内存变量是用户通过命令或程序临时定义的变量,表示一块工作单元,它独立于表文件结构之外而存在于内存中的变量,用于存储数据处理过程中所需要的常量、中间结果等数据。它具有字符型、数值型、日期型、时间型、逻辑型和货币型等多种数据类型。 VFP的内存变量与其它高级语言中的变量有所不同,它不需要事先说明其类型,其数据类型是根据当前所存储的数据的类型决定的。必须首先给所使用的内存变量赋一个值,这个变量才可以使用,否则,系统会提示:内存变量没有找到!,19,(1) 内存变量名 内存变量名可由字母、汉字、数字或下划线组成。给变量命名,应力求做到“见名知义”。建议: 变量的第一个字符标识该变量的数据类型,一般采用小写的类型标识字母,如“nVar1”应解释为N型的变量,这样做除了意义明了之外,还可避免使用系统已使用的单词和变量(注:系统内存变量名的第一个字符是下划线); 变量名的其余字符标识该变量的含义,如由变量名“cName”可知它是C型变量,内容是某个人的姓名。,20,(2) 字段变量与内存变量的比较 两者最大的区别是:字段变量是表结构的一部分,因此离不开表。要使用字段变量,必须首先打开包含该字段的表。而内存变量与表无关,不打开表照样可以使用。 内存变量和字段变量可以同名,此时,将优先存取字段变量,屏蔽同名的内存变量。若要明确指定访问内存变量,则应在内存变量名前加上指别符M. 或者M-(由减号加大于号组成),即M.或M-。例如:内存变量name和表的字段名name同时使用,这是内存变量就要M-name或者M.name。而字段就可以字节使用name。,21,3. 系统变量 系统变量是特有的变量,是系统内部提供的,学会使用系统变量会带来许多方便。系统提供的系统变量很多,在使用DISPLAY MEMORY命令显示内存变量时,可以看到这些变量的当前值。下面举例说明这些系统变量的使用方法。 【例2.3】通过_CALCVALUE系统变量将一个数字传到计 算器中,然后通过计算器的计算,输出计算结果。 在命令窗口中输入:CLEAR &清屏幕 _CALCVALUE=20 &给该系统变量赋值 ACTIVATE WINDOW calculator &显示计算器 得到如图2.3所示结果。,22,单击计算器的“+”,然后输入“30”,再单击“=”,得到50。在命令窗口中输入如下命令。? _CALCVALUE &输出计算的结果这时在屏幕上显示50.00。这个过程说明了怎样利用_CALCVALUE系统变量将一个数字传到计算器中,然后再从计算器获取数据。(见图2-4),图2.3,23,图2.4,24,2.2.3、 数组变量 数组变量是一种有组织的内存结构变量,它的若干性质和内存变量是一样的。但它是一种结构式变量,是具有相同名称而下标不同的一组有序内存变量。VFP允许定义一维和二维数组,数据在使用之前需要先定义。 1、 数据元素及其引用 数组中的每个有序变量构成了数组的成员,这些变量称为数组元素。数组元素的名称由数组名和用括号括起来的下标组成。如AA(1),表示一维数组AA的第1个元素;BB(2,3)表示二维数组BB的第2行、第3列元素。数据元素的引用说明如下:,25,数组下标使用圆括号,二维数组的下标之间使用逗号隔开; 数组的下标可以是常量、变量和表达式,如nA(1),nA(b1),nA(a+b); 数组的第1个下标是1,也就是说数组下标是从1开始的; 数组元素的类型为最近一次被赋值的类型; 数组元素和简单内存变量一样都可以被赋值和引用。 2、 定义数组 VFP中的数组和其它高级语言中的数组有所不同,数组本身是没有数据类型的,各种数组元素的数据类型与最近一次被赋值的类型相同。也就是说,VFP中的数组实际上只是名称有序的内存变量。创建数组的命令如下所示。,26,语法:DIMENSION | DECLARE | PUBLIC ( ,) , ( ,). 功能:定义数组。 数组名是作为一个内存变量名来管理和命名的,所以其命名规则和管理与内存变量相同。在命令中,DIMENSION,DECLARE表示定义的是局部数组,而PUBLIC表示定义的是全局数组。前者只对当前程序有效,后者对整个程序有效。 定义数组必须指定数组名、数组的维数、数组大小。系统规定数组下标的下限是1。 数组中各个元素在数组中的位置由下标值决定。,27,【例2.4】定义A(2),B(2,2)数组。DIMENSION A(2) , B(2,2)该语句表示数组A中有两个元素,分别为A(1)和A(2)。数组B中有4个元素,分别为 B(1,1)、 B(1,2)、B(2,1)和B(2,2)。 *:二维数组元素在内存中是按行存储的。可以用一位数组的形式引用二维数组元素。例如,B(4)与B(2,2)等价。 数组定义后,数组中的各个元素初始值是.F.。 数组中各个元素的取值类型可以不同。 用赋值命令可以对数组元素赋值,也可以对数组中的所有元素赋同一值。 在可以使用简单内存变量的地方,均可以使用数组元素。 在同一运行环境中,数组名不能与简单内存变量同名。,28,3、数组与数据表之间的数据传送 (1)、将数据表中当前记录的指定字段值传输到数组的各个元素中 格式:scatter fields memo to blank 功能:从指定字段中的第一个字段开始,将表的当前记录依次复制到数组中的各个数组元素中。 【例2.5】 将数据表中的当前记录的指定字段传输到数组中 use 学生信息 scatter fields 学号,姓名,出生日期,住校否 to x ?x(1),x(2),x(3),x(4) (2)、将数组各个元素的数据值传输到表中当前记录的指定字段 格式:gather from fieldsMEMO,29,功能: 将数组中的各个数组元素的内容依次复制到表的当前记录 的指定字段中。 【例2.6】将数组各个元素值传输到表的当前记录的指定字段中 use 学生信息 Dimension X(4) X(1)=“071101404” X(2)=陈兵 X(3)=“男” X(4)=“计算机” Append blank Gather fields 学号,姓名,性别,专业 from x display,30,2.2.4 内存变量的操作 1、内存变量赋值命令 格式一:STORE TO | 例如:STORE 7 TO nVar1 STORE 李梅 TO cName1,cName2 格式二: | = 例如:nVar2=10 nVar1=7 * 格式一和格式二的区别就在,格式一可以给多个变量赋予相同的值,而格式二只能个一个变量或数组赋值。,31,2、输出内存变量命令 格式:?/? AT ? 先回车换行,在输入表达式的值;表达式为空时,表 示回车换行 ? 在当前行输出表达式的值 At 表示在显示表达式的值 【例2.7】输出变量nA1,nA2,nA3的值。 STORE 2 TO nA1,nA2,nA3 ? nA1, nA2, nA3 ? nA1, nA2, nA3 ? nA1, nA2, nA3 2 2 2 2 2 2 2 2 2,32,3、内存变量的显示 格式:LIST|DISPLAY MEMORY LIKE TO PRINTER | TO FILE 功能:显示当前已定义的内存变量名、作用范围、类型和值 说明: LIKE子句表示显示与通配符相匹配的内存变量。通配符有*和?两种,*表示通配任意长度的字符,?表示通配一个字符。例如,A*,表示以A开头的任意长度所有字符串;A?表示以A开头,长度为二的所有字符串 TO PRINTER子句表示能将屏幕显示内容输出到打印机 TO FILE子句表示能将屏幕显示内容存入文件。,33,【例2.8】常用类型的内存变量赋值与显示的示例 Store 23.32 to A Store “jim” to B Store .T. To C Store $100 to d E = 2007.05.04 F = 2007.08.29 16:47:50PM Store 8 to x,y,z Dimension G(3) G(1)=234.53 G(2)=“skdfh38” G(3)=.F. List memory like ?,34,图25 输出结果,35,4、内存变量的保存与恢复 如果需要使用在命令窗口定义的内存变量,可以将其保存在扩展名为“.mem”的文件中,再次使用时从文件中恢复即可。 (1)、内存变量保存 格式:SAVE TO ALL LIKE |ALL EXCEPT 功能:将制定内存变量信息保存到指定的变量文件中。 说明:“ALL LIKE ”只保存符合通配符条件的所有变量 “ALL EXCEPT ”只保存不符合通配符条件的所 有变量,36,(2)、内存变量恢复 格式:RESTORE FROM ADDITIVE 说明:当缺省ADDITIVE时,清楚内存所有变量后再恢复;而带有时则在现有的变量后追加恢复的内存变量。 5、内存变量的清除 格式:RELEASE ALL LIKE|EXCEPT 【例2.9】 从内存中清除变量示例 RELEASE A,B RELE ALL RELE ALL LIKE A* RELE ALL EXCEPT A*,37,2.3 运算符与表达式 表达式是VFP命令的重要组成部分,它是由运算符将常量、变量、函数等运算对象连接起来的式子。 表达式的运算顺序:按照运算符优先级别从高到低的顺序进行计算,同级别的运算按从左到右的顺序计算。 运算符是处理数据运算问题的符号。运算符也叫操作符,它表示在操作数(参与运算的数据)上的特定动作。比如在算术式1+2中,1和2是操作数,+是运算符。带两个操作数的操作符叫双目操作符,带1个操作数的操作符叫单目操作符。如在1+2中,+是双目操作符,它表示前后两个数相加;在+2中, +是单目操作符。,38,2.3.1 算术运算符与数值表达式 1、算术运算符运用于数值数据(指数值型、浮点型、双精度型和整数型)和货币数据,其优先级从高到低:()(括号),-(负号),*/(乘幂),*、/、%(乘、除、求模),+,-。 【例2.10】算术运算符应用示例。 在命令窗口中输入以下命令: ?15*23/4 ?6*3%23+1 ?-72 ?-7*2 ?9%2,39,2、数值表达式 数值型表达式:由数值型的常量、变量、函数和算术运算符连接起来的有意义的式子,其运算结果仍为数值型。 【例2.11】合法的数值表达式示例 X*5+6/6 Y4+EXP(5) T*4/5+(X*4-5) SIN(30)*2-1.5*X,40,2.3.2 字符串运算符与字符表达式 1、字符串运算符 对于字符类型的数据,可以使用的操作符只有3个,即+、-和,而运算的优先级从高到低依次是+、-、。 +:将两个字符串首尾相连组成一个新的字符串。 - :将前一个字符串尾部空格移到后一个字符串尾部,然后将两个字符串相连组成一个新的字符串。 $ :检查第一个字符串是否被包含在第二个字符串中,若是,则结果为.T.,否则为.F.。 2、字符表达式 字符表达式是使用字符串运算符(+、-、$)将字符型项目连接起来的算式,运算结果也为字符型。 格式:字符串运算符,41,【例2.12】字符表达式应用示例 在命令窗口中输入以下命令: Z1=“ABC “ Z2=“DEF” Z3=“ABCDEFGH” ?Z1+Z2 & ABC DEF ?Z1-Z2 & ABCDEF ?LEN(Z1+Z2) & 8 ?LEN(Z1-Z2) & 8 ?Z1$Z2 & .F. ?Z1$Z3 & .T. ?Z2$Z3 & .T. ?”安徽”$”中国安徽” & .T.,42,2.3.3 日期时间运算符与日期表达式 1、日期时间运算符 对于日期类型、日期时间类型的数据,其运算符只有+和-两个。 +:将日期时间型数据与数值型数据相加,得到一个新的日期时间型数据 - :将日期时间型数据与日期时间型数据或者数值型数据相减,得到一个新的数值型数据(表示天数)或者日期时间型数据。 2、日期型表达式 日期型表达式:由日期型或数值型的常量、变量和日期运算符“+”和“-”(天数)组成的表达式,其运算结果为日期型或数值型。其形式有以下两种:,43,表达式一: +(或-) 计算结果得到另一个日期,为日期型数据。 表达式二: - 计算结果得到两个日期之间相差的天数,为数值型数据 【例2.13】日期型表达式应用示例。 D1= 2007/07/01 D2=2000/07/01 ?D1+31 ?D1-D2 ?D1-31 ?D1+D2,44,2.3.4 关系运算符与关系表达式 1、关系运算符 关系运算符用于同类型数据之间的比较运算,并返回一个逻辑值来表示所比较的关系是否成立,包含,=,或#(不等于),它们的优先级相同。 2、关系表达式 关系表达式是用关系运算符将表达式连接起来的式子。关系表达式的运算结果是逻辑值,当关系成立时,结果为真,否则为假。 【例2.14】 关系表达式应用示例 在命令窗口中输入以下命令(菜单:工具选项数据排序序列,改为“MACHINE”):,45,?”506”7” ?”ABC”=“ABD” ?”A”a” ?”ABCDE”ABCFRS” ?”A”BCDA” ?”B”ABDE”,46,注意: 关系运算符对两个同类型的表达式进行比较,操作对象可以是数值型、字符型、日期型、逻辑型、货币型和备注型等,产生的结果均为逻辑型。 字符型表达式的比较 ASCII字符(半角字符)按照其码值的大小来比较。如字母“A”的ASCII码值是65,“a”的ASCII码值是97,所以表达式“A 薄”的值是.F.。,47,字符串的比较按照从左向右的顺序逐个字符进行比较。如:“ABC=ACD”用于确定两个字符串是否完全相等。完全相等的含义是两个字符串长度相同,且每个位置上的字符都相同。 两个字符串作“=”比较时,其结果与SET EXACT命令的状态有关。当其状态为“ON”时,“=”和“=”的比较结果一致;但当其状态为“OFF”时,“=”可用于两个字符串部分匹配的场合,对于A=B表达式,如果B中每个字符与A中前面的每个相应字符匹配,则其值为“.T.”。例如: SET EXACT OFF ?ABCD = ABC & 显示结果为:.T. SET EXACT ON ?ABCD = ABC & 显示结果为:.F.,48, 日期型与日期时间型表达式的比较按年、月、日的顺序进行比较,其中年、月、日又分别按其数值的大小进行比较,如2001/09/02(2001年9 月2日)和2000/09/02/(2000年9月2日)进行比较,表达式“2001/09/022000/09/02”为真。同样为真的有“2001/09/022001/08/02”和“2000/09/022000/09/05”。,49,2.3.5 逻辑运算符与逻辑表达式 1、逻辑运算符 逻辑运算符用于逻辑数据运算,并且返回一个逻辑值,其优先级是.NOT.(或!),.AND.和.OR.。 .NOT.(!):非运算,若NOT后面表达式值为真,则执行NOT后为假。 .AND.:与运算,只有当AND两边表达式都为真时,结果才为真,否则为假。 .OR.:或运算,OR两边的表达式只要有一个表达式的值为真,表达式的结果为真;只有两边都为假时,结果才为假。 它们的优先级别高低顺序为:NOT、AND、OR 其中逻辑运算符NOT、AND、OR的前后可以加“.”,也可以省略。,50,2、逻辑表达式 逻辑型表达式是由逻辑运算将关系表达式连接起来的式子 格式一: .AND. 或者 .OR. 格式二:.NOT. 【例2.15】逻辑表达式应用示例。 Z=10 ?Z5.AND. “A”B” USE 学生成绩 LIST FOR 大学英语=80 AND 政治=70,51,补:货币型表达式:运算对象和运算结果都是货币型,其运算符同算术运算符,运算规则同数值型表达式。yVar1 = 856.00 ? yVar1 + 100 & 显示结果为:956.0000 ? yVar1 1000 & 显示结果为: .T.,52,这5种表达式,每一种表达式内有优先级,各种表达式之间也有优先级,其优先级顺序如下图: 例如: num1 = 60 num2 = 180 ? NOT num1num2 AND abc ad OR num2+20 =200 &显示结果为:.T.,字符串、日期运算符,算术运算符,关系运算符,逻辑运算符,53,2.3.6 表达式生成器(补) 将自然语言描述的问题用表达式来描述,需要很多数理逻辑知识,如果不能正确地书写表达式就不可能得到正确的结果。为了提高书写表达式的速度,系统提供了一个工具称之为表达式生成器。它可以在若干交互式操作中自动启动。如在“表设计器”的“索引”选项卡上,单击“筛选”栏右边的“”号即可打开表达式生成器;也可以通过命令启动。,54,格式:GETEXPR TO TYPE ; DEFAULT 功能:将表达式存入内存变量。 其中: 字符表达式1:提示字符串,用来说明当前要写什么样的表达式; 内存变量:用于存入表达式书写结果的变量; TYPE :说明当前要生成的表达式是什么类型,对C(字符型)、N(数值型)等类型应加字符定界符;,55,错误信息字符串:当表达式不对时,显示指定的错误信息,以便提示用户; DEFAULT:当表达式省略时,给定一个表达式。 【例2.16】用表达式生成器将23*33+3-3*5表达式赋给内存变量cVar。 在命令窗口中输入: GETEXPR 数值表达式 TO cVar TYPE n &打开如图2.6所示的对话框 ?cVar 23*33+3-3*5 &内存变量cVar中存有表达式 下面是表达式生成器中的内容简述。,56,图26 表达式生成器,57, “表达式”编辑框用于编辑表达式。从表达式生成器的各列表框中选择出来的选项将显示在这里,也可以直接输入和编辑表达式。利用表达式生成器可以输入各种各样的操作条件,比如可以输入字段及有效性规则、记录及有效性规则和参照完整性规则等。 “函数”列表框将系统提供的4类函数(字符串函数、数学函数、逻辑函数和日期函数)全部放置在列表框中,可以直接选择使用。 “变量”列表框和“字段”列表框在“变量”列表框中列出当前能够使用的全部内存变量、数组变量和系统变量。以“_”开头的变量是系统变量。在“字段”列表框中显示当前可使用的字段变量。在“变量”列表框和“字段”列表框中通过双击可以选择表达式所需的变量。,58, 表和视图下拉列表框从该列表框中可以选择当前打开的表和视图。 命令按钮在“表达式生成器”对话框中有4个按钮:“确定”、“取消”、“检验”和“选项”。单击“选项”按钮,可以进入“表达式生成器选项”对话框,在该对话框中可以设置表达式生成器的参数;单击“检验”按钮,可以检验生成的表达式是否有效,如果表达式有错,如字符与数字相加,系统就会弹出一个信息框提醒用户该表达式有错;单击“确定”按钮,可以完成表达式生成并退出“表达式生成器”;单击“取消”按钮,可以放弃对表达式的修改并退出表达式生成器。,59,2. 4 常见函数及其应用 函数的一般形式如下所示。 函数名(,) 1、数值处理函数 数值处理函数包括三角、对数、指数、数值转换和测试等函数。(表达式,exp),默认的小数点是2位, Set decimals to 数值 就可以设置圆周率的小数位,60,61,2.4.2 字符处理函数 字符处理是实现文字编辑的重要手段,字符处理的主要函数有:,62,注: 在SUBSTR()函数中,指待处理的母串,指取子串的起点,可选参数指所要截取字符的个数(0),如果省略该参数,则指从起点截取至串尾。其中一个汉字占两个字节,就是相当于两个字母。,63,注: LEFT()和RIGHT()函数都可看成是SUBSTR()函数的特例,例如LEFT(, )等价于SUBSTR(,1,)。 若有可选项,则&代换后的值与后面的的值连接起来。这时, &与之间必须插入一个圆点(.),这个点称为宏代换终界符。 意思就是把字符型内存变量(A)的值是一个内存变量(B)的名字,再把B的值转换成字符串(C),然后把&.所在的位置换成C,与原来的字符串连接起来。,64,2.4.3 日期、时间处理函数,65,2.4.4 转换函数 1、数值型转换成字符型函数 格式:STR(,) 功能: 将的值转换成字符串; 的值决定转换后的字符串长度(包括小数位和小数点); 的值决定转换后小数部分的字符个数,有效部分进行四舍五入; 若小于的值的整数位数,则函数值为由“*”组成的字符串;大于则转换后数字前端用空格填充; 若省略,则认为小数位为0,小数部分进行四舍五入; 若和同时省略,则整数位数默认为10。,66,67,68,2.4.5 逻辑函数 1、测试文件尾函数 格式:EOF() 功能:测试指定工作区中表文件的记录指针是否指向文件尾。返回值为L型,.T./.F.。的值作为被测试工作区号,省略,表示当前工作区。 2、测试表文件首函数 格式:BOF() 功能:测试指定工作区中表文件的记录指针是否指向文件首。返回值为L型,.T./.F.。值表示同上。,69,3、测试查找记录是否成功函数 格式:FOUND() 功能:测试指定的表文件检索操作是否成功。返回值L型,.T./.F.。的值指定工作区号。常用的查找操作命令还有FIND、SEEK、LOCATE。 【例2.17】现有“学生信息.dbf”数据表,利用该表测试EOF()、BOF()函数的作用。 USE学生信息 ?BOF() SKIP -1 ?BOF() GO BOTTOM SKIP 1 ?EOF(),70,4、条件测试函数 格式:IIF() 功能:测试指定的条件是否成立,条件成立函数返回值是“Value1”,否则返回值是“Value2”。 【例2.18】IIF()函数的应用示例 Y=1 X=IIF(Y2,1,3) ?X X=IIF(Y2,”HELLO”,”BYEBYE”) ?X,71,2.4.6 其他函数 1、测试表文件当前记录号函数 格式:RECNO() 功能:测试指定工作区表文件记录指针的位置。指定工作区号,省略表示当前工作区。无文件,值为0 2、测试表文件记录数函数 格式:RECCOUNT() 功能:测试指定工作区中表文件的记录数。指定工作区号,省略表示当前工作区。无文件或者无记录,值为0 3、测试字段数函数 格式:FCOUNT () 功能:测试指定工作区中表文件的字段数。指定工作区号,省略表示当前工作区。无文件,值为0,72,4、测试子字符串起始位置函数 格式:AT(,) 功能:AT()返回值是N型。 若是的子串,则返回值为的首字符在中的位置。 若不是子串,则返回0。 表示要在中搜索是第几次出现的位置,默认为1。 【例2.19】AT()函数示例 X=“大学” Y=“安徽理工大学” ?AT(X,Y),73,A=“TO BE OR NOT TO BE:THAT IS A QUESTION.” B=“BE” ?AT(B,A,2) 5、测试表文件路径函数 格式:DBF(表别名|工作区) 功能:获取打开的表的路径 【例2.20】DBF()函数示例 USE 学生信息 ?DBF(),74,6、MessageBox函数 格式一: MessageBox(,) 格式二: 变量MessageBox(,) 功能:格式一仅显示自定义信息框; 格式二不仅显示信息框,而且还将函数的返回值赋予变量,编程时,可以根据返回值决定程序的走向。 说明: 为必选项,是信息框中要显示的内容,由字符串表达式组成。如果信息超过一行,可以在每行尾加一个回车符。CHR(13):表示一个回车符。回车符的ASCII码为13。,75,为可选项,其由三个部分相加得到。各个部分取值不同,含义不同,见下表21。 为可选项。如果给出字符串,则在信息框中的标题栏中显示该字符串的内容;默认值为“Microsoft Visual FoxPro”。 对于格式二中,信息框中各个按钮的返回值见表22。,76,表 21,77,表22,78,2.4 本 章 小 结,介绍了VFP的11中数据类型,设计数据表时,可以根据需要选择数据类型。 介绍了VFP的常量和变量的概念。常量由六种类型,分别是N、C、L、D、T、Y;变量由三种,分别时字段变量,用户内存变量和系统变量。使用变量时要注意变量的命名规则,对变量的各种操作,如变量的赋值、存储和显示。 介绍了五中类型的表达式,分别是数值、字符、逻辑、日期、关系型表达式。应掌握各种类型表达式的表达式的运算符号及运算规则。 函数是进行数据管理系统开发时常用的内容,本章将函数分为六种进行了介绍,使用函数时,要注意函数中的参数的使用方法、函数的返回值及其类型。,79,80,习题 2 2.1思考题 1 VFP有哪几种常用数据类型? 2 VFP有哪几种变量?各有什么特点? 3 数组变量与内存变量有何不同?试述为内存变量赋值的几种方式。 4.显示对话框的应用 (1) 在显示信息对话框中,设置标题为“显示”,内容为“显示信息对话框”,按钮为“确定”和“取消”。 (2) 在显示信息对话框中,设置标题为“显示”,内容为“提示信息”,按钮为“确定”,图标为“信息”。,81,4 如何赋空日期值和空日期时间值? 5 比较、=和=这3个关系运算符的异同点。 2.2 选择题 1. 6E-3是一个()。 (A) 内存变量(B) 字符常量(C) 数值常量(D) 非法表达式 2. 下列4个变量名中,错误的是()。 (A) 书名(B) 作者(C) 定价(D) A出版社 3. 下列4个表达式中,其值为“数据库系统”的是()。 (A) 数据库+系统(B) 数据库+系统 (C) 数据库-系统(D) 数据库-系统,82,4. 下列4个表达式中,运算结果为数值的是()。 (A) 9999-1255 (B) 200+800=1000 (C) CTOD(11/22/01)-20 (D) LEN(SPACE(3)-1 5. 设有变量sr=2002年上半年全国计算机等级考试,能够显示2002年上半年计算机等级考试的命令是()。 (A) ?sr-全国 (B) ?SUBSTR(sr,1,8)+SUBSTR(sr,11,17) (C) ?STR(sr,1,12)+STR(sr,17,14) (D) ?SUBSTR(sr,1,12)+SUBSTR(sr,17,14),83,6. 设有变量pi=3.1415926,执行命令?ROUND(pi,3)的显示结果为()。 (A) 3.141 (B) 3.142 (C) 3.140 (D) 3.000 7. 已知D1和D2为日期型变量,下列4个表达式中非法的是()。 (A) D1-D2 (B) D1+D2 (C) D1+28 (D) D1-36 8. 下列4个表达式中,错误的是()。 (A) 姓名+姓名 (B) 性别+性别 (C) 工资-工资 (D) 姓名-是工程师,84,9. 函数INT()的功能是()。 (A) 按四舍五入取expN值的整数部分 (B) 返回expN值的整数部分 (C) 返回不大于expN值的最大整数 (D) 返回不小于expN值的最小整数 10. 执行SET EXACT OFF命令后,再执行 ?北京市=北京命令的显示结果是()。 (A) .T. (B) .F. (C) 0 (D) 非0 11. 执行 ?AT(教授,副教授)命令的显示结果是()。 (A) .T. (B) 2 (C) 3 (D) 0,85,12. 同时给内存变量a1和a2赋值的正确命令是()。 (A) a1,a2 = 0 (B) a1 = 0 , a2 = 0 (C) store 0 to a1,a2 (D) store 0,0 to a1,a2 13. 若内存变量a1 = 12,则命令 ? &a1 +2.5 的结果是()。 (A) 122.5 (B) 14.5 (C) a12.5 (D) 出错 14. 不打开“打开”对话框,就可得到文件全名的函数是()。 (A) GETFILE() (B) PUTFILE() (C) LOCFILE() (D) CURDIR(),86,2.3 填空题 1. 为了有效地利用窗口,可将工具栏中暂时用不到的项目删除,而将另外常用的项目放到工具栏中来,重新组织适合自己需要的工具栏,这就是工具栏的_。 2. 把浮动工具栏变成固定工具栏的方法是:将鼠标指针指向浮动工具栏小窗口的上_ ,然后将其拖动到工具栏区域,当出现单条的矩形框时释放鼠标。 3. 有的命令按钮名称后面带有_标记,表示选择该命令按钮能够将数据从左面的列表框逐个转移到右面的列表框中。,87,4. 数组是按一定顺序排列的_ 。 5. VFP的4种操作方式是 (1) 、工具操作方式、命令操作方式和 (2) 。 6. 执行下列命令的显示结果是_ 。 ? 东方商厦+滨江大厦友谊商店 7. 如果一个表达式中包含算术运算、关系运算、逻辑运算和函数,则运算的优先次序是_ 。 8. 设系统日期为2001年12月31日,下列表达式的显示结果是_ 。 VAL(SUBSTR(1999,3)+RIGHT(STR(YEAR(DATE(),2)+17,88,9. 内存变量的数据类型在_确定。 10. 数组的最小下标是 (1) ,数组元素的初值是 (2) 。 11. VFP中,根据运算符可以将表达式分为 (1) 、 (2) 、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年体育场馆照明系统设计与安装合同
- 中班语言教案《小红帽》
- 2024年企业股权激励计划合同
- 2024年信息网络传播SET协议使用授权合同
- 2024年医疗设备采购与售后服务合同
- 2024年区块链技术服务与开发合同
- 一年级数学下册教案-6.1 整十数加、减整十数(30)-人教版
- 二年级上册数学教案-第三单元 第二课时直角的初步认识 人教版
- 2024年产品价格调研报告
- 中班户外游戏详案教案反思:小动物找家
- 某房地产公司项目定位分析
- 部编版三年级上册道德与法治作业设计
- 工厂改造施工方案
- ERAS理念下麻醉与镇痛的优化
- 2023-2024学年四川省泸州市江阳区西路学校七年级(上)期中数学试卷(含解析)
- 2023年下半年软件设计师真题 答案解析(上午选择 下午案例)全国计算机软考
- 初中英语新课程标准词汇表
- 创伤失血性休克中国急诊专家共识(2023)解读
- 学校体育与社区体育融合发展的研究
- 中国旅游地理智慧树知到课后章节答案2023年下平凉职业技术学院
- 工程竣工移交报告
评论
0/150
提交评论