2020/1/231VFP基础•一VFP概述•二VFP的数据类型•三常量和变量•四函数•五运算和表达式•练习与思考2020/1/2322—1VFP概述VFP的发展——dBASEIIIFoxbase+Foxpro2.5VisualFoxpro6.0•VFP是可视化的DBMS,也是强大的面向对象的应用程序编程工具。•VFP的运行环境见P193页硬件环境:486/66MHz以上/16M以上/鼠标/高分辨率显示器/大容量硬盘软件环境:Windows95以上,或WindowsNT4.0以上2020/1/2332—1VFP概述VFP的安装——1)将装有VFP的光盘放入光驱;2)找到存放VFP应用程序的文件夹双击之;3)找到SETUP.EXE可执行程序文件双击即可按照提示,一步一步进行安装。有的VFP光盘可使系统直接启动安装VFP的程序。•启动:执行桌面上的VFP快捷方式或找到VFP6.EXE直接双击。•退出:窗口关闭方式或执行命令QUIT。2020/1/2342—1VFP概述VFP的界面——•由主窗口和命令窗口组成;主窗口有菜单栏、工具栏、状态栏等组成,并为显示交互命令的反馈信息。命令窗口用来键入FOXPRO的命令。示例:?12+80-69+34VFP中常用的文件类型——.DBF表文件.FPT备注文件.IDX索引文件.PRG程序文件2020/1/2352—1VFP概述VFP的主要技术指标——字段名1字段名2字段名3字段名长度=10个字符可存放字段数/每个记录为:=255个可存放记录数/每个1字节记录表=10亿个2020/1/2362—2VFP的数据类型VFP的数据类型——•字符型(C)使用时必须用定界符“”或‘’或[]•数值型(N)只能由数字、小数点和正负号组成。•逻辑型(L)只能由真(.T.或.Y.)、假(.F.或.N.)来表示。长度固定占1个字节。特别注意其书写两边一定加点。•日期型(D)默认格式为mm/dd/yy,即月/日/年,长度固定为8字节。2020/1/237RSDA.FPT2—2VFP的数据类型•备注型(M)A.这种类型数据只用在表的备注字段中,用来存放大块长度不固定的备注信息;B.备注字段的宽度固定为4个字节,用来存放指向数据存贮地址的指针,在备注字段位置上统一显示Memo;C.每个备注型数据最多可容纳64K个字符。MemoMemo简历----------------宽度为4字节最大可容纳64KRSDA.DBF2020/1/2382—2VFP的数据类型•屏幕型(S)用于存放整个屏幕的8025个字符的屏幕信息。•另外还有通用型(G)、字符二进制型(C)、整数型(N)、浮点型(N)、双精度型(N)、货币型(Y)、日时型(T)和备注二进制型(M)类型。•货币型是数值型的扩展,固定占8个字节例:$123456.789•日时型是日期型的扩展,其格式为MM/DD/YYTT:MM:SSAM|PM例:01/02/9800:00:00AM2020/1/2392—3常量和变量VFP的常量——•常量是在程序运行过程中其值不变化的数据,它具有字符型、数值型、逻辑型、日期型、日时型和货币型六种。1、字符型使用时必须用定界符“”或‘’或[]2、有关日期型、日时型常量的说明:正确格式为CTOD(“01/02/98”)CTOT(“01/02/9812:00:11AM”){^1998/01/02}或用-连接{^1998/01/0212:00:11a}计算机显示为01/02/98和01/02/9812:00:11AM2020/1/23102—3常量和变量例:“abc”{abc}[a’bc’]123.45“123.45”.t.CTOD(01/20/97){^01/03/8903:00:00pm}$123.45{^1990-12-10}F10/01/503、对于日时型的缺省补齐:{^1989-01-27am}自动补齐为{^1989-01-2712:00:00am}ctot(“11:28:38am”)自动补齐为{^1899-12-3011:28:38am}用?来体会:2020/1/23112—3常量和变量VFP的变量——•变量是在程序运行过程中其值可能会发生变化的数据,或说可以在一定范围内取值的数据,它分为字段变量和内存变量两类。•字段变量即每一个记录的某个属性——字段名,它的值随着不同的记录而变化。字段变量名=10个字符,必须以汉字或字母开头且仅由英文字母、汉字、数字和下划线组成。例:表RSDA.DBF中的字段姓名、出生日期等。2020/1/23122—3常量和变量•内存变量是一些临时变量,它在内存中存贮数据,以便在需用时引用它的内容。当退出VFP或断电时数据将自动消失。内存变量可以有C、N、L、D、T、Y六种类型。它的具体类型与此时内存变量中的值的类型一致。内存变量长度=254个字符,必须以英文字母或汉字开头且仅由英文字母、汉字、数字和下划线组成。例:A、AB1、工资_总额、应发工资、C_12等。2020/1/23132—3常量和变量•内存变量的赋值赋值=例:X=‘1’Y=4X=Y+1成批赋值STORE常量TO内存变量表例:STORE0TOX1,X2,Y1,Y2**给若干内存变量赋以相同的值如:A=1STORE2TOA,BB=2STOREA+2TOA,BA=BSTORE1,2TOA,B[]A=B=2[]?A,B2020/1/23142—3常量和变量•内存变量与字段变量的区别1.内存变量独立存在,字段变量隶属于数据库,不能独立存在;2.内存变量的类型和长度可随所赋值的不同而变化,字段变量的类型和长度在建库时已定义好,除非修改库结构,否则不能改变;3.内存变量为单值变量,字段变量为多值变量;4.当内存变量与字段变量同名时,默认为字段变量。若指内存变量需加“M-”符,以示区别。工号姓名工资0100李青520.000215张林480.50B=3B=1+Bm-姓名=‘123’STOR‘’TOB2020/1/23152—3常量和变量•内存变量的显示(设B=4)在下一行显示例:?B+2,B*5??在当前行显示例:??B/2**用“新建”“程序”建立程序DY.PRGA=曾经有一次?A,学习的机会,??我没有好好去珍惜。?如果非要给学习一个期限的话,?答案应该是——?一万年!1.程序中符号必须是英文状态;2.程序名是在编辑后存盘时输入的;3.新建和修改程序用MODICOMMDY4.运行程序用DODY2020/1/23162—3常量和变量LISTMEMO或DISPMEMO翻屏或分屏显示所有内存中变量(包括自定义内存变量和系统内存变量)的名字、层次位置、数据类型和具体值。数值处理函数——ABS(X)求绝对值?ABS(-12/6)INT(X)取整?INT(-0.99)ROUND(X,I)四舍五入?ROUN(3.1415,1)MAX(X,Y)取大?MAX(-2,-3)MIN(X,Y)取小?MIN(-2,-3)2020/1/23172—4函数VFP的函数——•函数计算实际上是对于指定的函数名和自变量(参数表)执行事先编好的程序。每个函数必然有一个具有确定数据类型的返回值(函数值);函数值可作为一个数据再和其他数据进行运算;送给函数的自变量的数据类型必须与该函数要求自变量的数据类型一致;否则将出现语法错误。大多数函数都要使用一个或多个参数,但有若干个函数是无参数的(宏替换函数)。函数名只写前四个字符即可。2020/1/23182—4函数数值处理函数——SQRT(X)平方根?SQRT(36.00)MOD(X,Y)取余数,当X与Y异号时函数的返回值为余数+Y。?MOD(12,5)?MOD(-12,5)?MOD(12,-5)?MOD(-12,-5)字符处理函数——&字符型内存变量宏替换将存贮在字符型内存变量中的字符串替换出现。即把该变量所代表的字符串去掉字符串定界符后重新放到该函数所在位置上.2020/1/23192—4函数当宏替换之后还有内容时,用一个圆点表示内存变量名到此为止。(如AB=‘*’?8&AB.14)宏替换函数作用:可把数字字符组成的字符串转变为数值;C1=“34.98”?INT(&C1)+ROUND(&C1,1)用以替换命令中需要重复书写较长的部分。A=“LISTFOR职称=”&A“高工”&A“工程师”2020/1/23202—4函数UPPER(S)变大写?UPPE(‘AB3cd’)LOWER(S)变小写?LOWE(‘AB3cd’)LEN(S)求字符串长度?LEN(‘AB新3cd’)AT(S1,S2)寻找子串?AT(‘A’,‘RSDA.DBF’)SUBSTR(S,I,N)取子串?SUBS(‘ASDFGHJK’,2,2)LEFT(S,N)取左子串RIGHT(S,N)取右子串?LEFT(’COMP’,3)?RIGH(’COMP’,3)2020/1/23212—4函数SPACE(N)空格生成REPLICATE(S,N)重复字符生成STUFF(S1,N1,N2,S2)字符串替换?STUFF(“BASICCFOX”,6,1,PASCAL”)11TRIM(S)或RTRIM(S)消除串尾空格日期和时间处理函数——DATE()求系统日期DATETIME()求系统日时YEAR(X)求年份2020/1/23222—4函数MONTH(X)和CMONTH(X)求月份DAY(X)求几号DOW(X)和CDOW(X)求星期几数据类型转换函数——ASC(S)由字符求ASCII码CHR(N)由ASCII码求字符STR(R,L,D)数值转换字串?STR(179.44,6,1)?STR(179.44,6)?STR(179.44,2)2020/1/23232—4函数VAL(S)字符串转换成数值?VAL(“13.5546”)?VAL(“A535”)?VAL(“535A”)?VAL(D488)日期转换函数·字串转换日期——CTOD(S)·日期转换字串——DTOC(D)·日期转换字串——DTOS(D)?CTOD(‘01/11/98’)?CTOS(‘01/11/98’)2020/1/23242—4函数日时转换函数·字串转换日时——CTOT(C)·日时转换字串——TTOC(T)·日期转换日时——DTOT(D)·日时转换日期——TTOD(D)?CTOT(‘01/01/9900:08:51AM’)货币转换函数·货币转换数值——MTON(Y)·数值转换货币——NTOM(N)IIF(LE,E1,E2)逻辑转换?IIF(123.99INT(123.99),4,6)2020/1/23252—4函数检测类函数——·判别数据类型函数——TYPE(‘X’)·判别文件起始函数——BOF()·判别文件结束函数——EOF()·判别当前记录号函数——RECNO()·统计记录个数函数——RECCOUNT()·判别检索成功函数——FOUND()工号姓名工资0100李青520.000215张林480.50记录号1之前为文件头;最后记录号+1为文件尾;指针指向记录为当前记录。2020/1/23262—5运算和表达式运算和表达式——1.运算(1)算术运算+、-、*、/、%取余、**(或^)乘幂(2)连接运算①直接连接(+)②移尾空连接(-)(3)日期运算①日期相减运算,得到两个日期之间的天数。②日期加(减)天数运算,得到日期上加(减)天数形成新日期。2020/1/23272—5运算和表达式(4)关系运算=较短字符串与较长字符串前头的字符串相匹配,返回值即为真。$判断两个字符串之间是否有包含关系。ASCII码由小到大排列顺序:空格0……9a……zA……Z汉字(5)逻辑运算非NOT(或!)、与AND、或OR见P184页逻辑关系真值表。2020/1/23282—5运算和表达式1.表达式同类型的各种数据,用运算符按一定的规则连接起来的整体为表达式。(1)表达式中运算符的优先级见旧书