Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新 第12章

上传人:E**** 文档编号:89180902 上传时间:2019-05-20 格式:PPT 页数:27 大小:229KB
返回 下载 相关 举报
Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新 第12章_第1页
第1页 / 共27页
Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新 第12章_第2页
第2页 / 共27页
Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新 第12章_第3页
第3页 / 共27页
Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新 第12章_第4页
第4页 / 共27页
Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新 第12章_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新 第12章》由会员分享,可在线阅读,更多相关《Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新 第12章(27页珍藏版)》请在金锄头文库上搜索。

1、第12章 多表操作与数据库,12.1 使用多个表 12.2 Visual FoxPro的数据库,12.1 使用多个表,在下面的示例中还需要使用两个数据表,成绩表cj.dbf和课程表kc.dbf,其中内容见表12-1、表12-2。,表的结构描述为:kc(kch (C, 6), kcm (C, 16), xf(N, 2),并以字段“kch”建立主索引。,表的结构描述为:cj(xh(C,10), kch(C,6), cj(N,3), bkcj(N,3),表中按“xh”建立普通索引。,12.1.1 工作区 若要使用多个表,就要使用多个工作区。一个工作区是一个编号区域,用它来标识一个已打开的表,每个工作

2、区中只能打开一个表。VFP可以在32767个工作区中打开和操作表。 工作区除了可以用它的编号表示外,还可以用在工作区中打开的表的名称、别名来标识。表别名是一个名称,它可以引用在工作区中打开的表。,1. 指定工作区 如果没有指定工作区,系统默认总是在第1个工作区中工作,在第1个工作区中打开和关闭表。使用SELECT命令可以将指定的工作区设为当前工作区,其语法格式为: SELECT 工作区号|表别名 2. 在不同的工作区中打开和关闭表 可以使用USE命令在不同的工作区中打开或关闭表。 (1) 在当前工作区打开和关闭表 当执行不带表名的USE命令,并且在当前所选工作区中有打开的表文件时,则关闭该表。

3、例如,可以使用以下代码打开cj表,显示“浏览”窗口,然后关闭此表: USE cj BROWSE USE,(2) 在最低可用工作区中打开表 可以在USE命令IN子句后面加工作区0。例如,若工作区1到10中都有打开的表,可以使用以下命令,在工作区11中打开cj表: USE cj IN 0 (3) 在指定工作区中关闭表 当在同一工作区中打开其他表,或者发出有IN子句的USE命令并指定当前工作区时,可以自动关闭已打开的表。下面的代码首先打开cj表,然后显示它,最后通过发出USE IN命令和cj表别名关闭cj表: USE cj BROWSE USE IN cj (4) 关闭所有工作区中打开的表 使用命令

4、CLOSE ALL可以关闭所有工作区中已打开的表,并将1号工作区置为当前工作区。,3. 使用表别名 (1) 默认表别名 打开一个表时,VFP自动使用文件名作为默认表别名。例如,如果用下面的命令在0号工作区打开文件cj.dbf,则自动为表指定默认别名cj: SELECT 0 USE cj 然后,可以使用别名cj在命令或函数中标识该表。 (2) 创建用户自定义别名 在打开表时,使用包含ALIAS表别名子句的USE命令可以为它指定用户自定义的表别名。例如,可以使用以下命令,在0号工作区中打开文件cj.dbf,并为它指定一个别名“result”: SELECT 0 USE cj ALIAS resul

5、t 然后必须使用别名“成绩”引用打开的表。 (3) 使用Visual FoxPro指定的别名,4. 引用其他工作区中打开的表 在表别名后加上点号分隔符“.”或“-”操作符,然后再接字段名,可以引用其他工作区中的字段。例如,可以使用以下代码在一个工作区中访问其他工作区中打开的cj表的“kch”(课程号)字段: cj.kch 如果要引用的表是用别名打开的,则也可以使用别名。例如,如果cj表是使用别名“result”打开的,那么,可以使用以下代码引用表中的kch字段: result.kch 可以在一个表所在的工作区之外,使用表名或表别名来明确标识该表。 5. 使用“数据工作期”窗口,12.1.2 设

6、置表间的临时关系 可以使用“数据工作期”窗口或使用SET RELATION命令建立两个表之间的关系。 1. 使用“数据工作期”窗口 通过“数据工作期”窗口可以创建表间的临时关系。若要临时关联表,在“数据工作期”窗口中选定要关联的主表,单击“关系”按钮,然后选择从表,在弹出的“设置索引顺序”对话框中选择索引(如“学号”),创建关联。,2. 使用SET RELATION命令。 【例12-1】学生可以有许多相关联的成绩记录。如果在两个表共同拥有的字段之间创建关系,就能很容易地看到任何一个学生的所有成绩记录。下面的代码中,在创建xs表中的“学号”字段和cj表中的“学号”索引标识之间的关联时,使用了两个

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

8、,如图12-1所示。,【例12-2】设有一个单科(高等数学(上)成绩表:d_cj.dbf(xh(C,10), cj(N,3),试用d_cj.dbf中的成绩来修改cj.dbf中的相应成绩。相应的命令如下: USE kc LOCATE FOR kcm = “高等数学(上)“ no = kch SELECT 2 USE d_cj INDEX ON xh TAG xh SELECT 1 USE cj SET RELATION TO xh INTO b REPL ALL cj WITH b-cj FOR xh = b-xh AND kch = no 注意:有的时候需要将“多表”设为主表,“一表”设为从表

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

10、IN ALIAS xs_a INDEX ON zy TAG major SET ORDER TO major SELECT xs SET RELATION TO zy INTO xs_a ADDITIVE SELECT xs_a BROWSE NOWAIT SELECT xs BROWSE NOWAIT 在“命令窗口”依次执行上述命令,在“数据工作期”窗口中浏览表xs和xs_a,当在xs“浏览”窗口中移动记录指针时,会自动刷新xs_a“浏览”窗口,并在其中显示隶属于选定专业的学生,如图12-2所示。,12.1.3 在表单中对多表的控制 【例12-4】在表单中浏览多个表。如图12-3所示。,设计

11、步骤如下: 创建数据环境。在表单设计器中打开数据环境设计器,为表单添加学生管理数据库中的4个数据表:xs、bj、kc、cj。 添加到数据环境中的数据表具有与表名相同的“别名”Alias属性。可以修改其“别名”,已便在代码中引用。例如,将数据表bj的Alias属性改为Class0,如图12-4所示。 在表单中增加一个命令按钮组CommandGroup1,如图12-3左所示。, 编写CommandGroup1的Click事件代码: n = THIS.Value DO CASE CASE n = 1 SELECT xs CASE n = 2 SELECT class0 CASE n = 3 SELE

12、CT kc CASE n = 4 SELECT cj ENDCASE BROW 运行表单,即可在一个表单中浏览不同的数据表。,12.1.4 多表的表单设计 1. 用一对多表单向导创建表单 用“一对多表单向导”创建一个表单的过程非常简单,只需要在向导中回答一些简单的问题,从中指定表和字段,用这些表和字段创建表单上的控件。,【例12-6】利用表单设计器修改上例中的表单。 首先,调整表单上各个对象的位置和大小,使之更为紧凑。可以利用“表单设计器”中的工具“布局工具栏”和“多重选定”技术。为了方便使用将所有标签的标题(Caption)属性以及表格的列标题属性改为中文内容。 为了突出标题部分,将标题设计

13、成立体字。增加一个标签Label2。并修改其属性见表12-3。,移动Label2使之覆盖Label1的左上部,并经多重选定后一起移至表单的中间,如图12-14所示。,4. 在表格中增加控件 【例12-7】在上例的子表表格中增加下拉列表框,以便在编辑数据时能控制数据的来源。 设计步骤如下: 修改数据环境在数据环境中增加新表,并在cj.dbf和kc.dbf之间建立关系。 在“表单工具栏”中选择“数据环境”或单击鼠标右键,在下拉菜单中选择“数据环境”,打开“数据环境设计器”窗口(窗口中已有两个表及其关联),单击鼠标右键,在弹出的快捷菜单中选择“添加”,并选择表kc.dbf。然后,将鼠标指向cj表中的

14、字段“kch”,并拖动至表kc.dbf的字段“kch”,两表间出现关联的标记,如图12-15所示。, 修改表单删除表格第一列中的文本框,增加下拉列表框。 鼠标指向表格,单击鼠标右键,在弹出的快捷菜单中选择“编辑”,表格周围出现浅色边界,开始编辑表格。在“属性”窗口的下拉列表框中选择第1列中的文本框:Text1。如图12-16所示。 然后,用鼠标单击表格的第一列,按Del键,删除Text1。单击“表单控件”工具栏中的“组合框”按钮,再用鼠标单击表格的第一列中第1个空格,上面出现组合框控件。调整后的表单画面如图12-17所示。, 设置Combo1的属性,见表12-4。,运行修改后的表单,我们可以在

15、编辑或增加记录的时候,利用下拉列表框中的选项进行数据的输入,避免了非法数据的输入。如图12-18所示。,5. 进一步的修改 【例12-8】修改上例的表单,利用选项按钮组来控制“性别”字段,利用组合框来控制班级编号的输入(如图12-19)。,设计步骤如下: 修改数据环境。在“表单工具栏”中选择“数据环境”,或单击鼠标右键,在下拉菜单中选择“数据环境”,打开“数据环境设计器”窗口(窗口中已有3个表及其关联),单击鼠标右键,在弹出的快捷菜单中选择“添加”,并选择表bj。将鼠标指向xs表中的字段“bjbh”,并拖动至表bj.dbf的字段“bjbh”,两表间出现关联的标记,如图12-20所示。, 修改表

16、单。依次编辑两个容器:xb1、bjbh1,在其中分别增加一个选项按钮组OptionGroup1和组合框Combo1。其属性设置可以参见第11章有关例子。 修改代码。 修改容器“xb1”中复选框Check1的Refresh事件代码: checkbox:Refresh THIS.Parent.OptionGroup1.Value = IIF(THIS.Value,1,2) 修改容器“xb1”中选项按钮组OptionGroup1的InteractiveChange事件代码: THIS.Parent.Check1.Value = IIF(THIS.Value = 1,.T.,.F.) 修改命令按钮容器中“添加”按钮cmdAdd的Click事件代码: txtbtns:cmdadd.Click IF THIS.Caption = “保存(S)“ THISFORM.xb1.OptionGroup1.Enabled = .T. THISFORM.bjbh1.Combo1.Enabled = .T. THIS

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

当前位置:首页 > 高等教育 > 大学课件

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