计算机二级VFP考试讲义_第1页
计算机二级VFP考试讲义_第2页
计算机二级VFP考试讲义_第3页
计算机二级VFP考试讲义_第4页
计算机二级VFP考试讲义_第5页
已阅读5页,还剩97页未读, 继续免费阅读

下载本文档

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

文档简介

1、1第 1 章 数据与数据运算一、数据类型1.数值型(n):由数字、小数点和正负号组成。 (包括整数和实数) ,占 8 字节内存,精度 16 位。例如数值型常量:12、3.45、-6.78、5.878e12、1.6e-12 等。2.字符型(c):每个字符占一个字节,最长 255 个字符。3.逻辑型(l):只有真、假两个值(.t. 、.t.、y.、y 、.f.、.f.、.n.、.n.)占 1 字节。4.日期型(d):占 8 个字节,取值范围:0001 年 1 月 1 日9999 年 12 月 31 日。日期的表示格式很多,可用有关命令设置:a)set date to mdy/dmy/ymd 该命令

2、设置日期表示形式。b)set century to on/off 表示日期时是否指明“世纪” 。c)set strictdate to 0/1/2 是否采用严格日期格式对待输入日期值。此设置命令取“1/2”值时,日期需按照严格日期表示法yyyy-mm-dd的表示格式输入,否则会弹出“出错”对话框;取“2”值时ctod() 、ctot()函数也采用严格日期格式转换字符;若设为 0,则日期的输入可按其它形式,但可能被系统按不同日期解释。d)set mark to /; 该命令用于设置日期分隔符,若缺省设置值,则用默认“/”为分隔符。5.日期时间型(t):占 8 个字节,如常量2001-03-22,

3、11:30 p。日期的表示范围同上,时间从 00:00 :00am11:59:59pm,缺省日期为 1899 年 12 月 30 日,缺省时间为午夜零点。6.货币型(y):占 8 个字节,货币型常量以前置符号$打头,保留小数 4 位。7.对象型(o):windows 中的对象,如 vfp 主窗口对象为“_screen” 。(以上 7 种数据类型可用于内存变量和数组,前 6 种还可用于字段变量,但下列数据类型只能用于字段变量)8.双精度型(n):占 8 个字节9.浮点型(n):占 8 个字节10. 整数型(n):占 4 个字节11. 通用型(g):占 4 个字节,专门用来存储 ole 对象,如电

4、子表格、字处理文档或图片等由其它程序产生的对象。12. 备注型(m):占 4 个字节,用于存放较多的文本信息,会产生与表同名的备注文件“*fpt” 。13. 二进制字符型(c):使用方法与字符型同,只是直接以二进制形式存储。14. 二进制备注型(m):使用方法与备注型同,只是直接以二进制形式存储。二、常量与变量1.常量(部分数据类型的常量说明):a)字符型常量必须用单引号、双引号、或方括号括起来。如某种括符本身也是字符串内容,则用另一种括符括起该字串。b)日期型常量必须用一对花括号包括。对于空值的日期,可用、/、-表示。c)日期时间型常量的空值表示成-,:,货币常量用$开头。d)符号常量的定义

5、及取消:例:#define pi 3.1415926535 #undef pi2.变量:在程序执行过程中其值可变的数据项。实际上是用标识符命名的存放数据项的计算机内存单元。变量有变量名、变量值、变量类型、长度、变量作用域等属性。变量名可由字母、汉字、数字或下划线组成,但须以字母或汉字开头,长度不超过 10 个字符。vfp 的变量可分为字段变量和内存变量,表中的字段名就是字段变量。内存变量不必先声明,如与字段变量同名,由于字段变量优先级较高,需在访问时加前缀 m(或 m) ,内存变量的类型随所赋值的类型变化而变化。可作为内存变量的类型包括前述 7 种基本类型。a)简单内存变量的赋值:3.数组:要

6、先用 dimension 或 declare 声明,下标最小为 1,默认各元素值为。f 。 ;一个数组中各元素的数据类型可以不同;可用一维数组方式访问二维数组;仅在赋值号左边或作为输入对象时可直接用数组名给该数组的全部数组元素赋同一值。例如:dimension x(5),y(2,3)24.内存变量常用命令:a)赋值:内存变量=表达式 store 表达式 to 内存变量列表b)显示:(包括变量名、作用域、类型、取值)list memory like noconsoleto printerprompt / to file display memory like noconsoleto printe

7、rprompt / to file 说明:like 短语表示只显示与通配符相匹配的内存变量;子句 to printer/to file 表示将显示的内容同时送往打印机或文本文件中;list 命令连续流动显示,而 display 是分屏显示;子句 noconsole 表示不输出到显示器;子句 prompt 表示要求弹出打印设置框。 ? 显示输出各表达式值时自动换行 ?? 在同一行上显示各表达式值c)清除:clear memoryreleaserelease all extended like/except子句 extended 表示在程序中还可删除公共内存变量;短语 except 表示删除之外的

8、其余内存变量。d)保存和恢复:save to all like/exceptrestore from additive内存变量文件的扩展名为。mem;子句 additive 表示以追加方式添加内存变量,否则恢复前会先清空原有内存变量。save screen to restore screen from以上为保存和恢复当前屏幕内容的命令;无可选项屏幕内容存入缓冲区。5.记录字段与数组元素的数据交换:记录字段复制为数组元素:scatter fields memo to blankscatter fields like/except memo to blank选用 memo 短语可同时复制备注型字段

9、;blank 表示产生一空数组。数组元素复制成记录:gather from fields memo gather form fields like/except memo 1.3 表达式1. 数值运算符及表达式() *或 *,/ % +,2. 字符运算符及表达式+、3. 日期(或日期时间)运算符及表达式+、该表达式只有三种形式: 两日期(或日期时间)型数据相减,结果为相差的天数(或秒数) ; 日期(或日期时间)型数据加上一个整数,结果是一个新的日期(或日期时间) ; 日期(或日期时间)型数据减去一个整数,结果是一个新的日期(或日期时间) 。4. 关系运算符及表达式、=、=、= =、(或# 或!

10、=)、$ (优先级相同)3运算符两边的数据类型要相同,比较结果都为逻辑型: 数值型和货币型数据按值的大小比较; 日期和日期时间型数据比较时,越晚的越大; 逻辑型数据 tf; = = 只用于字串的精确比较; $ 包含于,也只能用于字符型数据; = 也可用于字串的非精确比较,但其结果与 set exact on/off 有关。5. 逻辑运算符及表达式not或!andor作业作业:实验内容:学习内存变量、数组变量的定义,赋值,显示,学习各种表达式和运算符。复习函数的使用。一、内存变量的赋值和使用1、等号赋值2、store 命令3?和?的使用方法(显示值)4list memo like (显示名称,类

11、型,值)练习:观察下列命令的作用和显示结果x1=8*4?x1x2=pqrxy=.t.xyz=1996/12/30list memory like x*store 计算机 to xy,x3save to f1 all like x?release x1,x2list memory like x?restore from f1list memory like x? 二、数组的定义和使用(参考教材)练习一dimension array1(2)display memory like array1store a to array1(1)store 2 to array1(2)display memory

12、 like array1array1=100display memory like a*练习二、dimension mm(2,3)display memory like m*4练习三、dimension sample(2,3)store goodbye to sample(1,2)store hello to sample(2,2)store 99 to sample(6)store .t. to sample(1)cleardisplay memory like sample三.运算符: 1 数值运算符:? (4-3) * (12/nvar2)? 3 * 2 ? 3 2 ? 2 * 7? 1

13、4 / 7 ? 15 % 4? iif(year(date( ) % 4 = 0, summer olympics this year; , no summer olympics this year)2、关系运算符: ? 23 54status=“close”? status = = “open”注意:=表示等于.=表精确等于.在 set exact off 状态下,用“=”比较两个字符串时,只要“=”右边的字符串与左边的字符串的左端部分相同,即认为是相等;在 set exact on 状态下,则要完全相同才是相同。例如:判断下列表达式的值 ab=abc ax=axax axax = ax a

14、x=ax 你好=你好 你好=你好 3、日期运算符: ?1999-01-02+3 ? 1999-01-02-1999-01-21 ? 1999-01-21-1999-01-02 ? 1999-01-02+1999-01-024、字符串运算符: ? “我是”+”某某”+”!” ? “我是”-”某某”-”!” ? “我是 “+”某某 “+”!” ? “我是 “-“某某 “+”!”$ :包含运算符,如果该运算符左边的字符串包含在右边的字符串里,那么表达式的值为真,否则为假.例如: 判断下列表达式的值 李$李小强5 李小强$李五、判断下列表达式的正确与错误:1 2002-05-25 2 2002-05-

15、253 2002/05/25 4 2003-05-01 10:10:10 am-10 5 2003-05-01-date()6 2003-05-01+date() 7 2003-05-01+1000_练习题一、选择题1.在 visual foxpro 中,有下面几个内存变量赋值语句:x=2001-07-28 10:15:20pmy=.t.m=$123.45n=123.45z=123.45执行上述赋值语句之后,内存变量 x、y、m、n 和 z 的数据类型分别是( )a)d、l、y、n、c b)d、l、n、n、cc)t、l、m、n、c d)t、l、y、n、c2.以下日期值正确的是( )a)2002

16、-05-25 b)2002-05-25c)2002-05-25 d)2002-05253.在下面的 visual foxpro 表达式中,不正确的是( )a)2003-05-01 10:10:10 am-10b)2003-05-01-date()c)2003-05-01+date()d)2003-05-01+10004.在下列函数中,函数值为数值的是( )a)bof()b)ctod(01/01/03)c)at(”人民”,”中华人民共和国”)d)substr(dtoc(date(),7)二、填空题1.命令 ?round(337.2007,3)的执行结果是_。2.命令 ?len(thisismyb

17、ook)的结果是_。3.time()返回值的数据类型是_。6c4.顺序执行下列操作后,屏幕最后显示的结果是_和_。y=date()h=dtoc(y)? type(y),type(h)d c三、上机执行下述命令,熟悉函数的功能。(请同学们在运行之前先思考。)1.b=dtoc(date(),1)?今天是:+left(b,4)+年+iif(subs(b,5,1)=0,;subs(b,6,2),subs(b,5,2)+月+right(b,2)+日2.x=str(12.4,4,1)y=right(x,3)z=&y+&x? z,&z3.x=奔腾 586y=个人计算机? len(x)

18、,right(x,3)+y? &x.&y,x+y4.?at(人民,中华人民共和国)? val(substr(668899,5,2)+1? substr(668899,3)-15.dd=date()? str(year(dd),4)+年 +str(month(dd),2)+月 +str(day(dd),2)+日6.n=886m=345k=m+n?1+&k7.?val(substr(奔腾 586,5,1)*len(visual foxpro)8.set exact offx=a ?iif(a=x,x-bcd,x+bcd)9.store 学生 to xuse &x &

19、amp;相当于 use 学生 (注意:首先你应该创建学生.dbf)xm=姓名? &xm +你好!skip &转到下条记录? xm,& xm补充:7?和?接表达式:不能在?中赋值。例如:?k=100 ,如果 k 没有初值,那就是错误的 k=200 ?k=100 屏幕显示:.f. 如果 k=sf ,答案是什么呢? 另外,赋值只有一种情况: 变量=表达式 注意:变量前面不能有其它任何东西!例如: a=b=3 . 其中,a=是赋值,而 b=3 则是判断1.4 常用函数 函数 对于函数需要大家了解的有: 1、函数名 2、除了&宏函数外,所有函数必须加 () 3、函数的作用

20、 4、函数的参数 5、函数的返回值及其类型数值运算函数: int()、abs()、max()、min()、sqrt()、round()、mod()字符处理函数: len()、at()、space()、substr()、left()、right() trim=rtrim(trimalltrimltrimrtrim)、stuff()、&:宏函数转换函数: lower()、upper()、ctod()、dtoc()、str()、val() asc()、chr()日期时间函数: date()、time()、year()、month()、day()测试函数: recno()、bof()、eof(

21、)、found()、file()、dbf()、reccount()、select()、type()、iif()、其它:row()、col()、inkey()、readkey()1数值处理函数(1)求对数函数 log()【格式】log()【功能】返回的自然对数值。【说明】值必须大于零。【例如】输入语句:?log(16.5),log(10),log(1)显示结果: 2.80 2.30 0.00(2)求四舍五入函数 round()【格式】round(,)【功能】返回按所指定的保留小数位数进行四舍五入的值。若的值为负,则返回小数点左边为绝对值个数零的整数值。【例如】:输入语句:?round(68.34

22、5,2),round(68.745,0),round(68.345,-1) ,round(68.345,-2)显示结果: 68.35 69 70 100注意:在执行函数 round(68.345,-1)时,小数点左边的数是两位 68,由于参数 2 为-1,则返回值是整数且应带一个 0,故经四舍五入后,8 进位到 6 则首位变为 7,第二位按规定是 0。所以该函数的返回值是 70。(3)求最大值函数 max()8【格式】max(,)【功能】返回表达式串,中的最大值。【说明】这些表达式必须具有相同数据类型(可以同是字符、数值或日期) 。【例如】输入语句:?max(-23,3.56),max(boo

23、k,pen,read)显示结果: 23 read &比较字符的 ascii 大小(4)求最小值函数 min()【格式】min(,)【功能】返回表达式串,中的最小值。【说明】这些表达式必须具有相同数据类型(可以同是字符、数值或日期) 。【例如】输入语句:?min(-23,3.56,12.8,23.1),min(book,pen,read)显示结果: -23 book (5)求余函数 mod()【格式】mod(,)【功能】返回除以的余数。【说明】mod(a,b):当 a,b 同号时,结果为 b 的符号 当 a,b 异号时,值为 a/b 的余数(符号为 a 的符号)+b【例如】输入语句:?m

24、od(25,4),mod(25,-4),mod(-25,4),mod(-25,-4)显示结果: 1 -3 3 -1(6)求绝对值函数 abs()【格式】 abs()【功能】 返回的绝对值,参数的类型为 n 型,得到的函数值的类型为 n 型。【例如】输入语句:?abs(-26.2),abs(26.6),abs(-50) 显示结果: 26.2 26.6 50注意:语句 ? |是非格式输出语句,具有计算功能。语句在命令窗口输入。(7)取整函数 int()【格式】 int()【功能】 返回的整数部分。【例如】 输入语句:?int(26.2),int(26.9),int(-26.2),int(-26.9

25、)显示结果: 26 26 -26 -26(8)求平方根 sqrt()【格式】sqrt()【功能】返回的平方根。【说明】的值必须为正数或零。【例如】 输入语句:?sqrt(25.9),sqrt(8*8),sqrt(abs(-36) )显示结果: 5.09 8.00 6.00(9)求指数函数 exp()9【格式】exp()【功能】返回以 e 为底,为幂次的指数值。【例如】输入语句:?exp(5.5),exp(1),exp(-5),exp(-6)显示结果: 244.69 2.72 0.01 0.002字符处理函数(1)宏代换函数&【格式】&.【功能】在字符型内存变量前使用&,

26、将用该内存变量的值去替换&和内存变量名.此外,利用可选的句号分隔符“.”及,还可将额外的值添在其尾端,而且本身也可以是一个宏。即用该内存变量的内容替换&.也可以理解为&的作用是去掉一重定界符【例如】输入下列语句序列 store liyi to xm &赋值语句 store xm to zxm ?&zxm显示结果:liyi输入语句:xm=liyi &赋值语句 ?&xm显示结果:liyi输入语句序列:n=1 m=2 x12=computer ?x&n.&m显示结果:computer注意:赋值语句的功能是将表达式的值送到变量中。

27、【例如】x=88 y=99 z=x+y ?&z*2 ?x+y*2 278 z=(x+y) ?&z*2 ?(x+y)*2 374 (2)测试字符串长度函数 len()【格式】len()【功能】返回值的字符个数。可以是一个字符串、备注字段或字符类型字段。若为一空字符串,则返回数值零。【例如】输入语句:?len(append blank)显示结果:12(3) 截子串函数 substr()【格式】substr(,)10【功能】返回中,从值开始,由值指定个数的字符串。如果无选项,则从值位置开始直到值尾部。【例如】输入语句:x=output unit ?substr(x,4,3),subs

28、tr(x,1)显示结果: put output unit(4)求子串起始位置函数 at()【格式】at(,)【功能】 返回第一次出现在中的整数位置值(从左到右计数) 。若未出现在中,则返回零值。如果有可选项,则在中从值代表出现的次数开始查找。【例如】输入语句:?at(d,data),at(r,return,2)显示结果: 0 5(5) 左截子串函数 left()【格式】left(,)【功能】返回从最左边计起的值个字符。【例如】 输入语句:?left(input unit,5)显示结果:input(6) 右截子串函数 right()【格式】right(,)【功能】返回从最右边计起的值个字符。如果

29、值小于或等于零,则返回空字符串。【例如】输入语句:?right(inputunit,5) &表示空格显示结果:unit(7)产生空格函数 space()【格式】space()【功能】返回一个由值确定的空格组成的字符串。【例如】输入语句:?input+data ?input+space(5)+data显示结果:inputdata inputdata(8) 删除字符串前置空格及尾部空格函数 alltrim()【格式】alltrim()【功能】返回删除了的前置空格及尾部空格的字符串。【例如】输入下列语句序列 x=计算机 y= 应用 ?alltrim(x+y) ?alltrim(x)+allt

30、rim(y)11显示结果:计算机 应用 计算机应用(9) 删除字符串前置空格函数 ltrim()【格式】ltrim()【功能】返回删除了的前置空格的字符串。【例如】输入下列语句序列(表示空格) x=计算机 y=应用 ?ltrim(x+y) ?ltrim(x)+ltrim(y)显示结果:计算机应用 计算机应用(10)删除字符串尾部空格函数 rtrim()【格式】rtrim()【功能】返回删除了的尾部空格的字符串。【例如】输入下列语句序列 x=计算机 y=应用 ?rtrim(x+y) ?rtrim(x)+rtrim(y)显示结果:计算机应用 计算机应用(11)转换字符串函数 字符插入或替换函数 s

31、tuff()【格式】stuff (,)【功能】在中插入或替换一字符串。在中从决定的位置开始,删除由决定的字符个数,然后在该位置插入。如果为零,则仅将插入中。如果为一空字符串,则仅从中清除个字符而不加入任何字符。【例如】 输入语句:?stuff(abcdefg,5,2,123) ?stuff(abcdefg,5,0,123) ?stuff(abcdefg,5,2,)显示结果:abcd123g abcd123efg abcdg 小写字母转大写字母函数 upper()【格式】upper()【功能】将中的所有小写字母转换成大写字母,其它字符不变。【例如】输入语句:?upper(abcdefg)显示结果

32、:abcdefg 大写字母转小写字母函数 lower()【格式】lower()【功能】将中的所有大写字母转换成小写字母,其它字符不变。【例如】12输入语句:?lower(abcdefg)显示结果:abcdefg3 转换函数(1)str()函数【格式】str(,)【功能】先计算的值,然后将此值转换成长度为(如果指定了)的字符串;如果指定了,则此字符串在小数点右边有个数字字符。包括整数个数、小数点及右边的小数数字个数。【说明】 数值表达式 2 确定返回字符串的长度(小数点和负号各占 1 位) ,当长度大于实际数值的位数时间,则在字符串的前面补上相应个数(表达式 2-实际长度)个空格,若表达式 2

33、的值比表达式 1 的整数部分的长度还小时,则输出的字符串为表达式 2 个*;当输出的小数位数比实际的小数位数大时,则在字符串后补相应个 0,当小数位数小于实际位数时,小数位数自动按四舍五入处理。数值表达式 3 缺省只输出表达式 1 的整数部分;若同时缺省表达式 2 在字符串前补相应个数 0 到 10 位字符数据。【例如】 输入语句:?str(99.91,4,1),str(199.91,4,1),str(9999.91,4,1)显示结果:99.9 200 *(2)val()函数【格式】val()【功能】从的最左边字符开始,在忽略前置空格的情形下由左向右将阿拉伯数字字符转换成数值,直到遇到一个非数

34、字字符为止。如果的第一个字符不是阿拉伯数字,则 val()函数返回数值零。【例如】 输入语句:?val( 99.99abc888),val(a101)显示结果:99.99 0.00(3)ctod()函数【格式】ctod()【功能】将转换成日期型的值。【例如】 输入语句:?ctod(12/10/99) ?ctod(99/12/10)显示结果:12/10/99 / /注意:的默认格式必须是:月/日/年或月-日-年 (其中年可以是 2 位也可以是 4 位) ,若是:年-月-日或年/月/日格式将得到一个值: / /,当然也可使用命令 set date to 命令修改日期格式(参见第五章 set dat

35、e to 命令或“工具”菜单下的“选项”中的“区域”设置) 。输入语句:set date to ymd &设置日期格式为:年-月日 d1=ctod(2003/10/01) ?d1 d2=ctod(10-01-2001) ?d2显示结果: 03/10/01 / /(4)dtoc()函数【格式】dtoc(,1)13【功能】将转换成日期格式字符串。可以是系统日期函数、内存变量或数据库字段。有可选项,1,则与 dtos()函数功能相同。【例如】 输入语句:?len(dtoc(date() ) )显示结果:8 &09/28/01 这个结果也和系统日期的格式有关(5)ascii 字符对应数

36、值函数 asc()【格式】asc()【功能】返回值最左边字符对应的 ascii 码(十进制) 。【例如】输入语句:?asc(a computer),asc(append)显示结果: 97 65(6)求数值对应的 ascii 字符函数 chr()【格式】chr()【功能】返回值对应的 ascii 字符。【例如】输入语句:?chr(65),chr(33),chr(65+32)显示结果: a ! a4 日期函数(1)date()函数【格式】date( )【功能】返回当前的系统日期。返回的日期格式可用 set century、set date to 命令来更改。【例如】 输入语句:set centur

37、y on &显示日期带世纪的两位数 ?date()显示结果:2002-07-21(2)year()函数【格式】year()【功能】返回以数值类型表示的所代表的公元 4 位年份。可以为系统日期函数、内存变量或数据库字段。【例如】输入语句:d1=ctod(12-30-99) ?year(d1) d1=ctod(10-01-2001) ?year(d1)显示结果:1999 2001(3)month()函数【格式】month()【功能】返回以数值类型表示的所代表的月份。可以为系统日期函数、内存变量或数据库字段。【例如】输入语句:d1=ctod(12-30-99) ?month(d1)14显示结

38、果:12(4)day()函数【格式】day()【功能】返回以数值类型表示的所代表该月的第几日。【例如】输入语句:d1=ctod(12-30-99) ?day(d1)显示结果:30(4)dow()函数【格式】dow()【功能】返回以数值类型表示的所代表该星期的第几天,星期日是第 1 天,星期六是第 7 天。可以为系统日期函数、内存变量或数据库字段。【例如】输入语句:d1=ctod(10-01-2001) ?dow(d1)显示结果:2 &星期一(6)time()函数【格式】time( )【功能】返回当前的系统时间。例如:输入语句:?time() 显示结果:14:29:585测试函数(1)测

39、试文件头函数【格式】bof()【功能】测试当前工作区或指定工作区中数据表的记录指针是否指向第一条记录之前。返回值为逻辑型(l 型)数据。若记录指针指向第一条记录之前,则返回值为.t.,否则,返回值为.f.。缺省工作区是当前工作区。【例如】打开 xsda.dbf(设记录条数大于等于 1) ,执行下列命令。输入语句: use xsda &打开表 xsda.dbf?recno()?bof()skip 1 &将记录指针往文件头的方向移动一个记录位置?recno()?bof()显示结果: 1.f.1.t.(2)测试文件尾函数【格式】eof()【功能】测试当前工作区或指定工作区中数据表的记

40、录指针是否指向最后一条记录之后。返回值为逻辑型(l 型)数据。若记录指针指向最后一条记录之,则返回值为.t.,否则,返回值为.f.。缺省工作区是当前工作区。【例如】打开 xsda.dbf(设记录条数为 8) ,执行下列命令。输入语句: use xsda &打开表 xsda.dbf15 go bottom &将记录指针指向最后一条记录?recno()?eof()skip &将记录指针往文件尾的方向移动一个记录位置?recno()?eof()显示结果: 8.f.9.t.(3)测试当前记录号函数【格式】recno()【功能】返回值当前工作取区或指定工作区中打开的数据表的饿当前

41、记录号,即记录指针当前指向的记录号。返回值为数值型(n 型),缺省工作区好或别名时指当前工作区。【例如】打开表 xsda.dbf 后,将记录指针移动到第五个记录上。 输入语句:?recno() 显示结果: 5(4)测试查询结果函数【格式】found()【功能】在使用查找命令 locate/continue、find、seek 后测试是否在当前工作区或指定工作区中是否找到满足条件的记录,返回的值类型为逻辑型(l 型) ,如果找到,则返回值为.t.,否则返回值为.f.,缺省工作区为当前工作区。【例如】打开表 xsda.dbf,使用查找命令use xsdalocate for 性别=“女“ &

42、;假设找到?found()显示结果:.t.(5)测试文件是否存在函数【格式】file()【功能】测试在当前的计算机系统中是否存在指定的,返回值的类型为逻辑型(l 型) ,如果存在,则返回.t.,否则,返回.f.。【例如】在当前计算机系统中存在数据表 xsda.dbf。 输入语句: ?file(“xsda.dbf”) 显示结果: .t.(6)测试表文件是否存在函数【格式】dbf()【功能】测试当前工作区或指定工作区中是否存在数据表文件,返回的值类型为逻辑型(l 型) ,如果存在,则返回值为.t.,否则返回值为.f.,缺省工作区为当前工作区。(7)测试记录个数函数【格式】 reccount()【功

43、能】 返回当前工作区或指定工作区中数据表的记录总数,返回的值类型为数值型(n 型) ,缺省工作区为当前工作区。【例如】打开表 xsda.dbf(共 8 条记录) 输入语句: use xsda?reccount()显示结果: 816(8)选择工作区函数【格式】select(0/1/别名)【功能】 返回当前工作区号或未使用工作区的最大编号,选 0 或缺省 0/1/别名返回当前工作区号;选 1 返回未使用工作区的最大编号。返回的值类型为数值型(n 型) 。【例如】设选择 2 号工作区,测试工作区号。输入语句: ?select() ?select(1)显示结果为: 1 32767(9)测试类型函数【格

44、式】type()【功能】返回值是中字符串所表示的表达式的类型。【例如】输入语句:?type(12*2),type(x12),type(.f.),type(date() x12=abcd ?type(x12)显示结果:n u(未知) l d c (10)条件赋值函数 iif()【格式】iif(,)【功能】按的逻辑值决定返回的值或的值。若的逻辑值为真,则返回的值,若的逻辑值为假,则返回的值。【例如】输入语句: x=4?iif(x0,1,-1)显示结果:1(11)测试光标所在列函数 col()【格式】col()【功能】返回屏幕上当前光标所在的列数(079) 。(12)测试光标所在行函数 row()【

45、格式】row() 【功能】返回屏幕上当前光标所在的行数(024) 。(13)读一键函数【格式】inkey(数值型表达式)【功能】返回从键盘输入的一个键的键值。等待用户按键时间为数值型表达式秒钟。若数值型表达式为 0 则无限期的等待,若省略数值型表达式则不等待,若超过时间用户未按键,则返回 0。【例如】输入语句:?inkey(3) ?inkey( ) ?inkey(0)显示结果:97 &从键盘输入小写字母 a 0&不等待,直接返回 0 99&无限期的等待,直到输入小写字母 c17第 2 章 表的建立和操作操作2.1 表的建立表的建立2.1.1 数据表结构数据表结构表.1

46、学生.dbf学号姓 名性 别出生年月入学成绩简 历照 片00201张 伊男81/12/30560.50memogen00202李光华女82/05/02580.00memogen00301汪 海女82/03/25579.00memogen00303李嘉陵男83/01/06580.00memogen00203魏微微女82/03/09592.50memogen2.1.2 建立表结构建立表结构1.命令方式: create 学生 (首先建立默认目录) create table 学生(学号 c(8),姓名 c(8),出生日期 d,入校总分 n(3,0),个人信息 m)2.菜单方式2.1.3 输入数据输入数

47、据1.输入各种类型的数据输入各种类型的数据注意:1)、文件名和文件位置,查找文件2)、关闭就存盘3)、观察状态栏4)、字段名输错、字段宽度或类型设计错了、多输或少输了字段名、字段位置调整 需要使用:modify structure5)、如果字段值需要修改,输入命令 browse。显示菜单上有浏览和编辑选项也可以进行操作。如果要添加新的记录输入 append。6)、输入数据时不要输入空格。输入数据时最好是出现蓝色光标时。7.) 备注型(m) 、通用型号(g)的使用方法:备注型:存放备注字段(宽度为 2) 。系统默认显示为 memo 或者 memo(有内容时)通用型:存放通用字段(宽度为 2) 。

48、系统默认显示为 gen 或者是 gen(有内容时)2 个字节存取的是地址指针,指向备注文件(文件名和表文件名一样,扩展名为.fpt)对应的内容。操作方法:详见 26 页重要提示:只要表中有备注或者通用字段(不管是一个或者多个) ,或者两个同时都有,系统就会自动产生一个与表文件名相同的备注文件,扩展名为 fpt2.追加记录追加记录追加输入命令(末尾添加):append blankappend from菜单方式:2.2 打开打开显示和关闭表显示和关闭表2.2.1.开表和关闭表开表和关闭表 use 命令1、 表建立时就会被打开,一般来讲:表被打开时状态栏上有东东。2、 如果表没有被打开,则可以象 w

49、ord 打开文档一样打开表。方法:在资源管理器(我的电脑)中双击表。文件菜单中打开表建议大家使用第三种方法:命令: use 表名 书 p27 页注意:表是否在默认目录中。打开表时,只读和独占方式的设置。3、 当表被打时, 除了状态栏上有东西外,主工作区可能看不见其它的东西,在”表”菜单下选”浏览”。184、 关闭表的方法:use 打开新的表的同时也会把以前的打开的表关掉5、 关闭一切东东:close all/database6、 关于关闭的语句:p29close all 、clear all、clear memory 、use 、close database 、close table其中 cl

50、ear all=close all + clear memory菜单方式2.2.2 表文件的显示表文件的显示1.显示表结构display/ list structure to printer/ to file 2.显示记录disply/list 范围范围 for/while fields to printer / to file off说明:1).范围:默认为 all,允许有:all、next 、record 、restall :全部记录 next :从当前记录开始的 n 条记录 record :第 n 条记录 rest :当前记录起到最后一条记录为止的所有记录例如:use 学生list go

51、 2list next 2list rest2)、条件:for/while 例如:显示出姓张的男生 list for substr(姓名,1,2)=”张” and 性别=”男”也可以改为:list for at(“张”,姓名)=1 and 性别=”男”list for left(姓名,2)=”张” and 性别=”男”注意:for 默认的范围是 all使用 whilego 1list while left(姓名,2)=”张” and 性别=”男”go 1list while left(姓名,2)=”张” and 性别=”女”比较发现:while 是当碰到第一条不满足条件的记录时就停止工作3)、

52、fields 字段名表例如:list fields 姓名,性别,入校总分list for 性别=”男” fields 姓名,简历list for “张”$姓名 fields 姓名, 入校总分,照片list for 入校总分=580 and 性别=”男” or 入校总分570 and 性别=女 姓名;,出生年月,性别, 入校总分说明:(1)$符号是判断前面一个字符串是否属于后面那个字符串。 (2)在 list 后需使用字段名表时,fields 可以不写,也可以写,最好是写。 (3)使用字段名表,备注字段可以显示其内容,通用型字段无法显示内容。2).to printer: 到打印机5).to fi

53、le : 这里的文件类型是 txt196).off:不显示记录号7)list 和 display 区别:a.list 默认参数是全部记录,display 默认参数是当前记录b.list 显示时,如果有很多条记录,就会一次显示完,而 display 会分屏显示c.list=display all(分屏显示), list next 1=display 例如:list for 性别=男 display for 性别=男go 2list next 3go 2disp next 3结论:当 list 和 disp 不单独使用,要加范围和条件参数时,是完全一样的(除了分屏显示外) 。单独使用时:list

54、显示全部,disp 显示当前记录。3.表的浏览菜单方式: 窗口分割器命令方式: browse fields for rest2.3 表的修改与编辑表的修改与编辑2.3.1 修改表结构修改表结构modify structure2.3.2 表记录的修改和编辑表记录的修改和编辑1.指针记录的定位指针记录的定位记录指针, 当前记录, 当前记录号记录号反映了记录存放的物理顺序(1).命令方式:绝对移动绝对移动: go/ goto 命令基本使用方法:go 数字、go top(第一条记录) 、go bottom(最后一条记录)相对移动相对移动 skip 数字说明:skip = skip 1skip 3 sk

55、ip -2使用函数:recno()、bof()、eof()重点掌握:重点掌握:eof()() 、bof()的含义。()的含义。bof():begin of file:文件开始,第一条记录的前面,记录号为 1eof():end of file:文件结束,最后一条记录的后面,记录号为最后一条记录的记录号+1请分别描述下列值为多少:use 学生go 1disp?recno(),bof()skip 1?recno(),bof()go bottom?recno(),eof()skip?recno(),eof()思考思考:use 学生20listdispdisp 将会显示什么结果将会显示什么结果,为什么为

56、什么?2. 修改记录修改记录(1)browse fields for p51(2)成批修改记录 (重点)【格式】replace with additive , with additive . for while 【功能】用指定的值替换当前表中指定范围内满足条件的记录中指定的值. additive 用于备注型字段,表将表达式值添加到字段原有内容后,否则取代原有内容.!若命令中和选项均缺省,则只对当前记录进行替换操作 数据库数据库是一个数据容器,包含多个表和表之间的关系(视图,索引关系,存储过程等) 。表(自由表):独立存在的二维表数据库表(数据表):数据库中的二维表,可以单独使用6.1 数据库的

57、创建与管理611 创建菜单方式命令方式: create database 数据库名 扩展名:dbc612 管理项目管理器613 数据库的打开,修改,关闭1打开:open database 数据库名 exclusive/sharednoupdatevalidate 独占 /共享 只读 检查有效性(校验)*打开一个数据库的同时不会关闭另外一个数据库*打开很多个以后想指定某个为当前数据库,使用 set database to 库名2修改:modify database 数据库名例如:close allcreate database abccreate database abc1close allop

58、en database abc1open database abcmodi databaseset database to abc1modi database3关闭close database 关闭当前数据库close database all 关闭所有已经打开的数据库close all 关闭所有打开的数据库和表clear all 关闭所有打开的数据库和表,清除内存变量614 数据库对表和管理1)库中新建表212) 自由表添加到库中3) 数据表从数据库中删除(移去或者删除)4) 表的操作:修改表结构,浏览表中数据5) 连接、视图等615 数据库文件的查看(了解)use 数据库名.dbc /*打

59、开数据库库文件modi stru /*修改数据库库文件的结构browse /*浏览数据库库文件内容由此可以看见:数据库的实质其实也是二维表(容器表) 。6.2 数据字典62 数据字典数据字典数据字典:数据字典:一张特殊的表,存放表中各种数据的定义或者设置信息(包括表的属性、字段属性、记录规则、表间关系、以及参照完整性等信息)说明:对于自由表无效,只能在数据库中使用(针对数据表)vfp 中的完整性控制:1、 实体完整性:主关键字不为空(学号、工号等主关键字段)2、 域完整性:对于字段的类型和字段取值加以限制。如:性别字段规定为 c 型,取值只能输入男或者女 (valid)3、 参照完整性:控制数

60、据的一致性,设置数据库关联记录的规则尤其是不同表之间的规则(如:更新是否一致等)一、字段属性:数据库中对表修改属性,可以设置字段约束(域完整性) 表设计器=字段选项卡 二、记录规则:多个字段相互约束(记录有效性:例如:学生表中,学号必须满 8 位,且性别只能是男或女两个值:len(alltrim(学号)=8 and 性别$”男女” ) 表设计器=表选项卡 触发器:对表的插入、删除、修改记录的约束 三、永久关系:表与表之间的关联一对一、一对多、多对多建立方法:1:n 父表建主索引,子表建普通索引,再拖放 1:1 父表建主索引,子表建主索引或候选索引,再拖放四、参照完整性:建立关联后设置的更新规则、插入规则和删除规则。更新规则(级联/限制/忽略)插入规则(限制/忽略)删除规则(级联/限制/忽略)操作步骤: 打开数据库=modi database=数据库菜单=编辑参照完整性63 视图 视图是依赖于数据库表而导出的虚表,不以独立的文件形式存在。可通过修改视图而修改原表数据。分类:本地视图(当前数据库) 、

温馨提示

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

评论

0/150

提交评论