为什么会有Table?

DataTable包括所有已经从数据文件加载的数据,就像一个仓库,而Table就像一个展厅,从仓库中提取符合条件的数据,按指定的顺序展示给客户。
所以Table有Filter(筛选)和Sort(排序)属性,用于决定展厅会展示哪些数据,按什么样的顺序展示。
DataTable则不会有这些属性,它始终包括所有数据。
展厅是对外开放的,是看得见的,所以我们平时看到的和操作的,都是Table中的数据。
仓库是不对外开放的,是不可见的,我们只有通过代码才可能操作DataTable。


为什么要区分DataTable和Table呢?
我们的代码有时是针对所有数据的,有时则是针对看得见的数据,所以区分一下当然比较好。
但是这不是理由,最根本的理由是一个DataTable可能有多个Table,例如在产品表和订单表建立关联的时候,那么订单表就会有两个Table,分别是:

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

而DataTable始终只有一个:

DataTables("订单")

也就是说,现在有了两个展厅,Tables("订单")展示所有订单(如果你没有筛选的话),Tables("产品.订单")展示产品表中选定产品的订单;而仓库还是只有一个: DataTables("订单")

这样一来,我们就可以针对不同的"展厅"进行设置或操作,例如希望只能在"产品.订单"这个关联表中编辑数据,而不能在订单主表中编辑数据,只需:

Tables("订单").AllowEdit = False
Tables
("产品.订单").AllowEdit = True

如果没有Table的概念存在,上述要求是不可能实现的。
这只是一个例子, 以后我们会看到,这种双层结构,将给编程带来极大的灵活性。

那么实际编程的时候,什么时候用DataTable,什么时候用Table呢?其实很简单:如果你要对看得见的行进行操作,你就用Table,如果你要对所有行进行操作,你就用DataTable。


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