基本概念

下面的概念非常重要,务必要掌握。

DataTable和Table

假定在一个简化的订单管理系统中,包括产品、客户、订单三个表:

Foxtable中有一个集合DataTables,通过该集合可以获得指定名称的表,例如:

DataTables("产品"'产品表
DataTables
("客户"'客户表
DataTables
("订单"'订单表

实际上你是看不到DataTable的,你看到的是Table,也就是说,上面的三个图,实际上就是三个Table。
那么什么是Table呢?你可以这样理解,DataTable就像一个仓库,所有从数据文件中加载的数据,都存放在这里,而且这个仓库是不直接面对用户的;而Table就像一个展厅, 是负责和用户打交道的,这个展厅(Table)从仓库(DataTable)中取得数据,并呈现给用户。
同样,Foxtable中也有一个集合Tables,通过该集合可以获得指定名称的Table,在没有建立关联的情况下,我们这个简化的订单管理系统包括三个Table,分别是:

Tables("产品")
Tables
("客户")
Tables
("订单")

在初始的情况下,Table会从DataTable中提取所有数据呈现给用户,如果你设置了筛选条件,Table就会从DataTable提取符合筛选条件的数据,然后呈现给用户。
例如订单表有1000行数据,那么
DataTables("订单")从头到尾,始终都会有1000行数据,不受筛选的影响。而Tables("订单")却不一样,如果没有进行筛选,那么Tables("订单")也会包括所有数据,也就是1000行数据全部可见。如果现在从中筛选出产品为PD01的订单,且PD01的订单是200个,那么经过筛选后,Tables("订单")会包括200行数据,也就是你看到的那200个产品为PD01的订单。

所以关于DataTable和Table的关系,较为完整的描述是:

关联表和Table

假定在上面这个简化的订单管理系统中,我们建立如下两个关联:

父表 子表 关联列
产品 订单 产品编号
客户 订单 客户编号

因为关联的建立,DataTable和Table不再是一一对应的关系,例如我选择产品表的时候,就会出现三个Table,分别是:

三个Table的作用为:

Tables("产品"):主表,用于显示所有产品
Tables("产品.订单"):如果在Tables("产品")中选定一个产品,这里会显示该产品的全部订单。
Tables("产品.订单.客户"):如果在Tables("产品.订单")中选定一个订单,这里会显示该订单所属的客户。

同样在选择客户表的时候,也会出现三个Table:

Tables("客户")
Tables("客户.订单")
Tables("客户.订单.产品")

而选择订单表,出现的三个Table为:

Tables("订单")
Tables("订单.产品")
Tables("订单.客户")

由此我们可以看出,同一个DataTable可以有多个Table,例如下面三个Table:

Tables("产品")
Tables("订单.产品")
Tables("客户.订单.产品")

它们的数据全部来自于DataTables("产品")。

由此可见,DataTable的数量是固定的,而Table的数量会随着关联的增加而增加,同一个DataTable可以有多个Table,每个Table都各取所需地从DataTable中提取数据呈现给用户。


本页地址:http://www.foxtable.com/webhelp/topics/0363.htm