资源描述
单击此处编辑母版标题样式,第三章 Visual FoxPro 使用基础,3.1 Visual FoxPro 6.0系统基本操作,3.2 Visual FoxPro 6.0系统的操作方式主要有:,(1)命令操作方式,(2)菜单操作方式,(3)程序操作方式,3.3 Visual FoxPro 6.0的命令语法规则,1命令格式,命令动词 范围 FIELDS FOR WHILE 其他,说明:,:表示命令中必须选择该项, :可选项,可根据实际需要选用或省略该项内容。,| :任选项,根据实际需要任选且必选其中一项内容,(1)任何命令必须以命令动词开始;命令动词可用前4个字符的缩略形式,(2)命令动词与子句之间、各子句之间都以空格分隔;,(3)一个命令行最多包含8192个字符(包括所有的空格)。不区分命令字符的大小写,一行书写不完,行尾用分号“;”做续行标记。,(4)除命令动词外,命令中其他部分的排列顺序一般不影响命令功能。,(,1,)范围子句,范围子句有4种具体的选择范围:,RECORD :范围是记录号为n的一条记录;,NEXT :范围是从当前记录开始的连续n条记录;,REST:范围是从当前记录开始到表尾的所有记录;,ALL:范围是表中全体记录。,(,2,)条件子句,FOR :规定命令操作的记录对象。有该项时表示命令操作仅对在指定范围内满足条件记录有效。,从范围的第一条记录开始找满足条件的所有记录,直到范围的最后一条记录。,例如:LIST FIELDS 姓名,年龄,性别 FOR 年龄30,WHILE :规定命令操作的记录对象。有该项时表示命令操作仅对在指定范围内开始就满足条件的连续若干条记录有效。注意: while 的默认范围为rest,从范围的第一条记录开始找满足条件的记录,一旦碰到不满足条件的记录就停止。记录指针指在不满足条件的该记录上。,(,3,)字段名表子句,FIELDS:规定命令操作的字段对象。有该项时表示命令操作仅对字段表中列出的字段有效。各字段间用,分隔,该项 省略时,默认为所有字段。,例如:LIST FIELDS 姓名,年龄,性别,3.5 VFP 文件类型,3.6 Visual FoxPro中的数据类型,3.6.1数据类型,包括两个方面:数据内容与数据形式。,数据内容就是数据的值;,数据形式就是数据的存储形式和操作使用方式,也称为数据类型。,VFP6数据类型有两大类,一类只能用于字段,一类适用于字段、内存变量、数组。,既适用于字段又适用于内存变量、数组,1字符型(C),定义:是指由所有字母、汉字、数字及键盘上所有字符组成的数据。,特点:不能进行算术运算,是一种文本信息。,宽度:1254个字节,例如:ASD&DF、333455、 中国、98/07/05,2 数值型(N),定义:表示数量的一种类型。,由 09、 + 、 - 及小数点和字母E组成组成。,特点:可以进行算术运算。,宽度:120,注意: + 、 - 及小数点都要算位数。正数时, + 可省略。,例如:123.45、9.567,3E5,,3 货币型(Y),定义:一种专门存放货币量的特殊数值型,其小数位固定为4位,特点:专门存放货币量,宽度:固定为8位,例如:$678,90 、$43.67,注意:由于数值型与货币型都是数字,因此在数字前加上 $ 表示货币,但屏幕显示时为 ¥ 。,4 日期型(D),定义:用于存放日期的一种类型。,格式:月/日/年(默认形式),年:占4位。1009999,月:占2位。112,日:占2位。131,宽度:固定为8位,5 日期时间型( T),日期时间型(T),定义:用于存放日期时间的一种类型。,格式:月/日/年 小时:分:秒 (默认形式),小时:2位。023 分:2位。059 秒:2位。059,取值范围为:01/01/000112/31/9999,用12小时制表示时,可写作 00:00:00 am/pm,宽度:固定为8位,例如:09/08/2001 10:45:34 am,6 逻辑型(L),定义:用于表示 真假 、 是否 、等只有两个状态值的一种数据类型。,特点:,用 .t .、 .T . 表示真,对应用 .F.、.f .表示假。,宽度:固定为1位,以上六种类型既适用于字段又适用于内存变量、数组,7备注型(M),定义:用于存放长字符型。是指大于254个字节的字符型。,宽度:固定为4位。实际内容存放于FPT文件中。,8通用型(G),定义:用于存放OLE对象的数据类型。如:电子表格、文档、图片、音乐等。,宽度:固定为4位。实际内容存放于FPT文件中。,9,(1) 双精度型(B),(2) 浮点型(F),(3)整型(I),(4)二进制字符型,(5)二进制备注型,以上各种数据类型只能在表的字段中设置。,3.6.2 Visual FoxPro的常量,1数值型常量,由数字、小数点和正负号、E组成,表示整数或实数值。,如;100,-21,15.31,-21092.5041等分别是数值型常量中的整数和实数。,2 货币型常量,在数值前加一个$符号,3字符型常量,用限界符(单、双引号,方括号)扩起来的一个符号串。,例如:asdf 、 98di 、09/08/2002 、,X 、98&!*jkk、 汉字 说明:,1)限界符(单引号、双引号、方括号)必须是英文半角状态下输入。,2)限界符中没有任何字符时,表示空字符串。,3)当限界符本身是字符常量的一部分内容时,要用另一种限界符扩起。,4,逻辑型常量,逻辑型常量就是表示逻辑判断结果“真”或“假”的逻辑值。,逻辑常量只有真和假两种值,,用 .t .、 .T . 表示真,对应用 .F.、.f .表示假。,注意:字母两边的点不能少。,5.日期型常量,用大括号扩起来的日期格式的数据。,例如:09/23/2001,用 、/、 _ 表示空日期。,6.日期时间型常量,用大括号扩起来的日期时间格式的数据。,例如:09/23/2001 11:13:59 ,用:、表示空日期时间。,严格的日期格式是:,yyyy-mm-dd,hh:mm:ssa|p,命令设置的命令格式:,SET STRICTDATE TO 0 | 1 | 2,命令功能:,0:关闭严格的日期格式检测;,1:设置严格的日期格式检测(默认值),,2:设置与1相同,但不允许程序代码中出现CTOD()和CTOT()函数。,3.6.3 变量,确定一个变量,需要确定其三个要素:变量名、数据类型和变量值。,1命名约定,1)变量名由 汉字、字母(AZ)、数字、下划线组成。不区分大小写。,2)除自由表中字段名、索引的TAG标识名最多只能10个字符外,其他的命名可使用1128个字符;某些特殊的可为,1999 字节。,3)不能以数字开头,不允许含有空格。,4),下划线开始的变量作为系统变量,用户不要采用。,2 变量分类,(1) 按存储方式,内存变量(变量):用户在操作过程中随机定义的一种变量。当退出系统后,就被清除。,字段变量字段变量在表中被定义后使用,只要表存在,变量就存在。,联系:,在系统处理变量过程中,首先认为该变量为字段变量,如果不存在该变量,则就认为内存变量处理。,当内存变量与字段变量同名时,要指定内存变量必须用M.或M,变量名的方式。,(2) 按使用范围(内存变量),全局变量,局部变量,本地变量,3字段变量,表由若干记录构成,每个记录都包含若干个数量相同的字段,同一字段在不同记录中分别对应不同的字段值,因此,字段也是变量。与其他变量不同的是,字段变量是定义在表中的变量,随表的存取而存取,因而是永久性变量。字段名就是变量名;变量的数据类型为Visual FoxPro中任意数据类型,字段值就是变量值。,4内存变量的定义赋值,内存变量是在内存中定义的、一种单个数据元素的临时性变量。,1)STORE TO ,功能:计算的值并赋值给各个内存变量,各内存变量之间用逗号分隔,2) = ,功能:计算的值并赋值给指定内存变量。,3)INPUT,格式:INPUT 提示信息 TO 变量名,从键盘接受一个数据存入指定的变量中。,4)ACCEPT,格式:ACCEPT 提示信息 TO 变量名,从键盘接受字符数据存入指定的变量中。,5)WAIT,格式:WAIT 提示信息 TO 变量名,从键盘接受一个字符数据存入指定的变量中。,5.变量的显示输出(字段变量和内存变量),1)? ,2) ? ,命令功能:计算表达式表中各表达式的值,并在屏幕上指定位置显示输出各式的值。,?:先回车换行,再计算并输出表达式的值;,?:在屏幕上当前位置,计算并输出表达式的值;,:多个逗号两两分隔的表达式,各表达式的值输出时,以空格分隔;,3.6.4 数组,(1)数组的定义,DIMENSION 数组名N1,N2,DIME A5,B10,X2,3,Y4,5,1)数组必须先定义后使用.,2) 数组命名规则要符合内存变量的一般规则。,3)一个数组作为一个变量,但数组中每个数组元素都作为一个独立的变量使用。,4)不允许定义一个数组与内存变量同名。,5)数组定义后,在未赋值前,所有的数组元素的值系统都默认为逻辑值假。,6)数组可以是一维的或二维,当数组是二维时,以行为优先。,B1,1,B1,2,B1,3,B1,4,B1,5,B2,1,B2,2,B2,3,B2,4,B2,5,B3,1,B3,2,B3,3,B3,4,B3,5,B4,1,B4,2,B4,3,B4,4,B4,5,A1,A2,A3,A4,A5,B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,B13,B14,B15,B16,B17,B18,B19,B20,(2)数组的赋值与引用,1)整个数组赋相同的值,A=12,B=DF,2)各个数组元素赋不同的值,A1=2,A2=1998/09/12,A3=.t.,B1,2=abc,B6=12,注意:其他未赋值的数组元素的值为.f.,(3)数组的显示,显示数组类同于显示一般变量,? 数组元素1,元素2,,?A ?A1,?B ?B1 ?B1,1,?A3,B5,B2,3,3.7.1 函数,函数说明:,VFP函数分为,系统函数,和,自定义函数,两类。,系统函数由系统提供,其函数名是Visual FoxPro保留字;自定义函数是用户自已定义的函数,函数名用户指定。,VFP的函数由,函数名与自变量,两部分组成。,自变量必须用圆括号对括起来,如有多个自变量,各自变量以逗号分隔。,3.7 Visual FoxPro的函数、运算符、表达式,数值函数,1取绝对值函数ABS(n ),功能:计算n的值,并返回该值的绝对值。,2取整函数,INT(n),功能:计算n的值,弃尾后返回该值的整数部分。,CEILING(n),功能:,返回大于或等于表达式的最小整数,FLOOR(n),功能:,返回小于或等于表达式的最大整数 INT(5.8)=5 INT(-7.8)=-7,CEILING(6.4)=7 CEILING(-9.9)=-9 FLOOR(-9.9)=-10,3四舍五入函数ROUND(n1,n2),功能:返回n1四舍五入的值, n2表示保留的小数位数。,4,平方根函数SQRT(n),功能:对n开平方根,默认取正值,并保留两位小数,5最大值函数MAX( )和最小值函数MIN( ),MAX(,.),MIN(,.),功能:返回表达式中的最大值或最小值,表达式可以是数值或字符。,6,随机取值函数RAND(),返回01之间的一个随机数。,7.求余数函数,MOD(X,Y),功能:返回X除以Y后的余数。,1)X与Y的模的正负号由Y 值的正负号决定。,2)X与Y同号时,以 |X|Y|,直到不能再减后,加上Y的数值符号。,X与Y异号时,以 X+Y直到出现第一个与Y值相同符号的值为止。,3)X与Y有小数位时,二者不能象除法运算那样,削去小数位。,例如:mod(22,3) 模:1,mod(22,3) 模:2,mod(22,3) 模:2,mod(22,3) 模:1,mod(2207,3) 模:1.07,mod(2207,3) 模:1.93,mod(22.07,3) 模:1.93,mod(22.07,3) 模:1.07,mod(2207,0.03) 模:0.02,mod(2207,0.03) 模:0.01,mod(22.07, 0.03) 模:0.01,mod(22.07,0.03) 模:0.02,字符函数,1子串位置函数,AT(c1,c2),功能:返回串c1在串c2中的起始位置。函数值为整数。如果串c2不包含串c1,函数返回值为零。比较时不区分大小写。,2取子串函数,取左子串函数,LEFT(c,n),功能:返回从c串中第一个字符开始,截取n个字符的子串。,取右子串函数,RIGHT(c,n),功能:返回从c串中右边第一个字符开始,截取n个字符的子串。,截取子串函数,SUBSTR(c,n1,n2),功能:返回从串c中第n1个字符开始,截取n2个字符的子串。,N2省略时,表示从n1个字符开始直到最后。,3字符串长度函数,LEN(c),功能:返回c串的字符数(长度)。函数值为N型。,4 删除空格函数,删除字符串前导空格函数LTRIM(c),功能:删除c串的前导空格字符。,删除字符串尾部空格函数RTRIM(c),功能:删除c串尾部空格字符。,删除字符串前后空格函数ALLTRIM(c),功能:删除c串两边空格字符。,5,空格函数,SPACE (n),功能:返回一个包含n个空格的字符串。,6宏替换函数 &c,功能:替换出字符型变量c中字符。,7.子串替换函数 STUFF(,) 功能:用字符串c2的内容替换c1中由起始位置n1和长度n2指明的一个子串。 例如:STOREGOODBYE!TOS1 STOREMORNINGTOS2 ?STUFF(S1,6,3,S2)=GOODMORNING! ?STUFF(S1,1,4,S2)=MORNINGBYE!,8.判断是否为空值函数EMPTY(表达式),功能:判断表达式的值是否为空,表达式可是N,C,Y,T, D, L, M, G等各种数据类型,如果表达式的值为如下情况,则EMPTY( )返回.T.,empty(.t.) empty(.null.) 值 为.f.,C型,空串、空格、tab符、回车、换行及其组合,N型 Y 型,0,D型 T型,CTOD( ),CTOT( ), ,/.:,L型,.F.,M型 G型,没有内容,日期时间函数,1系统日期函数DATE( ),功能:返回当前系统日期,此日期由Windows系统设置。函数值为D型。,2系统时间函数TIME( ),功能:返回当前系统时间,时间显示格式为hh:mm:ss。函数值为C型。,3.,系统日期时间函数DATETIME(),功能,:返回当前系统日期时间,函数值为日期时间型。,4月份函数MONTH(D),功能:MONTH( )函数返回d式中月份数。函数值为N型。,5年份函数YEAR(D),功能:函数返回d式中年份值。函数值为N型。,6日期函数DAY(D),功能:返回d式中的天数。函数值为N型,转换函数,1ASCII码函数ASC(C),功能:返回c串首字符的ASCII码值。函数值为N型。,2ASCII字符函数CHR(N),功能:,返回以n值为ASCII码的ASCII字符。函数值为C型。,3字符日期型转换函数CTOD(C),功能:把“/”格式的c串转换成对应日期值。函数值为D型。,4.字符日期时间型转换函数,CTOT(),功能:把日期时间格式的c串转换成对应日期时间型数据值。函数值为T型。,5日期字符型转换函数,DTOC(|,1),功能:DTOC()将日期型数据转化成字符串。,6.TTOC(,1),功能:将日期时间数据的日期部分转化成字符串。,说明:对DTOC()来说,如果选项是1,则字符串的格式总是YMD,8个字符。对TTOC()来说,如果使用选项1,则字符串格式总是YMDHMS,14个字符,例如:,STOREDATETIME()TOT,DTOC(T)=11/11/2005,DTOC(T,1)=20051111,TTOC(T)=11/11/200518:54:34PM,TTOC(T,1)=234,5字符数值型转换函数VAL(C),功能:将c串中数字字符转换成对应数值,转换结果取两位小数。函数值为N型。,指定字符串最多可以有16个数字,超过16位则四舍五入。,从左至右返回字符串中的数字,直到遇到非数字字符为止,忽略前导空格。,例,?val(11a7.345),? val(11e7.345),6数值字符型转换函数,STR(n1, n2, n3),功能:将n1的数值转换成字符串形式,字符串的长度由n2决定,字符串中包含的小数位数由n3决定。函数值为C型。,n2省略时默认为10。,n3省略时默认为0,字符串的长度不足时,在字符串左边加空格,字符串中包含的小数位数不足时,在字符串右边加0,X= 123456.7809,Str( x) _123456.79,Str( x,8,1) 123456.8,Str( x,8,3) 123456.8,Str( x,10,1) _ _123456.8,Str( x,12,5) 123456.78090,Str( x,13,5) _123456.78090,Str( x,6,1) 123457,Str( x,8,0) _ _123457,Str( x,5,1) *,测试函数,1条件测试函数,IIF(L,),功能:逻辑表达式LExp值为真(.T.),返回表达式Exp1的值,否则返回表达式Exp2的值。Exp1和Exp2可以是任意数据类型的表达式。,2表结束标志测试函数EOF( ),功能:测试记录指针是否移到表结束处。如果记录指针指向表中尾记录之后,函数返回真(.T.),否则为假(.F.)。,3当前记录号函数RECNO(),功能:返回指定工作区中表的当前记录的记录号。对于空表返回值为1。,4表起始标识测试函数BOF ( ),功能:测试记录指针是否移到表起始处。如果记录指针指向表中首记录前面,函数返回真(.T.),否则为假(.F.)。,5记录数函数RECCOUNT( ),功能:返回指定工作区中表的记录个数。如果工作区中没有打开表则返回0。,6记录大小测试函数RECSIZE( ),功能:返回指定工作区中表的记录总长度。如果工作区中没有打开表则返回0。,7.值域测试函数,BETWEEN(,),例如:STORE34TOX;STORE100TOY BETWEEN(150,Y,Y+100)=.T.,BETWEEN(90,Y,X)=.F.,BETWEEN(a,A,B)=.F. &默认拼音的比较结果,(由系统的设置决定结果),8.空值测试函数 ISNULL(),例如:STORE.NULL.TOX ISNULL(X)=.T.,9 .数据类型测试函数,格式:VARTYPE(,) 功能:测试表达式的类型,返回一个大写字母,函数值为字符型,结果分别为 N Y C D T L M O G 及U ,U 表示不能确定或表达式错误,测试数据类型函数Type( 表达式 ),测试按键返回值函数INKEY( N ),返回一次按键所对应的数值。,N :等待的秒数;0:无限等待。,CMONTH( D|T),返回指定日期或日期时间表达式中月份的英文名称。,DOW(D|T),以数值形式返回指定日期或日期时间表达式是一个星期中的第几天。星期天为1。,CDOW(D|T),以英文名称形式返回指定日期或日期时间表达式是一个星期中的第几天。星期天为1,LIKE(C1,C2),指定C1表达式是否与C2表达式匹配。完全一致时才为真。,C1中可以有通配符?(代表一个字符)*(代表任意多个字符)比较时字母区分大小写。,Messagebox( C1 ,N ,C2 ),创建一个用户自定义对话框,根据用户操作返回一个值。,C1:指定在对话框中显示的文本。,C2:指定显示在对话框标题栏上的文本。缺省值为“ microsoft visual foxpro”,N: 指定对话框的类型(按钮,图标,缺省值)即N值由三个部分组成:按钮类型数据,图标类型数据,缺省值类型数据。,按钮类型及数据:,0 只有 确定 按钮。,1 有 确定 取消 两个按钮。,2 有 放弃重试忽略 三个按钮。,3 有 是 否 取消三个按钮。,4 有 是 否 两个按钮。,5 有 重试 取消两个按钮。,图标类型及数据:,16 停车 标志,32 问号 标志,48 感叹号 标志,64 信息(i) 标志,缺省值类型及数据:,0 第一个按钮,256 第二个按钮,512 第三个按钮,N值为此三项数据之和。,返回值:,1 选中 确定 按钮,2 选中 取消 按钮,3 选中 放弃 按钮,4 选中 重试 按钮,5 选中 忽略 按钮,6 选中 是 按钮,7 选中 否 按钮,3.7.2 Visual FoxPro的运算符、表达式,1.算术表达式,运算对象和运算结果均为数值型数据。,对数值型的常量、变量、字段、函数、数组进行操作的一种操作符,包括:,+、* 、 / 、 乘方(* )、 求模(%)没有开方,求模(X%Y):求X除以Y后所得的余数。同函数MOD(),2. 字符表达式,对字符型的常量、变量、字段、函数、数组进行操作的操作符。包括:,1 字符串连接(+):将两个字符串连接起来,得到一个新的字符串。,2 字符串连接():将两个字符串连接起来,并把前一个字符串的尾部的空格移到新字符串尾部。,3 字符串包含比较($):判断前一个字符串是否包含在后一个字符串中。是,则返回.t. ,不是则返回.f.,例如:x=ab cd ef ,y=12 34 56 ,x1=ab,x2=abcd,?x+y &返回值为 ab cd ef 12 34 56 ,?xy &返回值为 ab cd ef12 34 56 ,?x1 $ x & 返回值为 . t .,?x2 $ x & 返回值为 .f.,注意:(1)+、 、$、操作的对象是字符型的常量、变量、字段、函数、数组。,(2)+、 、$、操作的优先级是先+后 再$,3.日期表达式,对日期型的常量、变量、字段、函数、数组进行操作的操作符。包括:+、,1 +:,格式:olddate+N=newdate N表示天数。,oldtime+N=newtime N表示秒数,2 :,Date1Date2=N N表示两个日期相差的天数。,Time1Time2=N N表示两个时间相差的秒数。,Date1N= Date2,Time1N= Time2,注意:不能把两个日期相加。,4 关系表达式,连接两个同类数据对象进行关系比较的运算式称为关系表达式。,关系表达式的值为逻辑值 “真”或“假”。, = =,#、 !=、 ,=、=,说明:,(1)关系运算符的优先级相同,比较同类数据。,(3)比较规则,N型:直接比较大小。,D,T型:按年、月、日、小时、分、秒、的先后顺序依次比较数值大小。,C型:单个字符比较,1)拼音序列:,字母:空格 数字字符aAbBcC,汉字:按拼音,2)机器序列:,字母:空格 数字字符 AaBbCc,汉字:按机内码,3)笔画序列,字母:空格 数字字符 aAbBc算术和日期运算字符串运算关系运算逻辑运算,3.9 项目文件,项目文件是组织文件的文件。,项目管理器通过项目文件(.PJX和.PJT)对项目进行管理。包括数据库、表、程序、表单、表格、报表、菜单等,及文件之间的联系。,.建立新的项目文件,2.项目管理器的窗口操作,()移动位置或改变大小,()设置窗口到工具栏,()折叠项目管理器窗口,()拖下选项页,()钉住浮动选项页,()项目内容的折叠与展开,3.9 项目文件,新建,建立新文件或新对象,新的对象类型为当前所选择的类型。,添加,把已经单独建立的各类文件添加到项目文件中。,修改,将选定的文件打开并允许修改,根据所选文件类型启动相应的设计器工具进行修改。,浏览,将选定的表或视图打开并浏览。,移去,从项目中移去或删除所选定的文件或对象。,3.9 项目文件,关闭打开,关闭一个打开的文件。如果所选定的文件没有打开,则显示为“打开”,便可以打开该文件。,预览,可以对报表、标签进行打印前的预览。,运行,运行所选定的表单、查询和程序。,3.9 项目文件,设置主文件,主文件的文件类型有:,查询,表单,程序,菜单,一个项目只能有,一个,主文件。,10.设置文件包含或排除属性,11.连编,通过连编构造成一个可执行的文件,即生成借助于VFP而执行的.APP文件,或者可以脱离VFP单独执行的.EXE文件(.EXE文件中已包含VFP加载程序)。,
展开阅读全文