vf复习指导 下载本文

二、填空题

1.(-b+sqrt(2*x)+abs(x))/(2*a)

2.SAVE TO abc ALL LIKE ?B* 3.与、或、非

4.数值、字符、日期、关系、逻辑 5.13.00、VisualFoxPro(表示空格)、VISUAL FOXPRO、123456 6.05/14/09 16:51:40、2009 年 5 月 14 日 7.DATE()-{^2008.8.8}

8.判断\或 at(\结果是否为.T. 9.INT(RAND()*26+1)

10.ROUND(A,0) 或 INT(a+0.5) 三、操作题

在命令窗口输入以下命令:

AA= \水平考试\BB=20

DIMESION CC(2) CC(1)= .T.

CC(2)={^ 2009-12-1} SAVE TO MAB

2.3 数据库与数据表的操作

2.3.1 复习提要与学习指导 一、数据表

1.掌握表的概念、组成和分类。

表是相关数据的集合,按照一定的组织形式,以 DBF 为扩展名的文件保存,FPT(表备 注文件)。

组成:表结构和记录。 分类:自由表和数据库表。

2.掌握用表设计器创建和修改表结构的方法及其相关的 SQL 命令。 创建表的结构:

CREATE TABLE|dbf xs(xh c(9),xm c(8) NULL,csrq d not null) 修改表的结构:

ALTER TABLE XS ADD|RENAME|DROP COLUMN BJ C(2)|BJ TO BJBH|BJBH 修改字段的类型和宽度:

ALTER TABLE XS ALTER COLUMN BJBH N(5,0)

第二部分 《Visual FoxPro 程序设计(第二版)》复习提要与学习指导、习题及参考解答 95

96

Visual FoxPro 程序设计实训与考试指导(第二版)

3.掌握字段的基本属性(字段名、数据类型、宽度、小数位数和空值支持)。 命名规则:可以包含字母、数字和下划线、汉字;不能以数字开头;长度为 1~128(自 由表的字段名以及索引标志名长度只能为 10)。 数据类型:宽度固定的数据类型的名字

(8:D,T,B,Y 4:M,G,I 1:L 254:C)。 小数位数:包含在总宽度中,同时还要注意总宽度中还包含小数点一位。 空值:表示值不确定;空值可以等价于任何一种数据类型。

4.掌握表记录的追加、浏览、定位、修改、删除和筛选的操作。 (1)追加。

APPEND BLANK(CTRL+Y) 追加一条记录

APPEND FROM 表名 FOR 条件 追加多条记录 (以同名字段填充) INSERT BLANK (BEFORE) (VISUAL FOXPRO 命令)事先应将表打开

INSERT INTO XS[(XM,XH,XB) ]VALUES(\,\,\) (SQL 命令)如果该表未打开,则 会自动打开该表

如果省略字段名列表,则 VALUES 后面提供的值必须按照表中字段的先后顺序给出; 如果给出字段列表,则 VALUES 后面提供的值应按照字段列表的顺序给出。

(2)浏览。

BROWSE FOR/WHILE DISPLAY(分屏显示)/LIST FOR:所有满足条件的记录; WHILE:当遇到第一个不满足条件记录则停止命令的执行。 (3)定位。

相对定位 SKIP (正数|负数)当前记录号为 9 SKIP -3 绝对定位 GO (GOTO) N TOP BOTTON 定位到记录号为 N 的记录 条件定位 LOCATE FOR 条件 (定位在第一个满足条件的记录上) CONTINUE (定位到下一个满足条件的记录)

记录指针 BOF() EOF() RECNO()(记录号的变化范围:1~N+1) 空表 .T. .T. 1 表的最大记录号:当前记录总数+1 非空表 .F. .F. 1 记录指针指向 BOF 时,记录号为 1;记录指针指向 EOF 时,记录号为 N+1。 (4)修改。

REPLACE 字段名 WITH 表达式 FOR 条件 | 范围子句 (VFP 命令) REPLACE XB WITH \男\,CSRQ WITH DATE() FOR 条件:替换多个字段

REPLACE ALL XB WITH IIF(XB=1, \女\男\) REPLACE 默认只对当前记录进行处理 根据条件对同一个字段做不同的替换:

REPLACE ALL JBGZ WITH IIF(ZC=\教授\,JBGZ+400,IIF(ZC=\副教授\,JBGZ+300,IIF(ZC=\讲师

注意

对于数值型字段,必须指定小数位数,哪怕位数为 0。 \,JBGZ+200,JBGZ)))

范围子句:ALL——所有记录;

NEXT N——从当前记录开始的 N 条记录; REST——从当前记录开始,一直到记录的结束;

RECORDE N——记录号为 N 的记录。

UPDATE FROM 表文件名 SET 字段名=表达式 WHERE 条件 (SQL 命令) (5)删除。 1)逻辑删除。

DELETE ALL FOR 条件 DELETE FROM 表文件名 WHERE 条件 《SQL 命令》 控制对带删除标记记录的访问:SET DELE ON|OFF 带删除标记的记录不能|可以访问 RECOUNT():SET DELE ON 对该函数不起作用,它统计时文件中没有被彻底删除的记 录的总条数

2)物理删除(彻底删除)。 PACK:把带有删除标记的记录彻底删除; ZAP:将所有记录彻底删除,仅保留表结构。 以上两条命令,要求表以独占方式打开。 3)恢复记录。

RECALL 范围子句|FOR 条件:该命令如果不加范围和条件,则只恢复当前记录; DELETED():判断当前记录是否带有删除标记。 (6)筛选。

1)记录的筛选。 临时筛选:在普通命令后加 for/while 条件; 长期性筛选:set filter to 条件。

2)字段的筛选:browse fields 字段列表。

5.掌握表的打开和关闭方法,掌握工作区和当前工作区的概念。 打开表:use 表名

关闭表:use?close table?close all?close database(如果当前没有打开数据库,则该命令将 关闭所有的表)

工作区:内存中的一片区域,在一个工作区中同一时间只能打开一张表。 SELECT()工作区编号:1?N 任意一个无符号整数;前 10 个工作区可用 A~J 来表示。 ALIAS()工作区别名:默认为表的名字,当区号大于 10 且该表是重复打开,则别名为 W+区号。 对非当前工作区的表进行操作: 改变当

前工作区:用 SELECT 工作区号/别名 强行指定工作区:在命令中用 IN 工作区号|别名

SELECT 0:0 表示当前未被使用的且编号最小的工作区 CLOSE TABLES|ALL:执行该命令后,系统将 1 号工作区置为当前工作区 USE XS IN 0:打开 XS 表,该命令不改变当前工作区 USE IN XS :关闭别名为 XS 的工作区中的表

USE TECHER ALIAS XS GO TOP IN XS

6.掌握表的索引的概念,索引的类型,结构复合索引文件的创建,修改和使用。

第二部分 《Visual FoxPro 程序设计(第二版)》复习提要与学习指导、习题及参考解答 97

98

Visual FoxPro 程序设计实训与考试指导(第二版)

(1)索引文件的结构:索引序号+表的记录号。 (2)索引的类型。

1)主索引:适用于数据库表的结构复合索引。一张表只有一个,关键字段的值唯一。 2)候选索引(CANDIDATE):关键字段的值唯一。 3)普通索引。

4)唯一索引(UNIQUE):记录中出现了重复值,则只有第一个有效。 (3)索引文件的类型:

1)独立索引文件:IDX,文件中只能包含一个索引标志。 2)复合索引文件:CDX,文件中可以包含多个索引标志。

①结构复合索引:索引文件名与表文件名同名,索引文件随表文件的打开而自动打开。 ②非结构复合索引。

注意

项目管理器不能管理独立索引和复合索引。 (4)建立索引。

INDEX ON 关键字表达式 TAG 索引标志名 [CANDIDATE|UNIQUE] [FOR 条件] 多个字段建立索引表达式应该注意:

1)多个字符型的字段其先后顺序,影响索引结果:XM+XB 和 XB+XM。 2)多个数值型字段按表达式和值进行排序 JBGZ+GL,合理的排序:STR(JBGZ,7,2)+

STR(GL)

3)多个数据类型不相同的字段建立表达式,必须先统一类型。

转换函数:STR()数值转换为字符;VAL()字符转换为数值;DTOC()日期转换为字符; CTOD()字符转换为日期。 要求对学生表进行排序,先按照性别排序,性别相同的再按照出

生日期排序,出生日期

相同的则再按照成绩总分进行排序:XB+DTOC(CSRQ)+STR(ZF)。

(5)索引的使用。

1)主控索引:注意和主索引的区别。正在起作用的索引标志。 2)设定主控索引:

打开表的同时指定主控索引 USE XS ORDER XH 打开表之后指定主控索引 SET ORDER TO 索引标识名 3)索引标识的删除:DELETE TAG 索引标识名 4)索引的修改:使用 INDEX 命令重建索引 5)根据索引定位记录。

SEEK 表达式:SET ORDER TO XH ; SEEK \990101\

要求:1)需要对表达式字段建立索引并设置为主控索引;

2)结果将指向第一个满足条件的记录或者记录结束标识(没有找到相关记录)。 对定位结果的判断:FOUND() .T. 说明已经找到 .F. 表示没有找到相关记录

EOF() .F. 说明已经找到 .T. 表示没有找到相关记录

SEEK(表达式):