第12章多表操作与数据库

上传人:飞*** 文档编号:6283522 上传时间:2017-08-08 格式:PPT 页数:25 大小:426.50KB
返回 下载 相关 举报
第12章多表操作与数据库_第1页
第1页 / 共25页
第12章多表操作与数据库_第2页
第2页 / 共25页
第12章多表操作与数据库_第3页
第3页 / 共25页
第12章多表操作与数据库_第4页
第4页 / 共25页
第12章多表操作与数据库_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《第12章多表操作与数据库》由会员分享,可在线阅读,更多相关《第12章多表操作与数据库(25页珍藏版)》请在金锄头文库上搜索。

1、第12章 多表操作与数据库,上一章介绍的是对当前表进行的操作,似乎默认了在同一时刻只能使用一个表,其实不然。VFP允许在应用程序中同时打开多个表,既可以在应用程序中同时使用多个自由表,也可以使用数据库中的多个表。 12.1 使用多个表12.2 Visual FoxPro的数据库习题12,12.1.1 工作区 若要使用多个表,就要使用多个工作区。一个工作区是一个编号区域,用它来标识一个已打开的表,每个工作区中只能打开一个表。VFP可以在32767个工作区中打开和操作表。 工作区除了可以用它的编号表示外,还可以用在工作区中打开的表的名称、别名来标识。表别名是一个名称,它可以引用在工作区中打开的表。

2、,12.1使用多个表,1. 指定工作区其语法格式为:SELECT 工作区号|表别名 说明: 工作区号的取值范围为032767。如果取值为0,则激活尚未使用的工作区中编号最小的那一个。 表别名是打开表的别名,用来指定包含打开表的工作区。也可以用从A到J中的一个字符作为表别名来激活前10个工作区中的一个。2. 在不同的工作区中打开和关闭表 可以使用USE命令在不同的工作区中打开或关闭表。 (1) 在当前工作区打开和关闭表 当执行不带表名的USE命令,并且在当前所选工作区中有打开的表文件时,则关闭该表。例如,可以使用以下代码打开cj表,显示“浏览”窗口,然后关闭此表:USE cjBROWSEUSE,

3、(2) 在最低可用工作区中打开表 可以在USE命令IN子句后面加工作区0。USE cj IN 0 说明:在一个工作区中,不能同时打开多个表。 (3) 在指定工作区中关闭表 使用USE命令的IN子句,指出想要关闭的表所在的工作区。 USE cjBROWSEUSE IN cj (4) 关闭所有工作区中打开的表 使用命令CLOSE ALL可以关闭所有工作区中已打开的表,并将1号工作区置为当前工作区。,3. 使用表别名 表别名是VFP用来指定在一个工作区中打开的表的名称。 (1) 默认表别名 打开一个表时,VFP自动使用文件名作为默认表别名。SELECT 0USE cj 然后,可以使用别名cj在命令或

4、函数中标识该表。 (2) 创建用户自定义别名 在打开表时,使用包含ALIAS表别名子句的USE命令可以为它指定用户自定义的表别名。SELECT 0USE cj ALIAS result 然后必须使用别名“成绩”引用打开的表。 别名最多可以包括254个字母、数字或下划线,但首字符必须是字母、汉字或下划线。如果所提供的别名包含不支持的字符,则VFP会自动创建一个别名。,(3) 使用Visual FoxPro指定的别名如果使用包含AGAIN子句的USE命令同时在多个工作区中打开同一个表, 在前10个工作区中指定的默认别名是工作区字母A到J,在工作区11到32767中指定的别名是W11到W32767。

5、4. 引用其他工作区中打开的表 在表别名后加上点号分隔符“.”或“-”操作符,然后再接字段名,cj.kchresult.kchB.KCH 可以在一个表所在的工作区之外,使用表名或表别名来明确标识该表。例: USE STD_CJ IN 2DISP b.总成绩 &注意命令所工作区必须有打开的数据表,5. 使用“数据工作期”窗口 “数据工作期”窗口是VFP提供的一个管理工作区的工具。使用“数据工作期”窗口,可以查看在一个VFP工作期中已打开表的列表,还可以在工作区中打开表、关闭表。12.1.2 设置表间的临时关系 在建立表间的临时关系(关联)后,会使得一个表(从表)的记录指针自动随另一个表(主表)的

6、记录指针移动。 可以使用“数据工作期”窗口或使用SET RELATION命令建立两个表之间的关系。SET RELATION TO INTOADDTIVE从表按关键字建立普通索引,并为主控索引,2. 使用SET RELATION命令。 SET RELATION 命令可以建立两表之间的关系,通常这两个表具有相同字段,而且用来建立关系的表达式常常就是从表主控索引的索引表达式。【例12-1】学生可以有许多相关联的成绩记录。如果在两个表共同拥有的字段之间创建关系,就能很容易地看到任何一个学生的所有成绩记录。下面的代码中,在创建xs表中的“学号”字段和cj表中的“学号”索引标识之间的关联时,使用了两个表都

7、有的字段“学号”。USE xs IN 1& 在1号工作区中打开xs表(主表)USE cj IN 2& 在2号工作区中打开cj表(从表)SELECT cj& 选定从表工作区INDEX ON XH TAG XHSET ORDER TO TAG xh& 使用索引标识“xh”指定从表的顺序SELECT xs& 选定主表工作区SET RELATION TO xh INTO cj& 创建主表与从表的主控索引之间的关联SELECT cjBROWSE NOWAITSELECT xsBROWSE NOWAIT在“命令窗口”依次执行上述命令,将打开两个“浏览”窗口,移动主表的记录指针会改变在从表中显示的数据集合。

8、,【例12-2】设有一个单科(VFP编程)成绩表:d_cj.dbf(xh(C,10), cj(N,3),试用d_cj.dbf中的成绩来修改cj.dbf中的相应成绩。相应的命令如下:*lsgx_修改成绩.PRGUSE TCH_PKLOCATE FOR 课程名 = VFP编程no = 课程代号SELECT 2USE d_cjINDEX ON 学号 TAG xhSELECT 1USE cj2SET RELATION TO 学号 INTO bREPL ALL 成绩 WITH b-成绩 FOR 学号 = b-学号 AND 课程代号=NO 注意:有的时候需要将“多表”设为主表,“一表”设为从表。3. 关联

9、单个表中的记录 可以在单个表中创建记录间的关系,即自引用关系。若需要的所有信息都存储在单个表中,这种关系很有用。【例12-3】如果遍历xs表中的班级,随着记录指针从一个班级到另一个班级的移动,每个班级的学生自动更改。,若要创建自引用关系,可以两次打开同一个表,在一个工作区中打开一个表,并使用USE AGAIN命令在另外工作区中再次打开此表,然后使用索引来关联记录。例如,可以使用以下代码,根据“zy”(专业)字段对xs表进行排序,然后创建索引标识ZY2,并以此建立并浏览一个自引用关联:lsgx_自关联.prgSELECT 0USE xs ALIAS xsSELECT 0USE xs AGAIN

10、ALIAS xs_aINDEX ON zy TAG ZY2SET ORDER TO ZY2SELECT xsSET RELATION TO zy INTO xs_a ADDITIVESELECT xs_aBROWSE NOWAITSELECT xsBROWSE NOWAIT 在“命令窗口”依次执行上述命令,在“数据工作期”窗口中浏览表xs和xs_a,当在xs“浏览”窗口中移动记录指针时,会自动刷新xs_a“浏览”窗口,并在其中显示隶属于选定专业的学生,如图12-2所示。,12.2 Visual FoxPro的数据库,数据库提供了如下的工作环境:存储一系列的表,在表间建立关系,设置属性和数据有效

11、性规则使相关联的表协同工作。数据库文件保存为带.DBC扩展名的文件。数据库可以单独使用,也可以将它们合并成一个项目,用“项目管理器”进行管理。数据库必须在打开后才能访问它内部的表。12.2.1 数据库表与自由表 在VFP中,有两种状态的表:数据库表(与数据库相关联的表),自由表(与数据库无关联的表)。相比之下,数据库表具有如下的优点: 长表名和表中的长字段名。 表中字段的标题和注释。 默认值、输入掩码和表中字段格式化。 表字段的默认控件类。 字段级规则和记录级规则。 支持参照完整性的主关键字索引和表间关系。 INSERT、UPDATE或DELETE事件的触发器。 通过把表放入数据库中,可以减少

12、冗余数据的存储,保护数据的完整性;可以控制字段怎样显示或键入到字段中的值;还可以添加视图并连接到一个数据库中,用来更新记录或扩充访问远程数据的能力。,12.2.2 创建数据库 要想把数据并入数据库中,必须先建立一个新的数据库,然后加入需要处理的表,并定义它们之间的关系。VFP提供两种方法建立数据库,即使用“数据库设计器”或使用命令。1. 打开数据库设计器 打开数据库设计器的方法有两种:在项目管理器中打开和通过菜单命令打开。,数据库建立后,自动产生同名但类型不同的三个文件:.DBC(数据库文件)、.DCT(数据库备注文件)、.DCX(数据库索引文件)。后两个文件依附于数据库文件,但不可缺少,数据

13、库备份时一定要同时备份其他两个文件,否则备份后的数据库将不能使用。2. 使用数据库建立命令 在命令窗口键入CREATE DATABASE命令 12.2.3 在数据库中加入表 建立数据库后的第一步是向数据库中添加表,可以选定目前不属于任何数据库的表。因为一个表在同一时间内只能属于一个数据库,所以必须将表先从旧的数据库中移去后才能将它用于新的数据库中。 1. 向数据库中添加表还可以使用命令方式将自由表添加到当前的数据库中,命令格式是:ADD TABLE 表文件名| ? NAME 长文件名 例:add table b1,表文件名是指要添加到数据库中去的自由表表文件名,使用?号则显示“打开”对话框以便

14、从中选择添加到数据库中去的自由表。 NAME长文件名则为表指定一个长表名,最多可以有128个字符。2. 从数据库中移去表使用命令方式将表移出当前的数据库,命令格式是:REMOVE TABLE 表文件名| ? DELETE例:remove table b1 说明:DELETE选项不仅把表移出数据库,还将其从磁盘上删除。12.2.4 打开数据库 数据库使用之前必须先打开,打开数据库的方法可以使用菜单方式或命令方式。1. 菜单方式 在VFP的“文件”菜单中选择“打开”命令,在弹出的“打开”对话框中选择“文件类型”为数据库(*.DBC),选取需要打开的数据库文件后,单击“确定”按钮,如图12-1所示。

15、,2. 命令方式 打开数据库命令的格式为:OPEN DATABASE 数据库文件名? EXCLUSIVESHARED 说明: 不指定文件名而使用问号时,显示“打开”对话框。 EXCLUSIVESHARED:数据库以独占或共享方式打开。如果无该项,打开方式由设置语句控制,即SET EXCLUSIVE ON(默认)OFF,系统默认为“独占”方式。例:OPEN DATABASE 数据1 3. 同时打开多个数据库 VFP允许同时打开多个数据库,但只有一个数据库是当前数据库,当前数据库可在打开的数据库之间选择,选择方法可以使用VFP“常用”工具栏的“数据库”下拉列表框中选择,如图12-22所示。,也可以使用命令SET DATABASE TO 数据库名选择当前数据库。 注意:虽然数据库已经打开,但要使用数据库中的表,仍然需要打开表。例:SET DATABASE TO 数据1 MODIFY DATABASE &打开设计器,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号