第五节 表间的临时关系

前面我们学习了表间的永久关系,这节来看一下表间的临时关系。在学习临时关系前我们先须认识一下“数据工作期窗口”。

5.1 介绍数据工作期窗口  我们前面学过的表操作的方法是一个一个地打开进行,当第二个表打开时前一个打开的表就会自动关闭,这样我们无法对多个表同时进行操作。Visual FoxPro 是用多工作区的方法来解决这个问题的。在每一个工作区内,我们可以打开一个表及其相关的索引、关系,各工作区可以相互切换。选择的工作区是当前工作区,在当前工作区内不但可以操作其中打开的表,也可以操作其他工作区中的表。

数据工作期是表单、表单集或报表所使用的当前动态工作环境的一种表示。每一个数据工作期包含有自己的一组工作区。说起来不太容易理解,让我们一起来看一下它到底长得什么模样。

打开“窗口”菜单,单击“数据工作期”就出现了数据工作期窗口。

其中“别名”列表框中是在数据工作期中已打开的各表的表名。“关系”框是建立的临时关系。“属性”按钮可设置工作区属性。“浏览”按钮可浏览当前工作区的表。“打开”按钮可以打开一个表。我们按“打开”按钮,进入打开对话框。

“数据库”框中是已打开的数据库,“数据库中的表”框中是其中的表。如果要打开其他的数据库和表,则可按“其他”按钮。“选定”可选择是打开表还是视图。

在“别名”框中选定表,单击“属性”按钮,进入“工作区属性”窗口。

“允许数据缓冲”单选按钮组用于多用户共享控制。在“索引顺序”下拉框中可选择索引。“数据过滤器”中可设置浏览时过滤记录的表达式。在“允许访问”中如果选择“字段筛选指定的字段”则按“字段筛选”按钮可进入“字段选择器”。

从“所有字段”中选取我们需要的字段,选定字段的操作我们在前面已经介绍过了,这里不讲了。选择“确定”后,我们按“数据工作期”窗口中的“浏览”按钮,进入浏览窗口。可以看到它按我们设置数据过滤器及选定的字段进行显示。

5.2 建立表间临时关系  我们在前面第二节建立了教职工数据库中两表的永久关系,这节中我们在数据工作期窗口中建立不同工作区两表间的临时关系。由于这种关系不作为数据库的一部分存储到数据库中,在用到的时候建立,在表关闭时自动关闭,因此称为临时关系。表间临时关系有一对一,一对多和多对一关系三种。两表建立临时关系后,父表记录的移动将引起子表关联记录的移动。

我们先建立一个多对一关系。

1、打开教职工数据库,打开数据工作期窗口,按“打开”按钮分别打开职工表和评估表。

2、选择职工表作为父表,即单击“别名”中的“职工表”,单击“关系”按钮将其送入“关系”框。这时可以看到职工表下连一折线,表示它在关系中作为父表(这时如再按“关系”按钮可取消关系框中的职工表)。

3、选择评估表作为子表。单击“别名”框中的“评估表”,出现“设置索引顺序”对话框,如果在数据工作期窗口的工作区属性中已经设置了索引顺序,则不进入本窗口。了表设置了主索引后其在“别名”框中的表名后有一小箭头。这里我们选择已有的默认设置,单击“确定”按钮。

4、在“表达式生成器”中生成关系表达式,也选择默认的设置。

按“确定”按钮,完成设置退回数据工作期窗口。

这时,我们在数据工作期窗口中别打开两表的浏览窗口,并适当调整尺寸。

我们会发现,当我们在父表(职工表)中移动到某一记录时,则在子表(评估表)中出现与其相对应的评估条件的记录。

我们再来建立一个一对多关系。

设置评估表为父表,职工表为子表。选“职工表:技术职务”为索引,其他步骤相同。完成后在数据工作期中打开两表的浏览窗口如下:

我们看到,当我们在评估表中移动到某记录时,在职工表中出现具有该技术职务的所有人员。