VFP 03第三章 数据与数据运算课件.ppt

上传人:小飞机 文档编号:1524261 上传时间:2022-12-03 格式:PPT 页数:98 大小:1.30MB
返回 下载 相关 举报
VFP 03第三章 数据与数据运算课件.ppt_第1页
第1页 / 共98页
VFP 03第三章 数据与数据运算课件.ppt_第2页
第2页 / 共98页
VFP 03第三章 数据与数据运算课件.ppt_第3页
第3页 / 共98页
VFP 03第三章 数据与数据运算课件.ppt_第4页
第4页 / 共98页
VFP 03第三章 数据与数据运算课件.ppt_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《VFP 03第三章 数据与数据运算课件.ppt》由会员分享,可在线阅读,更多相关《VFP 03第三章 数据与数据运算课件.ppt(98页珍藏版)》请在三一办公上搜索。

1、主讲老师:韩维良,2010.8,VFP程序设计教程,第三章,数据与数据运算,第一节 数据类型 数据类型被定义后,确定了其存储方式和使用方式。 一.字符型字符型数据描述不具有计算能力的文字数据类型。字符型数据(Character)是由汉字和ASCII字符集中可打印字符(英文字符、数字字符、空格及其他专用字符)组成,长度范围是0254个字符,使用时必须用定界符双引号(“”)或单引号( )括起来或 。即字符串,一个字符占一个字节。,二.数值型数值型数据通常分为以下四种类型:(1)数值型数值型数据(Numeric)是由数字(09)、小数点和正负号组成。最大长度为20位(包括、和小数点),存贮时,每一位

2、数占一个字节。(2)浮点型(仅用于数据表中)浮点型数据(Float)是数值型数据的一种。只是在存储形式上采取浮点格式。,(3)双精度型(仅用于数据表中)双精度型数据(Double)是更高精度的浮点型数据。只用于数据表中的字段类型的定义,并采用固定长度浮点格式存储。 (4)整型(仅用于数据表中)整型数据(Integer)是不包含小数点部分的数值型数据。它只用于数据表中的字段类型的定义。整型数据以二进制形式存储。,(5)货币型货币型(Currency)数据用于以货币形式描述数值型数据,长度固定为8位, 具有四位小数,在数值前加$符号(加$表示是货币型),自动四舍五入。主要目的在于消除浮点型数据存贮

3、误差。,三.日期型 日期型数据(Date)是用于表示日期的数据,用默认格式为:mm/dd/yyyy。其中mm代表月,dd代表日,yyyy代表年,长度固定为8个字节。,四.日期时间型日期时间型数据(Date Time)是描述日期和时间的数据。其默认格式为mm/dd/yyyy hh:mm:ss。其中yyyy代表年,前两个mm代表月,dd代表日,hh代表小时,后两个mm代表分钟,ss代表秒,长度固定为8位。,五.逻辑型逻辑型数据(Logic)是描述客观事物真假的数据,用于表示逻辑判断的结果。逻辑型数据只有真(.T.)和假(.F.)两种值,长度固定为1个字节。如婚否等可定义成逻辑型。,六.备注型(仅用

4、于数据表中)备注型数据(Memo)用于存放较长的字符型数据类型。可以把它看成是字符型数据的特殊形式。备注型数据没有数据长度限制,仅受限于现有的磁盘空间。它只用于数据表中的字段类型的定义,其字段长度固定为4个字节,而实际数据被存放在与数据表文件同名的备注文件中,长度根据数据的内容而定。如:学生表中的简历。,当确定数据表中某个字段的数据类型为备注型时,系统会自动生成一个与当前数据表同名,扩展名为.FPT的备注文件。备注型数据的宽度规定为4,存放的是备注文件的起始位置(指针)。,七.通用型(仅用于数据表中)通用型数据(General)是用于存储OLE对象的数据,对象的链接与嵌入。OLE对象的具体内容

5、可以是一个电子表格、一个字处理器的文本、图片等,是由其他应用软件建立的。它只用于数据表中的字段类型的定义。OLE对象的实际内容、类型和数据量则取决于连接或嵌入OLE对象的操作方式。 通用型数据长度固定为4个字节,实际数据长度仅受限于现有的磁盘空间,字段内容存贮在FPT备注型文件中。,第二节 常量与变量一.常量常量用于表示一个具体的、不变的数据,是在命令或程序中直接引用的实际值,其特征是在所有的操作中其值不变。 1、数值型常量由数字(09)、小数点和正负号组成。在内存中用8个字节表示。与日常所用的表示法相同,表示很大的数和很小的数时,可用指数表示法。如:5.878E12表示5.878*1012。

6、,2、字符型常量由汉字和ASCII字符集中可打印字符组成的字符串,使用时必须用定界符括起来,定界符包括单引号、双引号和方括号。注意:空串“”和“ ”是不同的,后者是一个空格字符。例:显示几个字符型常量。?“计算机”,数据,123,ABX”abx”?”学习”,字符串,表示方法,其中?表示在下一行上显示若干个数据的值; ?表示在同一行上显示若干个数据的值。3、逻辑型常量表示逻辑判断结果,只有“真”或“假”两种结果,定界符为圆点,内存中占用一个字节。常量表示形式为:.T.、.t.、.Y.、.y. 表示真, .F.、.f.、.N.、.n.表示假。,4、日期常量用于表示日期,其规定格式以mm/dd/yy

7、yy表示。定界符: 常用分隔符:斜杠(/)、连字符(-)、句点(.)和空格。,传统的日期格式:月、日各2位,年2位或4位,缺省为美国格式:月/日/年具体使用时,可以设置所用的日期格式。如:10/08/01 10-08-01 10 08 2001,严格的日期格式:yyyy-mm-dd用(脱字符)引导,表示一个确定的日期,只有一种格式形式。在内存中占用8个字节,取值范围为: 0001-01-019999-12-31。,设置日期格式的命令设置日期分隔符:set mark to 分隔符可设置为:连字符(-)、句点(.)和空格;系统默认的分隔符为:斜杠。如:Set Mark to “-”用字串定界符括起

8、来。,设置日期显示格式:set date to 格式格式:AMERICAN、USA、MDY、GERMAN、BRITISH、FRENCH、ITALIAN、DMY、ANSI、JAPAN、YMD主要设置日期是:年-月-日、月-日-年、日-月-年,设置年份格式:set century on|offON显示四位年份,OFF显示两位年份。设置日期检查: set strictdate to 0|1|2功能:用于设置是否对日期格式进行检查。set strictdate to 1 *则对日期进行格式检查。在其值为1或2的情况下,使用日常日期格式(非严格日期格式)时,会出错。即导致日期格式不确定。set stri

9、ctdate to 0 *不进行日期格式检查,例1:set century on set mark to set date to ymd ?2001-08-26,例2:set century off set mark to “.” set date to mdy ?2001-08-26,例3: set strictdate to 0?2001-08-26,09.22.01例4:set mark to “;” ?2001-08-26,09.22.01,5、日期时间型常量用于表示日期时间,其规定格式以mm/dd/yyyy,hh:mm:ss表示。 两部分之间用逗号分隔,其中日期部分有传统格式和严格格

10、式两种;时间部分格式为hh:mm:ssa|p。例:set mark to ?2001-03-22,11:30 p,1999-01-01,2000-10-1,32000-9-23 9:45:00 AM,6、货币型常量用来表示货币值,由数值组成,具有四位小数。范围由-922337203685477.5808至922337203685477.5807,书写格式是在数值前加$。在处理过程中将超出四位的小数部分进行四舍五入。处理时在数值前加美元符号即变为货币型。,二.内存变量变量有两种:内存变量和字段变量。1、简单内存变量内存变量是一般意义下的简单变量。每一个内存变量都必须有一个固定的名称,以标识该内存

11、单元的存储位置。,用户可以根据需要定义内存变量类型,它的类型取决于首次接受的数据的类型。也就是说,内存变量的定义是通过赋值语句来完成的。它的类型有数值型、浮点型、字符型、逻辑型、日期型、时间日期型六种。内存变量名的长度在Visual FoxPro 系统中可以达到254个字符,是由字母、数字和下划线组成。如果内存变量与数据表中的字段变量同名时,用户在引用内存变量时,要在其名字前加一个m.,以表明该变量是内存变量。,2.数组变量数组是一组有序内存变量的集合。 在Visual FoxPro系统环境下,同一个数组元素在不同时刻可以存放不同类型的数据,在同一个数组中,每个元素的值可以是不同的数据类型。,

12、数组在使用前必须要通过DIMENSION或DECLARE定义。 Dimension 数组名( , , ) Declare数组名( , , ) 如:dimension x(5),y(2,3),定义后,它的初始值是逻辑值.F.,即数组的默认类型是逻辑型。在使用数组时,一定要注意数组的初始化,还要注意数组下标的起始值是1。在VF中数组的使用比较灵活,二维数组可以一维化。,3、内存变量的使用内存变量的赋值 store to =用store可以一次给多个变量赋值。如:Store 0 to x,y,z,内存变量的显示list memory like to printer|to filedisplay me

13、mory like to printer|to file显示已经定义的变量的值。,上机练习: x=100 x1=120 y=25 list memory like x*,内存变量的清除 clear memory release release all extended release all like |except即收回变量,使其不存在。,例: release all like a? release all except A例:clear memory dimension y(2,2) store xxx to x1,y(1,1) y(3)=2001-03-23 x2=$123.23 lis

14、t memory like y*,三.字段变量字段变量是数据库管理系统中的一个重要概念。它与记录一纵一横构成了数据表的基本结构。一个数据库是由若干相关的数据表组成,一个数据表是由若干个具有相同属性的记录组成,而每一个记录又是由若干个字段组成。字段变量就是指数据表中已定义的任意一个字段。,字段变量的类型有数值型、浮点型、整型、双精度型、字符型、逻辑型、日期型、时间日期型、备注型和通用型等。 四.记录记录是数据表中一组数据项的集合。一条记录最多可有255个字段。,第三节 表达式表达式是由数据和运算符组成的运算式子。一.算术表达式由算术运算符和数值型常量、数值型内存变量、数值型数组、数值类型的字段、

15、返回数值型数据的函数组成。算术表达式的运算结果是数值型。算术运算符及其优先级如下:,二.字符表达式由字符运算符和字符型常量、字符型内存变量、字符型数组、字符型字段和返回字符型数据的函数组成。字符表达式运算的结果是字符型。运算符主要是:+、-、$。+:两字符串首尾相连。-:两字符串首尾相连,且将首字串尾部的空格移至新串的尾部。,$(字符串包含运算符): 使用格式:$若字符串包含子字符串,其值为.T.,否则为.F.。 举例:“计算机 ” + “软件” 结果值为:“计算机 软件“计算机 ” - “软件” 结果值为:“计算机软件 ”,三.时间日期表达式由日期运算符和时间日期型常量、时间日期型内存变量和

16、数组、返回时间日期型数据的函数组成。时间日期表达式运算的结果是时间日期型数。运算符:+、-。,例:?2001-08-23 +10,2001-08-23 -2000-08-23 09/02/01,365?2001-08-23 11:23:10 am +10 08/23/01 11:23:20 am,四.关系表达式由关系运算符和字符表达式、算术表达式、时间日期表达式组成。运算结果为逻辑型。关系运算是运算符两边同类型元素的比较,关系成立结果为(T);反之,结果为(F)。格式:表达式1 表达式2,举例:6 + 8 =15 返回值: .F.4 -5 返回值: .T.“AB” = “ABC” 返回值: .

17、F.“ABC” = “AB” 返回值: .T.“ABC” = =“AB” 返回值: .F.“ABC” = =“ABC” 返回值: .T.,字符串精确比较与EXACT设置精确比较是指两个字符串完全相同时,才返回逻辑真。字符串非精确比较是指当右侧的字符串是左侧字串的一个子串时,就认为它们相等。使用双等号运算符“= =”:精确比较两个字符串使用单等号运算符“=”:在比较两个字符串时 ,由set exact off|on命令的状态决定是否精确比较。单等号运算符主要用于模糊相等,或者模糊查找。,在Exact on时,较短者在其尾部加空格使它们等长,再比较。,例:set exact offstore “计

18、算机” to s1store “计算机 ” to s2store “计算机世界” to s3?s1=s3,s3=s1,s1=s2,s2=s1,s2= =s1set exact on?s1=s3,s3=s1,s1=s2,s2=s1,s2= =s1,五.逻辑表达式由逻辑运算符和逻辑型常量、逻辑型内存变量、逻辑型数组、返回逻辑型数据的函数和关系表达式组成。运算结果仍是逻辑型。逻辑非 .NOT. 或! 、 逻辑与 .AND. 、 逻辑或 .OR.运算符两侧的圆点可以省略。,六、多运算符的优先级,例:?122 AND 人人民 OR .T. 6 返回值: .F. (非运算) 3 + 5 6 .AND. 4

19、 * 5 =20 返回值: .T. (与运算),第四节 函 数 在Visual FoxPro系统中提供了一批标准函数,可以使用户以简便的方式完成某些特定的操作。根据函数的功能,可将标准函数大致分为11类:、数值类函数 、字符类函数、数据转换类函数 、日期和时间类函数、变量处理类函数 、数据库类函数、环境类函数 、数据共享类函数,一、数值函数1.绝对值和符号函数格式:ABS()求出指定表达式的绝对值。格式:SIGN()求出指定表达式的符号,正、零、负分别返回:1、0、-1。,2.求平方根函数格式:SQRT()求出指定表达式的平方根。要求表达式的值不能为负。3.圆周率函数格式:PI()求出圆周率。

20、注意:圆括号不能省略。,4.取整函数INT()返回数值表达式的整数部分。CEILING()返回大于或者等于数值表达式的最小整数。FLOOR()返回小于或者等于数值表达式的最大整数。X=5.3?int(x),int(-x),ceiling(x),ceiling(-x),floor(x),floor(-x)5 -5 6 -5 5 -6,X,0,a+1,a,b,b-1,Int(x),floor(x),Ceiling(x),floor(x),Int(x), Ceiling(x),5.四舍五入函数格式:ROUND(,)功能:对指定的数值进行四舍五入,保留指定位数的的小数。如果保留的小数位数小于0,表示对

21、整数部分的舍入位数。例:X=345.345 ?ROUND(X,2) ,ROUND(X,1) ROUND(X,0) ROUND(X,-1) 2表示保留两位小数,第三位四舍五入,-1表示对第一位整数进行四舍五入。,6.求余数函数格式:MOD(,)两数相除,求余数。余数与除数同符号。MOD(10,3), MOD(10,-3), MOD(-10,3), MOD(-10,-3), 1 -2 2 -1,7.求最大值和最小值函数MAX(,)MIN(,)功能:在若干个表达式中求出最大值或者最小值。例:?MAX(2,12,05),MIN(汽车,飞机,轮船) 2 飞机,二、字符函数1.求字符串长度函数格式:LEN

22、()长度即串中所包含的字符个数,一个汉字是两个字符。 例:?LEN(“中文Visual FoxPro6.0”)值为20。,2.大小写转换函数格式:LOWER()大写转小写。格式:UPPER()小写转大写。例:STR=”Welcome You!” ? UPPERG (STR) WELCOME YOU! ? LOWER (STR) welcome you!,3.空格字符串生成函数格式:SPACE() 返回由指定数目的空格组成的字符串。,4.删除前后空格函数 TRIM ()取掉串尾部的空格。LTRIM () 取掉串首部(左侧)的空格。ALLTRIM ()取掉串首尾的空格。去除字串尾部的空格是一个常见

23、的操作。,5.截子串函数LEFT(,)从左侧截取指定数量的子串。RIGHT(,)从右侧截取指定数量的子串。SUBSTR(,长度)从串中起始位置开始截取指定长度的子串。,6.计算子串出现次数函数格式:OCCURS(,)求子串在主串出现的次数。如果子串不出现,则返回0。?OCCURS(is,this is a is is),7.求子串位置函数格式: AT(,) ATC(,)功能:求出子串在主串中出现的位置序号。 ATC不区分大小写。出现次数用于判断多次出现的位置序号。 例:store “this is visual Foxpro” to x ?AT (“fox”,x),ATC(“fox”,x),A

24、T(“is”,x,3),AT(“xo”,x) 0 16 10 0,8.子串替换函数格式:STUFF(,,,)功能:在主串中,从起始位置起,指定长度的字符用子串替换,返回被替换后的字串。例:store “good bye!” to s1 store “morning” to s2 ?stuff (s1,6,3,s2),stuff(s1,1,4,s2) good morning morning bye替换与被替换的串不一定等长。,9.字符替换函数CHRTRAN(,)功能:在1中出现2中的字符时,用3中对应位置的字符替换。例:x1= CHRTRAN(“abacad”,”acd”,”x12”)凡1中出

25、现a的地方,用x替换,出现c的地方,用1替换。y1= CHRTRAN(“计算机abc”,”计算机”,”电脑”)z1= CHRTRAN(“大家好”,”大家”,”您”)?x1,y1,z1xbx1x2 电脑abc 您好,10.字符串匹配函数格式:LIKE(,)若两串对应位置上的字符相同,则返回逻辑真,反之返回逻辑假。Store “abc” to xStore “abcd” to y?like(“ab*”,x), like(“ab*”,y), like(x,y), like(“?b?”,x), like(“Abc”,x)用*和?可以进行模糊匹配。,三、日期和时间函数1系统日期和系统函数DATE()返回

26、当前的系统日期值。TIME()返回当前的时间值,为字符型。DATETIME()返回当前的日期时间值,为日期时间型。,2求年份、月份和天数函数YEAR(|)返回指定日期中的年份。MONTH(|)返回指定日期中的月份。DAY(|)返回指定日期中的天数。? YEAR (DATE(),MONTH (DATE(),DAY (DATE(),3时、分和秒函数HOUR()返回指定时间中的小时部分。注意:不可Hour(time(),而应是Hour(datetime(),取得当前的小时值。MINUTE()返回指定时间中的分钟部分。SEC()返回指定时间中的秒数部分。,四、数据类型转换函数1.数值转换成字符串格式:

27、str(,)功能:将数值转换成字符串。长度至少要大于数值的整数部分长度。例:store -123.456 to n ?”n=”+str(n,8,3) ? str(n,9,2), str(n,6,2), str(n, 3), str(n,6),str(n)主要用于显示输出时数据格式的统一。,?Str(year (date(),4)+年+str(month(date(),2)+月+str(day(date(),2)+日,2.字符串转换成数值格式:VAL()将数字型字串转换成数值。碰到第一个非数值字符时,停止转换。Store “-123.” to xStore “45” to yStore “A45

28、” to z?VAL(x+y), VAL(x+z), VAL(z+y),3.字符串转换成日期或日期时间格式:CTOD()将字串转换成日期。格式:CTOT()将字串转换成时间。Set date to ymdSet century onD1=ctod(2001/03/18)T1=ctot(2001/03/18+time()?d1,t1,ctod(50/01/01),ctod (51/01/01),4.日期或日期时间转换成字符串格式:DTOC(|,1)将日期转换成字串。格式:TTOC(,1)将时间转换成字串。例:store datetime() to t?t?DTOC(t), DTOC(t,1),当

29、使用选项1时,取掉原日期时间中的分隔符,且年份用8位数字形式。,?substr(dtoc(date(),1,2)+“年”+substr(dtoc(date(),4,2) + “月” +substr(dtoc(date(),7,2)+”日”上式基于年月日的日期格式,年份是两位。如是四位年份,格式如下: ?substr(dtoc(date(),1,4)+年+ substr(dtoc(date(),6,2)+ 月+substr(dtoc(date(),9,2)+日,5.宏替换函数格式:&.功能:在所在位置上替换出字串变量的值。圆点为分隔符。Store ”职工” to dbuse &db 等价于 us

30、e 职工xm=”姓名”?&xm-“你好!” (减法连接符,移首串尾空格)李小明你好!,五、测试函数1.值域测试函数格式:BETWEEN(,)功能:判断表达式T的值是否介于表达式L和表达式H之间。若在两者之间,则返回逻辑真,反之返回逻辑假。Store .null. to xStore 100 to y? BETWEEN(150,y,y+100), BETWEEN(90,x,y),2.空值测试函数格式:ISNULL()功能:判断表达式的值是否为NULL。若为NULL,则返回逻辑真,反之返回逻辑假。Store .null. to x?x, isnull(X)说明:NULL是一个特殊的值,程序设计引入

31、NULL,主要用于当某个变量的值不确定时,可以取NULL,可以理解为没有任何值,或者无效值。与0、空串、空格不同。,3.“空”值测试函数格式:EMPTY()功能:判断表达式的值是否为空值。若为空值,则返回逻辑真。 x=123 EMPTY(X)的返回值为:.F.,不同类型的“空”值规定,4.数据类型测试函数格式:VARTYPE(,)功能:返回指定表达式的数据类型(用字母表示)。与TYPE()函数有别,TYPE函数参数的变量名需要有双引号括起来。X=123?vartype(x)?type(“x”),5.表文件尾测试函数格式:EOF(|)功能:测试记录指针是否位于表文件尾。当记录指针位于最后一个记录

32、后时,返回逻辑真,若省略工作区号,则指当前工作区。一般在对表按逐条记录的方式进行处理时,需要该函数,用来判断操作是否结束。表文件的逻辑结构:,文件起始标识,文件结束标识,1,2,3,4,N-1,N,use aaGo bottom?eof()skip? eof(),eof(2)操作模式:Go 1Do while .not.eof() 操作记录 skipEnd do,6.表文件首测试函数格式:BOF(|)功能:测试记录指针是否位于表文件首(即第一条记录前),若省略工作区号,则指当前工作区。7.记录号测试函数格式: RECNO(|)功能:返回在指定工作区中打开的数据表的当前记录号,若省略工作区号,则

33、指当前工作区。,8.记录个数测试函数格式: RECCOUNT(|)功能:返回当前工作区中打开的表中的记录数。 Use aa ?bof(),recno() skip -1 ?bof(),recno() go bottom ?bof(),recno(),skip ?bof(),recno(),RECCOUNT()9.条件测试函数格式:IIF(,)功能:逻辑表达式的值为真,返回第一个表达式的值,反之返回第2个表达式的值。X=100Y=300?IIF (x100,x-50,x+50), IIF (y100,y-50,y+50),10.记录删除测试函数格式:DELETED(|)功能:判断当前记录是否有删除标记。有删除标记,返回逻辑真。(表中记录的删除规则) Select 0 Use 职工 Delete for 性别=“女”and 职称=“讲师” List 姓名,性别 for deleted(),

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号