




已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章VisualFoxPro基础,2.1VisualFoxPro的数据类型,2.1VisualFoxPro的数据类型VisualFoxPro定义了13种数据类型,这些类型可分为两大类:一类只适用于数据表中的字段,另一类不仅适用于字段,还适用于程序设计中的内存变量和数组。基本数据类型(1)字符型(C):由字母、汉字、数字、空格等任意ASCII码字符组成。字符的长度为0254,每个字符占1个字节。(2)数值型(N)用来表示数量,它由数字09、一个符号(+或-)和一个小数点(.)组成。数值型数据的长度为120,数值型数据取值的范围是:-.9999999999E+19.9999999999E+20(3)货币型(y):在使用货币值时,可以使用货币型来代替数值型。货币型数据取值的范围是:-922337203685477.5807922337203685477.5807小数位数超过4位时,系统将进行四舍五入的处理。每个货币型数据占8个字节。,(4)日期型(D):用以保存不带时间的日期值。日期型数据的存储格式为yyyymmdd其中yyyy为年,占4位,mm为月,占2位,dd为日,占2位。日期型数据的表示有多种格式,最常用的格式为mm/dd/yyyy。日期型数据取值的范围是:公元0001年1月1日公元9999年12月31日。(6)日期时间型(T):用以保存日期和时间值。日期时间型数据的存储格式为“yyyymmddhhmmss”其中yyyy为年,占4位,mm为月,占2位,dd为日,占2位,hh为时间中的小时,占2位,mm为时间中的分钟,占2位,ss为时间中的秒,占2位。日期时间型数据中可以只包含一个日期或者只包含一个时间值,缺省日期值时,系统自动加上1999年12月31日,省略时间值时,则自动加上午夜零点。(6)逻辑型(L):用于存储只有两个值的数据。存入的值只有真(.T.)和假(.F.)两种状态,占1个字节。,VisualFoxPro的数据类型,以下数据类型只能被用于数据表中的字段:,(7)双精度型(Double):用于取代数值型,以便能提供更高的数值精度。双精度型只用于数据表中字段的定义,它采用固定存储长度的浮点数形式。与数值型不同,双精度型的小数点的位置是由输入的数据值来决定的。双精度型数值的取值范围是:+/-4.94065645841247E-324+/-8.9884656743115E307每个双精度型数据占8个字节。(8)浮点型(Float):只能用于数据表中字段的定义,包含此类型是为了提供兼容性,浮点型在功能上与数值型等价。(9)通用型(G):用于存储OLE对象,只能用于数据表中字段的定义。该字段包含了对OLE对象的引用,而OLE对象的具体内容可以是一个电子表格、一个字处理器的文本、图片等,是由其他应用软件建立的。,VisualFoxPro的数据类型,(10)整型(I):用于存储无小数部分的数值,只能用于数据表中字段的定义。在数据表中,整型字段占用4个字节,取值范围是:-21474836472147483647整型以二进制形式存储,不像数值型那样需要转换成ASCII字符存储。(11)备注型(M):备注型用于字符型数据块的存储,只能用于数据表中字段的定义。在数据表中,备注型字段占用4个字节,并用这4个字节来引用备注的实际内容。实际备注内容的多少只受内存可用空间的限制。备注型字段的实际内容变化很大,不能直接将备注内容存在数据表(.DBF)文件中。系统将备注内容存放在一个相对独立的文件中,该文件的扩展名为.FPT。,VisualFoxPro的数据类型,(12)字符型(二进制):用于存储任意不经过代码页修改而维护的字符数据,只能用于数据表中字段的定义。(13)备注型(二进制):用于存储任意不经过代码页修改而维护的备注型数据,只能用于数据表中字段的定义。,数据存储与运算方式,在VisualFoxPro系统环境下,数据输入、输出是通过数据的存储设备完成的。可将数据存入到常量、变量、数组中,还可以存入到字段、记录和对象中。这些供数据存储的常量、变量、数组、字段、记录和对象称为数据存储容器。1.常量常量是一个具体的数据项,其特征是在所有的操作中其值不变。常量有以下六种。(1)数值型常量由数字(09)、小数点和正负号组成。123、-34.560.55E38E-3,(2)字符型常量由汉字和ASCII字符集中可打印字符组成的字符串,使用时必须用定界符括起来。“”“你好”helloabc(3)逻辑型常量由表示逻辑判断结果“真”或“假”符号组成。.t.y.f.n.(4)日期常量用于表示日期,其规定格式以yyyy-mm-dd表示。2009-3-4(5)时间日期型常量用于表示时间日期,其规定格式以yyyy-mm-ddhh:mm:ss表示。2009-02-20,4:48:10p,2.内存变量P23内存变量形式:内存变量、数组变量、系统变量、字段变量。每一个内存变量都必须有一个固定的名称,以标识该内存单元的存储位置。当退出VisualFoxPro系统后,内存变量也会与系统一起消失。用户可以根据需要定义内存变量类型,它的类型取决于接受的数据的类型。它的类型有数值型N、字符型C、逻辑型L、日期型D、时间日期型T、货币型Y、对象型O七种。,内存变量的命名:内存变量名的长度1-128个字符,是由字母、数字和下划线组成。如果内存变量与数据表中的字段变量同名时,用户在引用内存变量时,要在其名字前加一个m.,用以强调这一变量是内存变量。内存变量的赋值:内存变量的赋值和输出,可以使用STORE、“=”或“?”命令进行操作完成。三个命令的格式如下:.STORETO.=.?系统变量:系统变量名都以下划线开头_screen.fontsize=12内存变量的作用域:每个内存变量都有它的作用域。用户可以通过LOCAL、PRIVATE、PUBLIC命令规定作用域,也可以使用系统默认的范围作为内存变量的作用域。,X=90A1=“hello”Store.t.toa,b,c,变量的释放,当程序结束,从内存中删除或释放变量的命令是:RELEASE内存变量表这里,内存变量表中的各个变量用逗号分隔。还可以使用CLEARMEMORY命令清除所有的内存变量。,变量的显示,显示内存变量的命令格式有两种:LISTMEMORYLIKE通配符TOPRINTERPROMPT|TOFILE文件名DISPLAYMEMORYLIKE通配符TOPRINTERPROMPT|TOFILE文件名例:LISTMEMORYlikea*,表达式与运算符,表达式是由数据、数据存储容器和运算符组成的运算式。在VisualFoxPro系统中根据不同的运算符及表达式结果的不同,表达式可以分为以下五种:1.算术表达式算术表达式可由算术运算符和数值型常量、数值型变量、返回数值型数据的函数组成。运算结果是数值型常数。,数值型表达式,算术运算符有6种,按优先级由高到低的排列顺序为:*或(乘方).*(乘)、/(除)、%取模,即取两个数相除的余数.+(加)、一(减)此外,还可以使用圆括号改变运算顺序。例如:A=6?(8+A)/2&显示结果为:7.0000?20%3&显示结果为:2?3*A-26&显示结果为:-8?210&显示结果为:1024.00,字符型表达式,2.字符表达式字符表达式可由字符运算符和字符型常量、字符型变量和返回字符型数据的函数组成。字符表达式运算的结果是字符串字符运算符只有两种:+(完全连接运算符,将两个或多个字符串按顺序直接连接成一个字符串)-(不完全连接运算符,用于连接两个字符串,并将前一个字符串尾部的空格移到结果字符串的尾部)例如:姓名=”王小红”?”姓名”+姓名&显示结果为:姓名王小红?”Visual”+”FoxPro”+”6.0”&显示结果为:VisualFoxPro6.0?”科学”+”技术”&显示结果为:科学技术?”科学”-”技术”&显示结果为:科学技术,3.时间日期表达式时间日期表达式可由日期运算符和时间日期型常量、时间日期型内存变量和数组、返回时间日期型数据的函数组成。时间日期表达式运算的结果是时间日期型常数。,日期运算符有两种,日期运算符有两种:+(相加)-(相减)例如:?2008-9-10+30&显示结果为10/10/08?2008-9-10-30&显示结果为:08/11/08?2008-10-1-2008-9-10&显示结果为21,关系运算符P69,4.关系表达式关系表达式可由关系运算符和字符表达式、算术表达式、时间日期表达式组成。其运算结果为逻辑型常量。关系运算是运算符两边同类型元素的比较,关系成立结果为(T);反之,结果为(F)。关系运算符有8种,它们的优先级相同,由其先后顺序和括号来决定运算次序。(大于)=(大于或等于)(不等于listfor姓名#李=(完全等于,两个字符串完全相同才为真)?”ab”=“a”&.f.listfor姓名=李$(包含,右串包含左串才为真,或者说左串为右串的子串才为真)?”a”$”ab”&.t.listfor李$姓名,说明:关系运算符两侧值或表达式的类型应一致。数学不等式axb,在VFP中不能写成a=aANDx=90&显示结果为:.F.?S1200&显示结果为:.T.?S1200&显示结果为:.F.,运算符的优先顺序,运算符的优先顺序在一个表达式中进行多种操作时,VFP会按一定的顺序进行求值,称这个顺序为运算符的优先顺序。运算符的优先顺序,见表5-4。说明:同级运算按照它们从左到右出现的顺序进行计算。可以用括号改变优先顺序,强令表达式的某些部分优先运行。括号内的运算总是优先于括号外的运算,在括号之内,运算符的优先顺序不变。,【例5-1】设变量x=3,y=-2,a=6.5,b=7.2,求下列表达式的值:x+ya+bANDNOTy0.7ANDNOTy指明四舍五入的位置。若数值表达式2大于0,那么它表示的是要保留的小数位置;若数值表达式2小于0,则表示的是整数部分的舍入位数。X=345.678?ROUND(X,2)&显示结果为345.68?ROUND(X,0)&显示结果为346?ROUND(X,-1)&显示结果为350,求余函数(或求模函数),格式:MOD(,)功能:求除以的余数。其正负号与相同。例8:?MOD(50,7),MOD(50,-7),MOD(-50,7),MOD(-50,-7),求最大值和最小值函数,格式:MAX(,数值表达式3)功能:MAX()计算各自变量表达式的值,并返回其中的最大值。MIN()计算各自变量表达式的值,并返回其中的最小值。自变量表达式的类型可以是数值型、字符型、货币型、双精度型、浮点型、日期型和日期时间型,但所有表达式的类型要相同。?MAX(“ABC”,”AD”,”ABD”)&显示结果为AD?MIN(34,56,78)&显示结果为34,求随机数函数,8.求随机数函数格式:RAND()功能:返回一个0到1之间的随机数。用来指定返回的数值序列的种子数值。?RAND()&显示结果为0.11?RAND(-11)&显示结果为0.53求:最大值和最小值为指定范围中的最大值、最小值Int(最大值-最小值+1)*Rand()+最小值)例:求10-99之间的随即数?INT(99-10+1)*RAND()+10),求字符串长度函数,1求字符串长度函数格式:LEN()X=”ABCD”?LEN(x)&显示结果为4?LEN(“x”)&显示结果为1,大小写转换函数,2.大小写转换函数格式:LOWER()UPPER()LOWER(”VisualFoxPro”)&显示结果为visaulfoxproUPPER(”VisualFoxPro”)&显示结果为VISUALFOXPRO,空格字符生成函数,3.空格字符生成函数格式:SPACE()功能:返回由指定数目的空格组成的字符串。,删除前后空格函数,ALITRIM()TRIM()返回指定字符表达式值去掉尾部空格后形成的字符串。LTRIM()返回指定字符表达式值去掉前导空格后形成的字符串。ALLTRIM()返回指定表达式去掉前导和尾部空格后形成的字符串。,取子字符串函数,SUBSTR(,,)功能:在中从截取若干个字符。若省略或的值大于从起始位置到结束的所有字符个数,则取从起始位置起到字符串结束的所有字符作为函数值。,例14:?SUBSTR(中国合肥,5,2)?SUBSTR(中国合肥,5)?RIGHT(ABCDEF,3),结果:合合肥DEF,说明:另两个截取子串的函数:RIGHT(,)从右边取若干个字符。LEFT(,)从左边取若干个字符。,求子串位置函数,7求子串位置函数格式:AT(,)ATC(,)功能:AT()的函数值为数值型。如果是的子串,则返回的首字符在字符表达式2值中的位置,:若不是子串,则返回0。ATC()与AT()功能类似,但在子串比较时不区分字母大小写。第三个自变量数值表达式用于表明要在字符表达式2值中搜索字符表达式l值第几次出现,其默认值是1。?at(“a”,”abca”),3常用日期和时间函数,系统日期和时间函数格式:DATE()TIME()DATETIME()求年份、月份和天数函数格式:YEAR(|)MONTH()DAY(|时、分和秒函数格式:HOUR()MINUTE()SEC(),日期和时间函数,日期和时间函数的自变量一般是日期型数据或日期时间型数据,4数据类型转换函数,类型转换函数举例,字符与数值相互转换(1)数值转换为字符串STR(,),小数点和正负号各计算一位计入总长度中,若小于值的整数位数,则返回由“*”组成的字符串。若省略,则认为小数位为0;若同时省略,则整数位数默认为10。,功能:将的值转换为字符串,实现数值型到字符型的转换。决定转换结果的字符串总长度,指定转换结果小数部分的数字字符个数。,(2)字符串转换成数值格式:VAL()功能:将由数值组成的字串转换为数值。注意:转换从最左非空字符开始,一直到非数字符为止。如果第一个字符就为非数字自负,则函数值返回0。例22:?VAL(234.56)+12.34S=56DEF?VAL(S)*2?VAL(A3),宏替换函数,格式:&.功能:替换出字符型变量的内容,即&的值是变量中的字符串。如果该函数与其后的字符无明确分界,则要用作函数结束标识。宏替换可以嵌套使用。例a1=”Fox”,宏替换函数,?”Visual&a1.Pro”&显示结果为VisualFoxProb1=”2002”b2=2002?&b1+b2&显示结果为4004,5测试函数,在数据处理过程中,有时用户需要了解操作对象的状态。例如,要使用的文件是否存在、数据库的当前记录号、是否到达了文件尾、检索是否成功、某工作区中记录指针所指的当前记录是否有删除标记、数据类型等。尤其是在运行应用程序时,常常需要根据测试结果来决定下一步或程序走向。常用字符函数的有:,值域测试函数,格式:BETWEEN(,)功能:判断一个表达式的值是否介于另外两个表达式的值之间。当表达式1值大于等于表达式2且小于等于表达式3时,函数值为逻辑真(.T.),否则函数值为逻辑假(.F.)。,值域测试函数,该函数的自变量类型既可以是数值型,也可以是字符型、日期型、日期时间型、浮点型、整型、双精度型或货币型,但三个自变量的数据类型要一致。?BETWWEN(20,10,100)&显示结果为.T.,空值测试函数,格式:EMPTY(表达式)功能:根据指定表达式的运算结果是否为空值,返回逻辑真(.T.)或逻辑假(.F.)。首先要注意,这里所指的空值与NULL值是两个不同的概念。函数EMPTY(.NULL.)的返回值为逻辑假(.F.)。其次,该函数自变量表达式的类型除了可以是数值型之外,还可以是字符型、逻辑型、日期型等类型。不同类型数据的空值,有不同的规定,表达式类型测试函数,格式:TYPE(“”)功能:返回指定字段或表达式的类型。测试表达式的类型,返回一个大写字母,函数值为字符型。,表达式类型测试函数,例A1=”65”?TYPE(A1)&显示结果为N?TYPE(“A1”)&显示结果为C,表文件尾测试函数,格式:EOF()功能:返回当前表文件(若缺省自变量)或指定表文件中当前记录(记录指针所指记录)的记录号。如果指定工作区上没有打开表文件,函数值为0。如果记录指针指向文件尾,数值为表文件中的记录数加1。如果记录指针指向文件首,函数值为表文件中第一条记录的记录号。,记录个数测试函数,格式:RECCOUNT()功能:返回当前表文件(若缺省自变量)或指定表文件中的记录个数。如果指定工作区上没有打开表文件,函数值为0。USESTD_CJ&假定表中有10条记录.?BOF(),RECNO()&显示.F.1SKIP-1?BOF(),RECNO()&显示.T.1GOBOTTOM?EOF(),RECNO()&显示.F.10SKIP?EOF(),RECNO(),RECCOUNT()&显示.T.1110,条件判断函数,格式:IIF(条件表达式,表达式1,表达式2)条件表达式为真,返回表达式1的值;条件表达式为假,返回表达式2的值。如:CJ=80?IIF(CJ=60,”通过”,”不通过”)&显示结果为:通过X=100Y=300?IIF(X100,X-50,X+50)&显示结果为150?IIF(Y100,Y-50,Y+50)&显示结果为250,VisualFoxPro的命令格式,281VisualFoxPro的命令格式命令的一般格式为:命令动词范围FOR条件WHILE条件表达式表FIELDS字段名表范围短语用来确定执行该命令时涉及哪些记录,一般有四种选择:ALL&显示全部记录RECORD&显示第n条记录NEXT&显示包括当前记录在内的以下n条记录REST&显示从当前记录开始到最后一条记录的所有记录LIST|DISPLAY表达式表范围FQR条件WHILE条件OFFTOPRINT,2VisualFoxPro命令的书写规则,1)语法书写规则(1)每个命令必须以一个命令动词开头,大小写字母等效。在命令窗口输入命令时,一律在英文输入状态下进行。标点符号均用英文,否则系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年药物研发与临床试验相关知识考试卷及答案
- 2025年食品安全管理与检测知识考试卷及答案
- 2025年可再生能源与环境工程考试卷及答案
- 2025年电气工程师资格证考试试题及答案
- 2025年地质勘探与资源评估考试卷及答案
- 2025年环保工程师职业考试题及答案
- 2025年公共卫生服务能力考察试卷及答案
- 2025年国际关系与外交知识考试试题及答案
- 2025年工程师执业考试试卷及答案解析
- 2025年公共卫生与健康管理专业考试试题及答案
- 《无人机测绘技术》项目2任务3无人机航测正射影像
- 课后服务家长满意度调查表
- DB43-T 1577-2024基于镉含量的稻谷分级收储技术规程
- (完整版)西泠印社出版社三年级下册《书法练习指导》完整教案
- 信号完整性分析之1314
- DB11T 1855-2021 固定资产投资项目节能审查验收技术规范
- 第1节 功、热和内能的改变 教学课件
- 古诗文联读 专项训练-2025年中考语文复习突破(江苏专用)(解析版)
- 课件:《中华民族共同体概论》第十五讲:新时代与中华民族共同体建设
- 2024至2030年中国锅炉给水泵行业深度调研及发展预测报告
- 计算机组成原理习题答案解析(蒋本珊)
评论
0/150
提交评论