VisualForPro基础语法.doc_第1页
VisualForPro基础语法.doc_第2页
VisualForPro基础语法.doc_第3页
VisualForPro基础语法.doc_第4页
VisualForPro基础语法.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Visual FoxPro 6.0 基础语法一、 Visual FoxPro的数据类型(1)数据数据计算机程序处理的对象,也是运算产生的结果,可以从各种不同的角度对数据进行分类。 从数据的类型来分,数据分为数值型数据,字符型数据,逻辑型数据等。 从数据的处理层次来分,数据分为常量、变量、函数和表达式。(2)数据类型数据类型数据的基本属性,不同的数据类型有不同的存储方式和运算规则;同时也是对数据的允许值及其取值范围的说明。VFP6.0共有13种数据类型:字符型、数值型、日期型、日期时间型、逻辑型、货币型、整型、浮点型、双精度型、备注型、通用型、二进制字符型、二进制备注型。1.1 字符型(Character,C)(1)包括任意文本:中文字符、英文字符、数字字符、其它ASCII码字符。(2)长度(字符个数):最多254个字符。(3)表示:名称、地址、电话号码等信息。(4)取值范围:任意字符。1.2 数值型(Numeric,N)(1)整数或小数。(2)由数字(0-9)、小数点、正负号组成。(3)长度:内存中8个字节,表中1-20个字节(即最大20位)。(4)表示:某种数量的确切值,如重度、长度、工资等信息。(5)取值范围:-0.9999999999E+19至+0.9999999999E+201.3 日期型(Date,D)(1)月、日、年。(2)长度:8个字节。(3)表示:日期。(4)默认格式:mm/dd/yyyy,mm表示“月”,dd表示“日”,yyyy表示“年”。(5)取值范围:01/01/0001至12/31/9999。1.4 日期时间型(DateTime,T)(1)月、日、年、时、分、秒。(2)长度:8个字节。(3)表示:日期、时间。(4)默认格式:mm/dd/yyyy hh:mm:ss,时间部分中hh表示”时”,mm表示“分”,ss表示“秒”。(5)取值范围:时间部分为00:00:00至23:59:59。1.5 整型(Integer,I)(1)整数值,即不包含小数部分的数值型数据。(2)长度:4个字节。(3)以二进制形式存储。(4)取值范围:-2147483647至+2147483646。1.6 浮点型(Float,F)(1)以科学计数方法表示数值,用尾数、阶码、字母E组成。(2)整数部分、小数部分。(3)长度:内存中8个字节,(4)取值范围:-0.9999999999E+19至+0.9999999999E+201.7 双精度型(Double,B)(1)具有更高精度的数值型数据。(2)长度:8个字节。(3)取值范围:+/-4.94065645841247E-324至+/-8.9884656743115E+307。1.8 逻辑型(Logical,L)(1)描述客观事物的“真”或“假”。(2)长度:1个字节。(3)表示“是/否”两种状态。(4)取值范围:.T.或.F.。1.9 货币型(Currency,Y)(1)货币、金额的数量。(2)长度:8个字节。(3)也可用数值型表示。(4)取值范围:-922337203685477.5808至+922337203685477.5807。(5)书写格式:在数值前加;不能用科学计数法。例: -1212、0.50001.10 备注型(Memo,M)(1)用来在数据表中表示和存放大块数据。(2)长度:4个字节,即这只用来存放一个指向备注文件的地址指针。(3)输入的数据并不是直接存放于数据表文件中,而是存放在与数据表文件同名、但扩展名为“.FPT”的数据表备注文件中。(4)取值范围:具体的内容可以很长,受可用内存空间限制。1.11 通用型(General,G)(1)用于存储OLE(对象链接与嵌入)对象的数据,即图形、图像、声音等多媒体信息数据。(2)长度:4个字节,类似于备注型,也是只存放了一个链接指针,用来指向具体内容。1.12 二进制备注型、二进制字符型(1)以二进制格式存储的数据类型,只能用于表中字段数据的定义,所存储的数据不受代码页改变的影响。(2)代码页实际是只不同国家的字符集,计算机用这个字符集来准确的显示信息,不同代码页代表不同的平台和语言。(3)分别基本等同于前述备注型和字符型。以上数据类型均可应用于表中字段数据类型的定义,其中: 双精度型、浮点型、通用型、整形、备注型、二进制字符型、二进制通用型只能用于字段; 其余则可以既用于字段,也可用于变量、数组。二、 常量常量在整个操作过程中保持不变的数据,通常在命令或程序中直接给出其值。VFP中常用的数据类型:字符型常量、数值型常量、浮点型常量、日期型常量、日期时间型常量、逻辑型常量等。2.1 字符型常量(1)又称“字符串”,由任意字符、任意ASCII码、数字、汉字组成的字符序列。(2)用定界符将字符串括起来:“ ”、 、 。(3)如果字符串中包含了某个定界符,则这个定界符不能再使用,而要使用别的定界符。例如正确:“abcd”、12/10/2001、I am a student.、教师错误:“abcd”正确:“abcd”或“abcd”2.2 数值型常量 由数字(0-9)、小数点、正负号。例如:-1234(整数)、398(整数)、0.1984(小数)2.3 浮点型常量(1)数值型常量的浮点格式,对应日常的科学记数法。(2)一般表示绝对值很大或很小、而有效数位不太长的数值。例如:4E-6(即0.000004或410-6)2.4 逻辑型常量(1)两个值:逻辑真、逻辑假。(2)表示逻辑判断的结果,方法 逻辑真:.T.或.t.或.Y.或.y. 逻辑假:.F.或.f.或.N.或.n.2.5 货币型常量(1)表示货币值。(2)书写格式:在数值常量之前加上。(3)不能使用科学记数法表示货币型常量。例如 正确:-1212、 0.50 错误:4E-6(4)小数位数不超过4位,若超过四位则多余位数被四舍五入。2.6 符号常量(也称:编译常量)(1)符号常量在程序中为一个符号先定义一个值,程序运行时,凡见到此符号,就代表是先定义的值。(2)编译程序时,将符号自动替换为事先定义的值。(3)主要用于表示复杂的常量。2.7 日期型常量(1)表示日期的数据。(2)需要用 将年月日括起来,且年月日之间用分隔符分开。(3)分隔符有斜杠/、连字符-、西文句号.、空格。 书写常量时,可使用任意一种分隔符 系统输出时,默认斜杠/(4)“指定分隔符”指令:SET MARK TO 日期分隔符例如:输入 输出 SET MARK TO / 09/21/07 ?2007.09.21 09-21-07 SET MARK TO - ?2007.09.21(5)两种书写格式 严格日期格式:yyyy-mm-dd 例如:2007-09-21 年份必须是四位,年月日顺序不能颠倒,年月日均不能省略。 传统日期格式:mm/dd/yy例如:09/21/07(6)“年月日顺序改变”指令:SET DATE TO 年月日格式例如:输入 输出 SET DATE TO MDY 09/21/07 ?09/21/07 07/09/21 SET DATE TO YMD ?07/09/21(7)用传统格式书写日期常量时,年份可使用4位数字,也可使用2位数字;系统显示一个日期量时,默认2位数字,若要显示4位数字,则需设置。 “4位年份数字显示开启(ON)/关闭(OFF)”指令(默认关闭):SET CENTURY ON/OFF(8)使用传统日期格式时,必须先执行语句:SET STRICTDAT TO 0否则出错。例如,在命令窗口中输入 输出SET STRICTDAT TO 0 09/21/07SET DATE TO MDY 09/21/2007?09/21/2007SET DATE TO ON?07/09/21 2.8 日期时间型常量(1)表示日期和时间。(2)基本格式:, 部分:与日期型常量完全相同。 部分:hh:mm:ssa|p hh时、mm分、ss秒、a上午、p下午例如:2007-09-21,2:30:5p,2007年9月21日下午2时30分5秒 时、分、秒默认值:12、0、0 若不指定a或p,则默认a例如:2007-09-21,10,2007年9月21日上午10时三、 变量(1)变量在命令操作和程序运行过程中值允许变化的量。在高级语言中,利用变量可以对多个数据进行相同的操作,以简化计算和设计,例如,将一个工人工作的小时数加起来,再乘以每小时工作应付的工资标准,便知道一个工人应得的报酬,如果对每个工人都这样操作会非常的麻烦,但可以将这些信息保存在变量中,对变量进行操作,通过运行程序来实现数据的更新。(2)Visual FoxPro的四类变量:内存变量、字段变量、数组变量、系统变量。 内存变量与数据库无关,即独立于数据库和表,存于内存区域中的变量。 字段变量与数据库有关,即依赖于数据库和表,字段变量的值是当前所打开的表的当前记录(行)的该字段(列)的值。 数组变量存放多个数据的内存单元组。(3)变量的作用域变量的作用域包括定义它的过程所调用的子过程范围,在VFP中,可使用LOCAL ,PRIVATE和PUBLIC命令强调规定变量的作用范围。 用LOCAL创建的变量只能在创建它们的过程中使用和修改,不能被更高层或更低层的过程访问。 PRIVATE用于定义私有变量,它用于定义当前过程的变量,并将以前过程定义的同名变量保存起来,在当前过程中使用私有变量而不影响这些同名变量的原始值。 PUBLIC用于定义全局变量。本次运行期间,所有过程都可以使用这些全局变量。3.1 内存变量(1)独立于数据库与表之外,当系统关闭(退出VFP时)内存变量会自动消失。(2)内存变量的保存:用内存变量文件来保存内存变量的值。(3)一种临时的工作单元,通常用来保存命令和程序执行的中间结果,或保存对数据库和表进行某种分析和处理后得到的结果数据,还可用于控制流程。(4)VFP通过变量名存取变量,在使用变量之前不必要专门定义,直接取名、赋值即可。(5)内存变量的类型有赋予其值的类型决定,即赋予何种数据类型的值,此内存变量就是何种数据类型;也是可以改变的。(6)除了专门用于字段变量的数据类型之外,其它数据类型都可用于内存变量。(7)内存变量的命名规则 组成:字符(中、英文字符)、数字、下划线;以字符、数字开头。 长度:一般不得超过10个字符;有的可使用1-128个字符;有的最多不超过254个字符。 不能使用Visual FoxPro的保留字。 一个汉字(中文)占两个字符。例:变量命名 合法变量名:ABCD P0000 xyz 姓名 非法变量名:7ab IF Ab5 89DFF(8)内存变量的赋值格式1:STORETO格式2:=功能:在赋值给内存变量的同时定义内存变量,确定数据类型。例:STORE 5 TO a1,a2STORE “井冈山” TO 城市m=5rq=08/20/80性别=.t.说明: 两种格式的主要区别在于格式,格式1可以对多个内存变量赋相同的值,注意:当内存变量名表中有多个变量时,应用逗号”,”分开。 表达式可以是一个具体的值,如果不是具体的值,先计算表达式的值,再进行赋。 上述命令分别给内存变量a1、a2和m赋予数值型常量5,使其成为数值型的内存变量;给内存变量“城市”赋予字符型常量“井冈山”,使其成为字符型的变量;给内存变量和性别分别赋予日期型常量(08/20/80)和逻辑型常量,使其分别成为日期型的内存变量和逻辑型的内存变量。 如果要建立屏幕型内存变量,即将屏幕画面赋予内存变量,可用命令“SAVE SCREEN TO ”来实现,并用“RESTORE SCREEN FROM”恢复。(9)内存变量的显示和输出 只查看内存变量的值,用?和? ?:先换行,再输出内存变量的值。 ?:直接(即不换行)输出内存变量的值。例:a=2a1=”多媒体计算机”?a?a1?a,a1结果为:2多媒体计算机 2 多媒体计算机 若想了解内存变量的有关情况,如内存变量的名称,类型和值等,可用显示命令格式:DISPLAY/LIST MEMORY LIKE TO PRINTER/TO FILE功能:显示内存变量的当前内容,可选择打印或者将这这些内容送到一个文本文件中。说明:通配符的含义与DOS中的通配符含义一致,文件名的扩展名是TXT为文本文件。使用LIST,显示时自动滚屏,直接显示到最后一行;使用DISPLAY,分页显示,换页时需要用户键入任意键。通配符一类键盘字符,有星号(*)和问号(?) 当查找文件、文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者不想建入完整名字时,常常使用通配符代替一个或多个真正字符。 星号(*):可以使用星号代替0个或多个字符。如果正在查找以AEW开头的一个文件,但不记得文件名其余部分,可以输入AEW*,查找以AEW开头的所有文件类型的文件,如AEWT.txt、AEWU.EXE、AEWI.dll等。要缩小范围可以输入AEW*.txt,查找查找以AEW开头的所有文件类型并.txt为扩展名的文件如AEWIP.txt、AEWDF.txt。 问号(?):可以使用问号代替一个字符。如果输入love?,查找以love开头的一个字符结尾文件类型的文件,如lovey、lovei等。要缩小范围可以输入love?.doc,查找以love开头的一个字符结尾文件类型并.doc为扩展名的文件如lovey.doc、loveh.doc。 通配符包括星号“*”和问号“?”,星号表示匹配的数量不受限制,而后者的匹配字符数则受到限制。这个技巧主要用于英文搜索中,如输入“computer*”,就可以找到“computer、computers、computerised、computerized”等单词,而输入“comp?ter”,则只能找到“computer、compater、competer”等单词。(9)内存变量的显示和输出例:a=2a1=“多媒体计算机”LIST MEMORY LIKE “a”结果为:A Pub N 2 (2,00000000)A1 Pub C “多媒体计算机”(10)内存变量的保存 内存变量是在操作过程中随机定义的,被保存在主机的内存中,关机后内存变量名及其存储单元中的值都会被释放,重开机后原先定义的内存变量不再存在。 如果在操作过程中,有的内存变量还需要在下次使用,则可以把这些内存变量保存起来,存入内存变量文件中,待下次使用时直接调用。 命令格式:SAVE TO ALL LIKE|EXCEPT 功能:当前定义的内存变量全部或一部分被存入内存变量文件中,内存变量文件的扩展名为“.MEM”。几点说明 SAVE TO :将此命令前所定义的内存变量存入指定的文件中。 SAVE TO ALL LIKE :将全部符合通配符的内存变量存入指定文件中。 SAVE TO ALL EXCEPT :将不符合通配符的内存变量存入指定文件中。例N=3NAME=“张三” (注意:定界符、运算符都必须使用英文状态)STORE 0 TO A1,A2,A3STORE 1 TO B1,B22,B333STORE 45*3.1415 TO X1SAVE TO NC1 (将变量N、NAME、A1、A2、A3、B1、B22、B333、X1存入文件NC1.MEM)SAVE TO NC2 ALL LIKE A* (A1、A2、A3存入NC2.MEM)SAVE TO NC3 ALL EXCEPT A* (N、NAME、B1、B22、B333X1存入NC3.MEM)SAVE TO NC4 ALL LIKE B? (B22存入NC4.MEM)SAVE TO NC5 ALL LIKE B* (B1、B22、B333存入NC5.MEM)(11)内存变量的释放(恢复或调用) 内存变量被存入内存变量文件中,待要使用时,需重新调用。 内存变量的释放将存储在内存变量文件中的内存变量读入内存中。 命令格式:RESTORE FROM ADDITIVE使用说明: RESTORE FROM :将指定的内存变量文件中的内存变量调入内存中,同时覆盖内存中原有的内存变量,即原有的内存变量不再存在。 RESTORE FROM ADDITIVE:将指定的内存变量文件中的内存变量调入内存中,同时保留内存中原有的内存变量。(12)内存变量的删除(清除)删除/清除内存变量删除内存中不需要的变量或全部变量。格式1:CLEAR ALL清除内存中所有内存变量,且可以关闭所有打开的库与表。格式2:CLEAR MEMORY删除内存中所有内存变量。格式3:RELEASE ALL EXTENDED删除内存中所有内存变量。格式4:RELEASE 删除内存变量名表中指定的内存变量。格式5:RELEASE ALLLIKE|EXCEPT利用通配符选择删除内存变量。3.2 字段变量(1)构成数据库表的变量,具体指数据库中一栏或一列数据。(2)需要定义字段变量的名称、类型、宽度等信息。(3)所有数据类型都可以做字段变量。知识点:内存变量和字段变量可以同名及区别方法 内存变量和字段变量式和以同名的。 如果同名,字段变量优先于内存变量,即如果直接引用变量名,则是引用此名称的字段变量名;如果要引用同名的内存变量名,则需要在内存变量名前加“M.”或“-.”。3.3 数组变量 数组一组内存变量,在内存中连续存放。 数组元素数组中的每个变量。 VFP中可定义一维数组和二维数组。 一个数组中的所有元素集合作为一个整体,用一个变量名。 同一个数组中的不同元素的值可以是不同数据类型,这与其他高级程序设计语言完全不同。 数组在使用前必须用DIMENSION或DECLARE指令定义,数组起始值为1。(1)数组的定义 数组定义命令格式DIMENSION (,) 数组名2 (,) 或DECLARE (,) 数组名2 (,) 命令功能 同时可以定义一个或多个数组; 下标的下界值(即最小值)系统设置为1。例:DIMENSION X(5),Y(2,3)定义了两个数组: 一维数组X,其中元素分别为X(1)、X(2)、X(3)、X(4)、X(5)。 二维数组Y,其中元素分别为Y(1,1)、Y(1,2)、Y(1,3)、Y(2,1)、Y(2,2)、Y(2,3)。(2)数组的赋值 数组元素的初值默认为“.F.”。 赋值语句使用数组名,整个数组每个元素等到同一个值。 赋值语句使用数组元素时,给每个元素分别赋值,元素的下标下限为1,下标上限是定义数组时指定的上限值。例DIMENSION a(2,3),b(5),c(8)a=10b(5)=9STORE 3 TO b(4)STORE 1 TO c说明:定义了三个数组a、b、c,赋值后a中的元素a(1,1)-a(2,3)的值都为10;b中的元素b(5)的值为9,b(4)的值为3,b(1)-b(3)没有赋值,同为默认值“.F.”;c中的所有元素c(1)c(8)的值都为1。 将表中当前的记录复制到数组-SCATTER语句VFP中可以将当前表中的内容保存到一个数组中;数组的数据类型不受限制,所以不论字段是何类型,都可复制。两种格式格式1:SCATTER FIELDSMEMO TO BLANK 在处直接指定要复制的字段,若不指定字段,则默认复制除备注型和通用型以外的所有字段。格式2:SCATTER FIELDS LIKE| FIELDS EXCEPTMEMO TO BLANK 用LIKE后的指定要复制的字段; 用EXCEPT后的指定不需要复制的字段。MEMO表示复制备注型字段;BLANK表示生成一个空数组。例 USE 学生 SCATTER TO A SCATTER FIELDS 学号,姓名 TO B SCATTER FIELDS LIKE 学* TO C SCATTER FIELDS EXCEPT 年* TO D 将数组中的数据复制到表的当前记录-GATHER语句格式1:GATHER FROM FIELDSMEMO格式2:GATHER FROM FIELDS LIKE|FIELDS EXCEPT 数组变量的显示、保存、释放-同内存变量的方法 数组变量的显示:使用LISR MEMO或DISP MEMO命令。 数组变量的保存:使用SAVE命令。 数字变量的释放:使用REST FROM命令。3.4 系统变量/系统内存变量(1)系统变量是VFP系统特有的内存变量,由系统定义、维护。(2)系统变量的变量名均以下划线“_”开始,因此定义内存变量和数组变量时尽量不要以下划线开始,避免冲突。(3)系统变量给数据库系统的操作、管理带来方便。四、 运算符和表达式运算符对数据进行加工和处理的一种符号。 包括:算术(数值)运算符、字符运算符、日期时间运算符、逻辑运算符、关系运算符。表达式由常量、变量、函数及其他数据容器单独或用运算符连接而成的、有意义的式子。 包括:算数(数值)表达式、字符表达式、日期时间表达式、逻辑表达式、关系表达式。4.1 算术(数值)表达式(1)组成:算术(数值)运算符,数值型常量、变量、函数。(2)运算结果:数值型数据。(3)算术(数值)运算符:括号()、加(+)、减(-)、乘(*)、除(/)、乘方(或*)、取模(求余)(%)。(4)优先级:()或* *、/、% +、-。(5)%中,余数的正负号与除数一致。4.2 字符表达式(1)组成:字符运算符,字符型常量、变量、函数。(2)运算结果:字符型数据。(3)字符运算符 字符串完全连接运算+ 格式:+ 功能:将两个字符串完全连接起来,形成一个新的字符串。例输入:?“数据库”+“数据存储大仓库”输出:数据库数据存储大仓库 (其中表示空格) 字符串紧凑连接运算- 格式:- 功能:两个字符串连接时,若前一个字符串末尾有空格,将尾部的所有空格放置到新连接的字符串的末尾。例输入:?“数据库”-“数据存储大仓库”输出:数据库数据存储大仓库 (其中表示空格)4.3 日期时间型表达式(1)组成:日期(时间)运算符,日期(时间)型或数值型常量、变量、函数。(2)运算结果:日期型数据、数值型数据。(3)日期运算符:+、- 日期加(+)运算符 + 天数:结果为 + 秒数:结果为 日期减(-)运算符 - :结果为天数 - 天数:结果为 - :结果为秒数 - 秒数:结果为4.4 关系表达式(1)组成:关系运算符、其他表达式。(2)结果:逻辑值。成立为“真、.T.”,不成立为“假、.F.”。(3)关系运算符:小于“”、小于等于“=”、大于“”、大于等于“=”、不等于“、#、!=”、等于“=”、字符全同比较“=”、字符串包含“”。(4)关系运算符两边的数据应相同。(5)可进行数值比较、字符比较、日期比较等。 数值型数据比较按照数值比较; 日期(时间)型比较按照年月日、时分秒的先后顺序比较; 字符型数据比较按照ASCII码值比较; 汉字按内码值比较; 字符串包含“”,判断前串是否是后串的字串。例:?“BC”“ABCD” .T. ? “XY”“ABCD” .F.字符全同比较“=”(精确比较)与等于“=”(非精确比较)区别 在非精确比较状态(SET EXACT OFF)下 =比较,只要后者的所有字符和前者的若干字符相同(即后者是前者的字串),结果就为真; =比较,前者与后者必须完全

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论